/* 新建PCS API */ BaiduPCS *BaiduPCS_New() { //{{{ BaiduPCS *api = calloc(sizeof(BaiduPCS), 1); api->client = HttpClient_New(); return api; }
TinyRet UpnpDeviceParser_Parse(const char *url, UpnpDevice *device, uint32_t timeout) { LOG_TIME_BEGIN(TAG, DDD_Parse); TinyRet ret = TINY_RET_OK; HttpClient *client = NULL; HttpMessage *request = NULL; HttpMessage *response = NULL; RETURN_VAL_IF_FAIL(device, TINY_RET_E_ARG_NULL); RETURN_VAL_IF_FAIL(url, TINY_RET_E_ARG_NULL); do { ret = UpnpDeviceParser_SetURLBase(device, url); if (RET_FAILED(ret)) { LOG_D(TAG, "UpnpDevice_SetUrlBase failed: %s", tiny_ret_to_str(ret)); break; } client = HttpClient_New(); if (client == NULL) { ret = TINY_RET_E_NEW; break; } request = HttpMessage_New(); if (request == NULL) { ret = TINY_RET_E_NEW; break; } response = HttpMessage_New(); if (response == NULL) { ret = TINY_RET_E_NEW; break; } do { TinyXml *xml; ret = HttpMessage_SetRequest(request, "GET", url); if (RET_FAILED(ret)) { LOG_D(TAG, "HttpMessage_Set_GET failed: %s", tiny_ret_to_str(ret)); break; } ret = HttpClient_Execute(client, request, response, timeout); if (RET_FAILED(ret)) { LOG_D(TAG, "HttpClient_Execute failed: %s", tiny_ret_to_str(ret)); break; } if (HttpMessage_GetStatusCode(response) != HTTP_STATUS_OK) { LOG_D(TAG, "HttpMessage_GetStatusCode failed: %d %s", HttpMessage_GetStatusCode(response), HttpMessage_GetStatus(response)); break; } xml = TinyXml_New(); if (xml == NULL) { LOG_D(TAG, "Out of memory"); ret = TINY_RET_E_NEW; break; } do { ret = TinyXml_Parse(xml, HttpMessage_GetContentObject(response), HttpMessage_GetContentSize(response)); if (RET_FAILED(ret)) { LOG_D(TAG, "TinyXml_Parse failed: %s", tiny_ret_to_str(ret)); break; } ret = DDD_ParseXml(device, xml); if (RET_FAILED(ret)) { LOG_D(TAG, "DDD_ParseXml failed: %s", tiny_ret_to_str(ret)); break; } } while (0); TinyXml_Delete(xml); } while (0); } while (0); if (client != NULL) { HttpClient_Delete(client); } if (response != NULL) { HttpMessage_Delete(response); } if (request != NULL) { HttpMessage_Delete(request); } LOG_TIME_END(TAG, DDD_Parse); return ret; }