blob: a9ca3060d11e995a18817df65ab663c307ecd3f7 [file] [log] [blame]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <arpa/inet.h>
#include "agnss_http_download.h"
#include "mbtk_log.h"
#include "mbtk_http.h"
#define HTTP_RESULT_SUCCESS 0
#define HTTP_RESULT_FAIL -1
static char eph_file_path[128] = {0};
static int eph_file_fd = -1;
static void http_data_cb_func(int session_id, mbtk_http_data_type_enum type, void *data,int data_len)
{
int ret = 0;
if(type == MBTK_HTTP_DATA_HEADER)
{
LOGD("Header(%d):%s", data_len, (char*)data);
if(eph_file_fd > 0)
{
return;
}
unlink(eph_file_path);
eph_file_fd = open(eph_file_path, O_RDWR|O_CREAT|O_TRUNC, 0644);
if (eph_file_fd < 0)
{
LOGD("file open error");
}
else
{
LOGD("agnss file open: %d", eph_file_fd);
}
}
else if(type == MBTK_HTTP_DATA_CONTENT)
{
LOGD("http Data(%d)", data_len);
ret = write(eph_file_fd, (char*)data, data_len);
if (ret < 0)
{
LOGE("%s: error writing to file!", __FUNCTION__);
}
else if (ret < data_len)
{
LOGD("%s: wrote less the buffer size!", __FUNCTION__);
}
else
{
//
}
}
else
{
LOGD(">>>>>Complete<<<<<");
if(eph_file_fd <= 0)
{
return;
}
close(eph_file_fd);
eph_file_fd = -1;
}
}
int eph_data_from_http_get(char *host, const char *path)
{
if(host == NULL || path == NULL || strlen(path) == 0)
{
LOGE("eph_data_from_http_get param is error.");
}
int http_handle = mbtk_http_handle_get(TRUE, http_data_cb_func);
if(http_handle < 0)
{
LOGE("mbtk_http_handle_get() fail.");
return HTTP_RESULT_FAIL;
}
int http_session = mbtk_http_session_create(http_handle, HTTP_OPTION_GET, HTTP_VERSION_1_1);
if(http_handle < 0)
{
LOGE("mbtk_http_session_create() fail.");
goto error;
}
memcpy(eph_file_path, path, strlen(path));
if(mbtk_http_session_url_set(http_handle, http_session, host))
{
LOGE("mbtk_http_session_url_set() fail.\n");
goto error;
}
if(mbtk_http_session_start(http_handle, http_session))
{
LOGE("mbtk_http_session_start() fail.\n");
goto error;
}
if(mbtk_http_handle_free(http_handle))
{
LOGE("mbtk_http_handle_free() fail.");
return HTTP_RESULT_FAIL;
}
return HTTP_RESULT_SUCCESS;
error:
mbtk_http_handle_free(http_handle);
return HTTP_RESULT_FAIL;
}