comparison OrthancServer/OrthancRestApi/OrthancRestSystem.cpp @ 2573:3372c5255333 jobs

StoreScuJob, Orthanc Explorer for jobs
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 09 May 2018 17:56:14 +0200
parents 8cc3ca64a534
children b3da733d984c
comparison
equal deleted inserted replaced
2570:2e879c796ec7 2573:3372c5255333
144 GetFileResource(statement, EmbeddedResources::DICOM_CONFORMANCE_STATEMENT); 144 GetFileResource(statement, EmbeddedResources::DICOM_CONFORMANCE_STATEMENT);
145 call.GetOutput().AnswerBuffer(statement, "text/plain"); 145 call.GetOutput().AnswerBuffer(statement, "text/plain");
146 } 146 }
147 147
148 148
149 static void GetDefaultEncoding(RestApiGetCall& call)
150 {
151 Encoding encoding = GetDefaultDicomEncoding();
152 call.GetOutput().AnswerBuffer(EnumerationToString(encoding), "text/plain");
153 }
154
155
156 static void SetDefaultEncoding(RestApiPutCall& call)
157 {
158 Encoding encoding = StringToEncoding(call.GetBodyData());
159
160 Configuration::SetDefaultEncoding(encoding);
161
162 call.GetOutput().AnswerBuffer(EnumerationToString(encoding), "text/plain");
163 }
164
165
166
149 // Plugins information ------------------------------------------------------ 167 // Plugins information ------------------------------------------------------
150 168
151 static void ListPlugins(RestApiGetCall& call) 169 static void ListPlugins(RestApiGetCall& call)
152 { 170 {
153 Json::Value v = Json::arrayValue; 171 Json::Value v = Json::arrayValue;
249 267
250 call.GetOutput().AnswerBuffer(s, "application/javascript"); 268 call.GetOutput().AnswerBuffer(s, "application/javascript");
251 } 269 }
252 270
253 271
254 static void GetDefaultEncoding(RestApiGetCall& call) 272
255 { 273
256 Encoding encoding = GetDefaultDicomEncoding(); 274 // Jobs information ------------------------------------------------------
257 call.GetOutput().AnswerBuffer(EnumerationToString(encoding), "text/plain"); 275
258 } 276 static void ListJobs(RestApiGetCall& call)
259 277 {
260 278 bool expand = call.HasArgument("expand");
261 static void SetDefaultEncoding(RestApiPutCall& call) 279
262 { 280 Json::Value v = Json::arrayValue;
263 Encoding encoding = StringToEncoding(call.GetBodyData()); 281
264 282 std::set<std::string> jobs;
265 Configuration::SetDefaultEncoding(encoding); 283 OrthancRestApi::GetContext(call).GetJobsEngine().GetRegistry().ListJobs(jobs);
266 284
267 call.GetOutput().AnswerBuffer(EnumerationToString(encoding), "text/plain"); 285 for (std::set<std::string>::const_iterator it = jobs.begin();
268 } 286 it != jobs.end(); ++it)
269 287 {
270 288 if (expand)
289 {
290 JobInfo info;
291 if (OrthancRestApi::GetContext(call).GetJobsEngine().GetRegistry().GetJobInfo(info, *it))
292 {
293 Json::Value tmp;
294 info.Serialize(tmp);
295 v.append(tmp);
296 }
297 }
298 else
299 {
300 v.append(*it);
301 }
302 }
303
304 call.GetOutput().AnswerJson(v);
305 }
306
307 static void GetJobInfo(RestApiGetCall& call)
308 {
309 std::string id = call.GetUriComponent("id", "");
310
311 JobInfo info;
312 if (OrthancRestApi::GetContext(call).GetJobsEngine().GetRegistry().GetJobInfo(info, id))
313 {
314 Json::Value json;
315 info.Serialize(json);
316 call.GetOutput().AnswerJson(json);
317 }
318 }
319
320 static void PauseJob(RestApiPostCall& call)
321 {
322 std::string id = call.GetUriComponent("id", "");
323
324 if (OrthancRestApi::GetContext(call).GetJobsEngine().GetRegistry().Pause(id))
325 {
326 call.GetOutput().AnswerBuffer("{}", "application/json");
327 }
328 }
329
330
271 void OrthancRestApi::RegisterSystem() 331 void OrthancRestApi::RegisterSystem()
272 { 332 {
273 Register("/", ServeRoot); 333 Register("/", ServeRoot);
274 Register("/system", GetSystemInformation); 334 Register("/system", GetSystemInformation);
275 Register("/statistics", GetStatistics); 335 Register("/statistics", GetStatistics);
282 Register("/tools/default-encoding", SetDefaultEncoding); 342 Register("/tools/default-encoding", SetDefaultEncoding);
283 343
284 Register("/plugins", ListPlugins); 344 Register("/plugins", ListPlugins);
285 Register("/plugins/{id}", GetPlugin); 345 Register("/plugins/{id}", GetPlugin);
286 Register("/plugins/explorer.js", GetOrthancExplorerPlugins); 346 Register("/plugins/explorer.js", GetOrthancExplorerPlugins);
347
348 Register("/jobs", ListJobs);
349 Register("/jobs/{id}", GetJobInfo);
350 Register("/jobs/{id}/pause", PauseJob);
287 } 351 }
288 } 352 }