| 36 | } |
| 37 | |
| 38 | static void HttpContent(dmHttpClient::HResponse response, void* user_data, int status_code, const void* content_data, uint32_t content_data_size, int32_t content_length, |
| 39 | uint32_t range_start, uint32_t range_end, uint32_t document_size, |
| 40 | const char* method) |
| 41 | { |
| 42 | (void) response; |
| 43 | (void) content_length; |
| 44 | (void) range_start; |
| 45 | (void) range_end; |
| 46 | (void) document_size; |
| 47 | (void) method; |
| 48 | |
| 49 | HttpContext* context = (HttpContext*) user_data; |
| 50 | if (status_code != 200) |
| 51 | return; |
| 52 | |
| 53 | if (!content_data && !content_data_size) |
| 54 | { |
| 55 | context->m_Buffer.SetSize(0); |
| 56 | return; |
| 57 | } |
| 58 | |
| 59 | dmArray<char>& buffer = context->m_Buffer; |
| 60 | if (buffer.Remaining() < content_data_size) |
| 61 | { |
| 62 | uint32_t new_capacity = buffer.Capacity() + dmMath::Max(4U * 1024U, content_data_size); |
| 63 | context->m_Buffer.SetCapacity(new_capacity); |
| 64 | } |
| 65 | |
| 66 | assert(content_data); |
| 67 | buffer.PushArray((const char*) content_data, content_data_size); |
| 68 | } |
| 69 | |
| 70 | Result LoadFromHttpInternal(const char* url, const dmURI::Parts& uri_parts, int argc, const char** argv, HConfig* config, FLoadFromBufferInternal load_from_buffer) |
| 71 | { |