comparison scictl.c @ 18:600204c31bf0

misc: refactor
author David Demelier <markand@malikania.fr>
date Tue, 12 Jul 2022 20:20:51 +0200
parents 3051ef92173a
children
comparison
equal deleted inserted replaced
17:40fe70256fb0 18:600204c31bf0
79 fclose(fp); 79 fclose(fp);
80 80
81 return console; 81 return console;
82 } 82 }
83 83
84 static size_t
85 extract(char *s, size_t w, size_t n, void *data)
86 {
87 return fwrite(s, w, n, data);
88 }
89
90 static json_t *
91 parse(const char *data)
92 {
93 json_t *doc;
94 json_error_t err;
95
96 if (!(json_loads(doc, 0, &err)))
97 die("abort: unable to parse JSON: %s\n", err.text);
98
99 return doc;
100 }
101
102 static json_t *
103 get(const char *url)
104 {
105 CURL *curl;
106 CURLcode code;
107 FILE *fp;
108 char buf[HTTP_BUF_MAX];
109 long ret;
110
111 if (!(fp = fmemopen(buf, sizeof (buf), "w")))
112 die("abort: %s", strerror(errno));
113
114 curl = curl_easy_init();
115 curl_easy_setopt(curl, CURLOPT_URL, url);
116 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, extract);
117 curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
118 curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3L);
119 code = curl_easy_perform(curl);
120
121 if (code != CURLE_OK)
122 die("abort: %s", curl_easy_strerror(code));
123
124 curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &ret);
125
126 if (ret != 200)
127 die("abort: HTTP %ld\n", ret);
128
129 curl_easy_cleanup(curl);
130 fclose(fp);
131
132 return parse(buf);
133 }
134
84 static struct req 135 static struct req
85 cmd_job_add(int argc, char **argv) 136 cmd_job_add(int argc, char **argv)
86 { 137 {
87 struct job job = {0}; 138 struct job job = {0};
88 struct project project = {0}; 139 struct project project = {0};
89 struct req rp, rj;
90 140
91 if (argc < 2) 141 if (argc < 2)
92 usage(); 142 usage();
93 143
94 if ((rp = req_project_find(&project, argv[0])).status) 144 project.name = argv[0];
145
146 if (_project_find(&project, argv[0])).status)
95 return rp; 147 return rp;
96 148
97 job.project_id = project.id; 149 job.project_id = project.id;
98 job.tag = argv[1]; 150 job.tag = argv[1];
99 151