mirror of
https://github.com/pvvx/RTL00MP3.git
synced 2025-07-31 12:41:06 +00:00
first commit
This commit is contained in:
parent
2ee525362e
commit
d108756e9b
792 changed files with 336059 additions and 0 deletions
137
RTL00_SDKV35a/component/common/utilities/http_client.c
Normal file
137
RTL00_SDKV35a/component/common/utilities/http_client.c
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
//#include <stdio.h>
|
||||
//#include <stdlib.h>
|
||||
//#include <string.h>
|
||||
|
||||
#include "platform/platform_stdlib.h"
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
const char * http_strstr(const char *str1, const char *str2) {
|
||||
char *a, *b;
|
||||
|
||||
/* First scan quickly through the two strings looking for a
|
||||
* single-character match. When it's found, then compare the
|
||||
* rest of the substring.
|
||||
*/
|
||||
|
||||
b = (char *)str2;
|
||||
if (*b == 0) {
|
||||
return str1;
|
||||
}
|
||||
for ( ; *str1 != 0; str1 += 1) {
|
||||
if (*str1 != *b) {
|
||||
continue;
|
||||
}
|
||||
a = (char *)str1;
|
||||
while (1) {
|
||||
if (*b == 0) {
|
||||
return str1;
|
||||
}
|
||||
if (*a++ != *b++) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
b = (char *)str2;
|
||||
}
|
||||
return (char *) 0;
|
||||
}
|
||||
|
||||
static void* http_malloc(unsigned int size)
|
||||
{
|
||||
return pvPortMalloc(size);
|
||||
}
|
||||
|
||||
void http_free(void *buf)
|
||||
{
|
||||
vPortFree(buf);
|
||||
}
|
||||
|
||||
static char *http_itoa(int value)
|
||||
{
|
||||
char *val_str;
|
||||
int tmp = value, len = 1;
|
||||
|
||||
while((tmp /= 10) > 0)
|
||||
len ++;
|
||||
|
||||
val_str = (char *) http_malloc(len + 1);
|
||||
sprintf(val_str, "%d", value);
|
||||
|
||||
return val_str;
|
||||
}
|
||||
|
||||
char *http_post_header(char *host, char *resource, char *type, int data_len)
|
||||
{
|
||||
char *len_str = http_itoa(data_len);
|
||||
char *header = (char *) http_malloc(strlen("POST ") + strlen(resource) + strlen(" HTTP/1.1\r\nHost: ") + strlen(host) +
|
||||
strlen("\r\nContent-Type: ") + strlen(type) + strlen("\r\nContent-Length: ") + strlen(len_str) + strlen("\r\n\r\n") + 1);
|
||||
sprintf(header, "POST %s HTTP/1.1\r\nHost: %s\r\nContent-Type: %s\r\nContent-Length: %s\r\n\r\n", resource, host, type, len_str);
|
||||
http_free(len_str);
|
||||
|
||||
return header;
|
||||
}
|
||||
|
||||
char *http_get_header(char *host, char *resource)
|
||||
{
|
||||
char *header = (char *) http_malloc(strlen("GET ") + strlen(resource) + strlen(" HTTP/1.1\r\nHost: ") + strlen(host) + strlen("\r\n\r\n") + 1);
|
||||
sprintf(header, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", resource, host);
|
||||
|
||||
return header;
|
||||
}
|
||||
|
||||
char *http_response_header(char *buf, int response_len)
|
||||
{
|
||||
char *http_response, *http_header = NULL, *header_end;
|
||||
int header_len;
|
||||
|
||||
http_response = (char *) http_malloc(response_len + 1);
|
||||
memcpy(http_response, buf, response_len);
|
||||
http_response[response_len] = '\0';
|
||||
|
||||
if(strncmp(http_response, "HTTP", 4) == 0) {
|
||||
if((header_end = (char *)http_strstr(http_response, "\r\n\r\n")) != NULL) {
|
||||
header_end += 4;
|
||||
header_len = header_end - http_response;
|
||||
http_header = (char *) http_malloc(header_len + 1);
|
||||
memcpy(http_header, http_response, header_len);
|
||||
http_header[header_len] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
http_free(http_response);
|
||||
|
||||
return http_header;
|
||||
}
|
||||
|
||||
char *http_response_body(char *buf, int response_len)
|
||||
{
|
||||
char *http_response, *http_body = NULL, *body_start;
|
||||
int body_len;
|
||||
|
||||
http_response = (char *) http_malloc(response_len + 1);
|
||||
memcpy(http_response, buf, response_len);
|
||||
http_response[response_len] = '\0';
|
||||
|
||||
if(strncmp(http_response, "HTTP", 4) == 0) {
|
||||
if((body_start = (char *)http_strstr(http_response, "\r\n\r\n")) != NULL) {
|
||||
body_start += 4;
|
||||
body_len = http_response + response_len - body_start;
|
||||
|
||||
if(body_len > 0) {
|
||||
http_body = (char *) http_malloc(body_len + 1);
|
||||
memcpy(http_body, body_start, body_len);
|
||||
http_body[body_len] = '\0';
|
||||
}
|
||||
|
||||
http_free(http_response);
|
||||
}
|
||||
else {
|
||||
http_body = http_response;
|
||||
}
|
||||
}
|
||||
else {
|
||||
http_body = http_response;
|
||||
}
|
||||
|
||||
return http_body;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue