-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcurl_helpers.c
70 lines (45 loc) · 1.49 KB
/
curl_helpers.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <json-c/json.h>
#include"curl_helpers.h"
size_t write_function_callback(char* in_data,
size_t size,
size_t nmemb,
void* clientdata) {
size_t totalsize = size * nmemb;
response_data * data = (response_data *)clientdata;
data->data = (char*)realloc(data->data , data->size + totalsize + 1);
if(!data->data) {
return 0;
}
memcpy(data->data+(data->size),in_data, totalsize);
data->size += totalsize;
data->data[data->size] = 0;
return(totalsize);
}
size_t write_function_callback_stream_llm(char* in_data,
size_t size,
size_t nmemb,
void* clientdata) {
response_data * data = (response_data*)clientdata;
size_t totalsize = size * nmemb;
struct json_object* response_line;
struct json_object* content;
const char* export_string;
size_t export_string_length;
response_line = json_tokener_parse(in_data+5);
json_object_object_get_ex(response_line,"content",&content);
if(content != NULL) {
export_string_length = json_object_get_string_len(content);
export_string = json_object_get_string(content);
fputs(export_string,stdout);
fflush(stdout);
data->data = (char*)realloc(data->data ,
data->size + export_string_length + 1);
memcpy(data->data+data->size,export_string,export_string_length);
data->size += export_string_length;
data->data[data->size] = 0;
}
return(totalsize);
}