Mercurial > hg > orthanc
comparison Core/HttpClient.cpp @ 1052:cc4ff680e2a0
http requests in lua
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 23 Jul 2014 15:08:09 +0200 |
parents | a811bdf8b8eb |
children | b17b6bd59747 |
comparison
equal
deleted
inserted
replaced
1051:92f4bf2c5d73 | 1052:cc4ff680e2a0 |
---|---|
159 bool HttpClient::Apply(std::string& answer) | 159 bool HttpClient::Apply(std::string& answer) |
160 { | 160 { |
161 answer.clear(); | 161 answer.clear(); |
162 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_URL, url_.c_str())); | 162 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_URL, url_.c_str())); |
163 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_WRITEDATA, &answer)); | 163 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_WRITEDATA, &answer)); |
164 | |
165 // Reset the parameters from previous calls to Apply() | |
164 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPHEADER, NULL)); | 166 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPHEADER, NULL)); |
167 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPGET, 0L)); | |
168 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POST, 0L)); | |
169 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_NOBODY, 0L)); | |
170 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_CUSTOMREQUEST, NULL)); | |
171 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDS, NULL)); | |
172 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDSIZE, 0)); | |
165 | 173 |
166 if (credentials_.size() != 0) | 174 if (credentials_.size() != 0) |
167 { | 175 { |
168 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_USERPWD, credentials_.c_str())); | 176 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_USERPWD, credentials_.c_str())); |
169 } | 177 } |
175 break; | 183 break; |
176 | 184 |
177 case HttpMethod_Post: | 185 case HttpMethod_Post: |
178 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POST, 1L)); | 186 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POST, 1L)); |
179 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPHEADER, pimpl_->postHeaders_)); | 187 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPHEADER, pimpl_->postHeaders_)); |
180 | 188 break; |
189 | |
190 case HttpMethod_Delete: | |
191 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_NOBODY, 1L)); | |
192 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_CUSTOMREQUEST, "DELETE")); | |
193 break; | |
194 | |
195 case HttpMethod_Put: | |
196 // http://stackoverflow.com/a/7570281/881731: Don't use | |
197 // CURLOPT_PUT if there is a body | |
198 | |
199 // CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_PUT, 1L)); | |
200 | |
201 curl_easy_setopt(pimpl_->curl_, CURLOPT_CUSTOMREQUEST, "PUT"); /* !!! */ | |
202 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPHEADER, pimpl_->postHeaders_)); | |
203 break; | |
204 | |
205 default: | |
206 throw OrthancException(ErrorCode_InternalError); | |
207 } | |
208 | |
209 | |
210 if (method_ == HttpMethod_Post || | |
211 method_ == HttpMethod_Put) | |
212 { | |
181 if (postData_.size() > 0) | 213 if (postData_.size() > 0) |
182 { | 214 { |
183 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDS, postData_.c_str())); | 215 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDS, postData_.c_str())); |
184 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDSIZE, postData_.size())); | 216 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDSIZE, postData_.size())); |
185 } | 217 } |
186 else | 218 else |
187 { | 219 { |
188 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDS, NULL)); | 220 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDS, NULL)); |
189 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDSIZE, 0)); | 221 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POSTFIELDSIZE, 0)); |
190 } | 222 } |
191 | 223 } |
192 break; | 224 |
193 | |
194 case HttpMethod_Delete: | |
195 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_NOBODY, 1L)); | |
196 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_CUSTOMREQUEST, "DELETE")); | |
197 break; | |
198 | |
199 case HttpMethod_Put: | |
200 CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_PUT, 1L)); | |
201 break; | |
202 | |
203 default: | |
204 throw OrthancException(ErrorCode_InternalError); | |
205 } | |
206 | 225 |
207 // Do the actual request | 226 // Do the actual request |
208 CheckCode(curl_easy_perform(pimpl_->curl_)); | 227 CheckCode(curl_easy_perform(pimpl_->curl_)); |
209 | 228 |
210 long status; | 229 long status; |