diff Plugins/Samples/Basic/Plugin.c @ 1962:22ddb22fce83

sample plugin
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 07 Apr 2016 17:42:20 +0200
parents b1291df2f780
children cadfe0a2a393
line wrap: on
line diff
--- a/Plugins/Samples/Basic/Plugin.c	Thu Apr 07 17:26:13 2016 +0200
+++ b/Plugins/Samples/Basic/Plugin.c	Thu Apr 07 17:42:20 2016 +0200
@@ -322,6 +322,38 @@
 }
 
 
+ORTHANC_PLUGINS_API int32_t FilterIncomingHttpRequest(OrthancPluginHttpMethod  method,
+                                                      const char*              uri,
+                                                      const char*              ip,
+                                                      uint32_t                 headersCount,
+                                                      const char* const*       headersKeys,
+                                                      const char* const*       headersValues)
+{
+  uint32_t i;
+
+  if (headersCount > 0)
+  {
+    OrthancPluginLogInfo(context, "HTTP headers of an incoming REST request:");
+    for (i = 0; i < headersCount; i++)
+    {
+      char info[1024];
+      sprintf(info, "  %s: %s", headersKeys[i], headersValues[i]);
+      OrthancPluginLogInfo(context, info);
+    }
+  }
+
+  if (method == OrthancPluginHttpMethod_Get ||
+      method == OrthancPluginHttpMethod_Post)
+  {
+    return 1;  /* Allowed */
+  }
+  else
+  {
+    return 0;  /* Only allow GET and POST requests */
+  }
+}
+
+
 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* c)
 {
   OrthancPluginMemoryBuffer tmp;
@@ -384,8 +416,8 @@
   OrthancPluginRegisterRestCallback(context, "/plugin/create", CallbackCreateDicom);
 
   OrthancPluginRegisterOnStoredInstanceCallback(context, OnStoredCallback);
-
   OrthancPluginRegisterOnChangeCallback(context, OnChangeCallback);
+  OrthancPluginRegisterIncomingHttpRequestFilter(context, FilterIncomingHttpRequest);
 
   /* Declare several properties of the plugin */
   OrthancPluginSetRootUri(context, "/plugin/hello");