comparison Plugins/Samples/Basic/Plugin.c @ 2957:ccf61f6e22ef

New function in the SDK: "OrthancPluginSetHttpErrorDetails()"
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 03 Dec 2018 17:14:55 +0100
parents 878b59270859
children 5a6a2c5bf73f
comparison
equal deleted inserted replaced
2956:bfee0b9f3209 2957:ccf61f6e22ef
34 const OrthancPluginHttpRequest* request) 34 const OrthancPluginHttpRequest* request)
35 { 35 {
36 char buffer[1024]; 36 char buffer[1024];
37 uint32_t i; 37 uint32_t i;
38 38
39 if (request->method != OrthancPluginHttpMethod_Get)
40 {
41 // NB: Calling "OrthancPluginSendMethodNotAllowed(context, output, "GET");"
42 // is preferable. This is a sample to demonstrate "OrthancPluginSetHttpErrorDetails()".
43 OrthancPluginSetHttpErrorDetails(context, output, "This Callback1() can only be used by a GET call");
44 return OrthancPluginErrorCode_ParameterOutOfRange;
45 }
46
39 sprintf(buffer, "Callback on URL [%s] with body [%s]\n", url, request->body); 47 sprintf(buffer, "Callback on URL [%s] with body [%s]\n", url, request->body);
40 OrthancPluginLogWarning(context, buffer); 48 OrthancPluginLogWarning(context, buffer);
41 49
42 OrthancPluginSetCookie(context, output, "hello", "world"); 50 OrthancPluginSetCookie(context, output, "hello", "world");
43 OrthancPluginAnswerBuffer(context, output, buffer, strlen(buffer), "text/plain"); 51 OrthancPluginAnswerBuffer(context, output, buffer, strlen(buffer), "text/plain");
182 int isBuiltIn, error; 190 int isBuiltIn, error;
183 191
184 if (request->method != OrthancPluginHttpMethod_Get) 192 if (request->method != OrthancPluginHttpMethod_Get)
185 { 193 {
186 OrthancPluginSendMethodNotAllowed(context, output, "GET"); 194 OrthancPluginSendMethodNotAllowed(context, output, "GET");
187 return 0; 195 return OrthancPluginErrorCode_Success;
188 } 196 }
189 197
190 isBuiltIn = strcmp("plugins", request->groups[0]); 198 isBuiltIn = strcmp("plugins", request->groups[0]);
191 199
192 if (isBuiltIn) 200 if (isBuiltIn)
299 307
300 ORTHANC_PLUGINS_API OrthancPluginErrorCode OnChangeCallback(OrthancPluginChangeType changeType, 308 ORTHANC_PLUGINS_API OrthancPluginErrorCode OnChangeCallback(OrthancPluginChangeType changeType,
301 OrthancPluginResourceType resourceType, 309 OrthancPluginResourceType resourceType,
302 const char* resourceId) 310 const char* resourceId)
303 { 311 {
312 OrthancPluginMemoryBuffer tmp;
313 memset(&tmp, 0, sizeof(tmp));
314
304 char info[1024]; 315 char info[1024];
305 OrthancPluginMemoryBuffer tmp; 316 sprintf(info, "Change %d on resource %s of type %d", changeType,
306 317 (resourceId == NULL ? "<none>" : resourceId), resourceType);
307 sprintf(info, "Change %d on resource %s of type %d", changeType, resourceId, resourceType);
308 OrthancPluginLogWarning(context, info); 318 OrthancPluginLogWarning(context, info);
309 319
310 if (changeType == OrthancPluginChangeType_NewInstance) 320 switch (changeType)
311 { 321 {
312 sprintf(info, "/instances/%s/metadata/AnonymizedFrom", resourceId); 322 case OrthancPluginChangeType_NewInstance:
313 if (OrthancPluginRestApiGet(context, &tmp, info) == 0) 323 {
314 { 324 sprintf(info, "/instances/%s/metadata/AnonymizedFrom", resourceId);
315 sprintf(info, " Instance %s comes from the anonymization of instance", resourceId); 325 if (OrthancPluginRestApiGet(context, &tmp, info) == 0)
316 strncat(info, (const char*) tmp.data, tmp.size); 326 {
317 OrthancPluginLogWarning(context, info); 327 sprintf(info, " Instance %s comes from the anonymization of instance", resourceId);
328 strncat(info, (const char*) tmp.data, tmp.size);
329 OrthancPluginLogWarning(context, info);
330 OrthancPluginFreeMemoryBuffer(context, &tmp);
331 }
332
333 break;
334 }
335
336 case OrthancPluginChangeType_OrthancStarted:
337 {
338 /* Make REST requests to the built-in Orthanc API */
339 OrthancPluginRestApiGet(context, &tmp, "/changes");
318 OrthancPluginFreeMemoryBuffer(context, &tmp); 340 OrthancPluginFreeMemoryBuffer(context, &tmp);
319 } 341 OrthancPluginRestApiGet(context, &tmp, "/changes?limit=1");
342 OrthancPluginFreeMemoryBuffer(context, &tmp);
343
344 /* Play with PUT by defining a new target modality. */
345 sprintf(info, "[ \"STORESCP\", \"localhost\", 2000 ]");
346 OrthancPluginRestApiPut(context, &tmp, "/modalities/demo", info, strlen(info));
347
348 break;
349 }
350
351 case OrthancPluginChangeType_OrthancStopped:
352 OrthancPluginLogWarning(context, "Orthanc has stopped");
353 break;
354
355 default:
356 break;
320 } 357 }
321 358
322 return OrthancPluginErrorCode_Success; 359 return OrthancPluginErrorCode_Success;
323 } 360 }
324 361
355 } 392 }
356 393
357 394
358 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* c) 395 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* c)
359 { 396 {
360 OrthancPluginMemoryBuffer tmp;
361 char info[1024], *s; 397 char info[1024], *s;
362 int counter, i; 398 int counter, i;
363 OrthancPluginDictionaryEntry entry; 399 OrthancPluginDictionaryEntry entry;
364 400
365 context = c; 401 context = c;
423 /* Declare several properties of the plugin */ 459 /* Declare several properties of the plugin */
424 OrthancPluginSetRootUri(context, "/plugin/hello"); 460 OrthancPluginSetRootUri(context, "/plugin/hello");
425 OrthancPluginSetDescription(context, "This is the description of the sample plugin that can be seen in Orthanc Explorer."); 461 OrthancPluginSetDescription(context, "This is the description of the sample plugin that can be seen in Orthanc Explorer.");
426 OrthancPluginExtendOrthancExplorer(context, "alert('Hello Orthanc! From sample plugin with love.');"); 462 OrthancPluginExtendOrthancExplorer(context, "alert('Hello Orthanc! From sample plugin with love.');");
427 463
428 /* Make REST requests to the built-in Orthanc API */ 464 customError = OrthancPluginRegisterErrorCode(context, 4, 402, "Hello world");
429 memset(&tmp, 0, sizeof(tmp));
430 OrthancPluginRestApiGet(context, &tmp, "/changes");
431 OrthancPluginFreeMemoryBuffer(context, &tmp);
432 OrthancPluginRestApiGet(context, &tmp, "/changes?limit=1");
433 OrthancPluginFreeMemoryBuffer(context, &tmp);
434 465
435 /* Play with PUT by defining a new target modality. */
436 sprintf(info, "[ \"STORESCP\", \"localhost\", 2000 ]");
437 OrthancPluginRestApiPut(context, &tmp, "/modalities/demo", info, strlen(info));
438
439 customError = OrthancPluginRegisterErrorCode(context, 4, 402, "Hello world");
440
441 OrthancPluginRegisterDictionaryTag(context, 0x0014, 0x1020, OrthancPluginValueRepresentation_DA, 466 OrthancPluginRegisterDictionaryTag(context, 0x0014, 0x1020, OrthancPluginValueRepresentation_DA,
442 "ValidationExpiryDate", 1, 1); 467 "ValidationExpiryDate", 1, 1);
443 468
444 OrthancPluginLookupDictionary(context, &entry, "ValidationExpiryDate"); 469 OrthancPluginLookupDictionary(context, &entry, "ValidationExpiryDate");
445 OrthancPluginLookupDictionary(context, &entry, "0010-0010"); 470 OrthancPluginLookupDictionary(context, &entry, "0010-0010");