# HG changeset patch # User Sebastien Jodogne # Date 1373901733 -7200 # Node ID c9a5d72f84812d592cefcbc8144456716477da03 # Parent 722b56b990933faabb7e2acabc79745bfc40f44c changing the namespace of HTTP enumerations diff -r 722b56b99093 -r c9a5d72f8481 CMakeLists.txt --- a/CMakeLists.txt Mon Jul 15 13:50:36 2013 +0200 +++ b/CMakeLists.txt Mon Jul 15 17:22:13 2013 +0200 @@ -153,7 +153,6 @@ Core/Lua/LuaFunctionCall.cpp OrthancCppClient/HttpClient.cpp - OrthancCppClient/HttpEnumerations.cpp OrthancCppClient/HttpException.cpp ) diff -r 722b56b99093 -r c9a5d72f8481 Core/Enumerations.h --- a/Core/Enumerations.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/Enumerations.h Mon Jul 15 17:22:13 2013 +0200 @@ -32,8 +32,6 @@ #pragma once -#include "../OrthancCppClient/HttpEnumerations.h" - namespace Orthanc { enum Endianness @@ -87,6 +85,87 @@ /** + * Most common, non-joke and non-experimental HTTP status codes + * http://en.wikipedia.org/wiki/List_of_HTTP_status_codes + **/ + enum HttpStatus + { + HttpStatus_None = -1, + + // 1xx Informational + HttpStatus_100_Continue = 100, + HttpStatus_101_SwitchingProtocols = 101, + HttpStatus_102_Processing = 102, + + // 2xx Success + HttpStatus_200_Ok = 200, + HttpStatus_201_Created = 201, + HttpStatus_202_Accepted = 202, + HttpStatus_203_NonAuthoritativeInformation = 203, + HttpStatus_204_NoContent = 204, + HttpStatus_205_ResetContent = 205, + HttpStatus_206_PartialContent = 206, + HttpStatus_207_MultiStatus = 207, + HttpStatus_208_AlreadyReported = 208, + HttpStatus_226_IMUsed = 226, + + // 3xx Redirection + HttpStatus_300_MultipleChoices = 300, + HttpStatus_301_MovedPermanently = 301, + HttpStatus_302_Found = 302, + HttpStatus_303_SeeOther = 303, + HttpStatus_304_NotModified = 304, + HttpStatus_305_UseProxy = 305, + HttpStatus_307_TemporaryRedirect = 307, + + // 4xx Client Error + HttpStatus_400_BadRequest = 400, + HttpStatus_401_Unauthorized = 401, + HttpStatus_402_PaymentRequired = 402, + HttpStatus_403_Forbidden = 403, + HttpStatus_404_NotFound = 404, + HttpStatus_405_MethodNotAllowed = 405, + HttpStatus_406_NotAcceptable = 406, + HttpStatus_407_ProxyAuthenticationRequired = 407, + HttpStatus_408_RequestTimeout = 408, + HttpStatus_409_Conflict = 409, + HttpStatus_410_Gone = 410, + HttpStatus_411_LengthRequired = 411, + HttpStatus_412_PreconditionFailed = 412, + HttpStatus_413_RequestEntityTooLarge = 413, + HttpStatus_414_RequestUriTooLong = 414, + HttpStatus_415_UnsupportedMediaType = 415, + HttpStatus_416_RequestedRangeNotSatisfiable = 416, + HttpStatus_417_ExpectationFailed = 417, + HttpStatus_422_UnprocessableEntity = 422, + HttpStatus_423_Locked = 423, + HttpStatus_424_FailedDependency = 424, + HttpStatus_426_UpgradeRequired = 426, + + // 5xx Server Error + HttpStatus_500_InternalServerError = 500, + HttpStatus_501_NotImplemented = 501, + HttpStatus_502_BadGateway = 502, + HttpStatus_503_ServiceUnavailable = 503, + HttpStatus_504_GatewayTimeout = 504, + HttpStatus_505_HttpVersionNotSupported = 505, + HttpStatus_506_VariantAlsoNegotiates = 506, + HttpStatus_507_InsufficientStorage = 507, + HttpStatus_509_BandwidthLimitExceeded = 509, + HttpStatus_510_NotExtended = 510 + }; + + + enum HttpMethod + { + HttpMethod_Get = 0, + HttpMethod_Post = 1, + HttpMethod_Delete = 2, + HttpMethod_Put = 3 + }; + + + /** * WARNING: Do not change the explicit values in the enumerations * below this point. This would result in incompatible databases * between versions of Orthanc! diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/EmbeddedResourceHttpHandler.cpp --- a/Core/HttpServer/EmbeddedResourceHttpHandler.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/EmbeddedResourceHttpHandler.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -58,13 +58,13 @@ void EmbeddedResourceHttpHandler::Handle( HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& arguments, const std::string&) { - if (method != Orthanc_HttpMethod_Get) + if (method != HttpMethod_Get) { output.SendMethodNotAllowedError("GET"); return; @@ -82,7 +82,7 @@ catch (OrthancException& e) { LOG(WARNING) << "Unable to find HTTP resource: " << resourcePath; - output.SendHeader(Orthanc_HttpStatus_404_NotFound); + output.SendHeader(HttpStatus_404_NotFound); } } } diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/EmbeddedResourceHttpHandler.h --- a/Core/HttpServer/EmbeddedResourceHttpHandler.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/EmbeddedResourceHttpHandler.h Mon Jul 15 17:22:13 2013 +0200 @@ -54,7 +54,7 @@ virtual void Handle( HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& arguments, diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/FilesystemHttpHandler.cpp --- a/Core/HttpServer/FilesystemHttpHandler.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/FilesystemHttpHandler.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -127,13 +127,13 @@ void FilesystemHttpHandler::Handle( HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& arguments, const std::string&) { - if (method != Orthanc_HttpMethod_Get) + if (method != HttpMethod_Get) { output.SendMethodNotAllowedError("GET"); return; @@ -161,7 +161,7 @@ } else { - output.SendHeader(Orthanc_HttpStatus_404_NotFound); + output.SendHeader(HttpStatus_404_NotFound); } } } diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/FilesystemHttpHandler.h --- a/Core/HttpServer/FilesystemHttpHandler.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/FilesystemHttpHandler.h Mon Jul 15 17:22:13 2013 +0200 @@ -56,7 +56,7 @@ virtual void Handle( HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& arguments, diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/HttpFileSender.cpp --- a/Core/HttpServer/HttpFileSender.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/HttpFileSender.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -47,7 +47,7 @@ if (!SendData(output)) { - output.SendHeader(Orthanc_HttpStatus_500_InternalServerError); + output.SendHeader(HttpStatus_500_InternalServerError); } } } diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/HttpHandler.h --- a/Core/HttpServer/HttpHandler.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/HttpHandler.h Mon Jul 15 17:22:13 2013 +0200 @@ -36,7 +36,6 @@ #include #include #include "../Toolbox.h" -#include "../../OrthancCppClient/HttpEnumerations.h" namespace Orthanc { @@ -54,7 +53,7 @@ virtual bool IsServedUri(const UriComponents& uri) = 0; virtual void Handle(HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& getArguments, diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/HttpOutput.cpp --- a/Core/HttpServer/HttpOutput.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/HttpOutput.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -104,17 +104,17 @@ void HttpOutput::SendMethodNotAllowedError(const std::string& allowed) { std::string s = - "HTTP/1.1 405 " + std::string(HttpException::GetDescription(Orthanc_HttpStatus_405_MethodNotAllowed)) + + "HTTP/1.1 405 " + std::string(HttpException::GetDescription(HttpStatus_405_MethodNotAllowed)) + "\r\nAllow: " + allowed + "\r\n\r\n"; Send(&s[0], s.size()); } - void HttpOutput::SendHeader(Orthanc_HttpStatus status) + void HttpOutput::SendHeader(HttpStatus status) { - if (status == Orthanc_HttpStatus_200_Ok || - status == Orthanc_HttpStatus_405_MethodNotAllowed) + if (status == HttpStatus_200_Ok || + status == HttpStatus_405_MethodNotAllowed) { throw OrthancException("Please use the dedicated methods to this HTTP status code in HttpOutput"); } @@ -123,7 +123,7 @@ } - void HttpOutput::SendHeaderInternal(Orthanc_HttpStatus status) + void HttpOutput::SendHeaderInternal(HttpStatus status) { std::string s = "HTTP/1.1 " + boost::lexical_cast(status) + @@ -190,7 +190,7 @@ void HttpOutput::Redirect(const std::string& path) { std::string s = - "HTTP/1.1 301 " + std::string(HttpException::GetDescription(Orthanc_HttpStatus_301_MovedPermanently)) + + "HTTP/1.1 301 " + std::string(HttpException::GetDescription(HttpStatus_301_MovedPermanently)) + "\r\nLocation: " + path + "\r\n\r\n"; Send(&s[0], s.size()); diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/HttpOutput.h --- a/Core/HttpServer/HttpOutput.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/HttpOutput.h Mon Jul 15 17:22:13 2013 +0200 @@ -45,7 +45,7 @@ private: typedef std::list< std::pair > Header; - void SendHeaderInternal(Orthanc_HttpStatus status); + void SendHeaderInternal(HttpStatus status); void PrepareOkHeader(Header& header, const char* contentType, @@ -74,7 +74,7 @@ void SendMethodNotAllowedError(const std::string& allowed); - void SendHeader(Orthanc_HttpStatus status); + void SendHeader(HttpStatus status); void Redirect(const std::string& path); diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/MongooseServer.cpp --- a/Core/HttpServer/MongooseServer.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/MongooseServer.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -486,7 +486,7 @@ } - static bool ExtractMethod(Orthanc_HttpMethod& method, + static bool ExtractMethod(HttpMethod& method, const struct mg_request_info *request, const HttpHandler::Arguments& headers, const HttpHandler::Arguments& argumentsGET) @@ -523,12 +523,12 @@ if (overriden == "PUT") { - method = Orthanc_HttpMethod_Put; + method = HttpMethod_Put; return true; } else if (overriden == "DELETE") { - method = Orthanc_HttpMethod_Delete; + method = HttpMethod_Delete; return true; } else @@ -540,19 +540,19 @@ // No PUT/DELETE faking was present if (!strcmp(request->request_method, "GET")) { - method = Orthanc_HttpMethod_Get; + method = HttpMethod_Get; } else if (!strcmp(request->request_method, "POST")) { - method = Orthanc_HttpMethod_Post; + method = HttpMethod_Post; } else if (!strcmp(request->request_method, "DELETE")) { - method = Orthanc_HttpMethod_Delete; + method = HttpMethod_Delete; } else if (!strcmp(request->request_method, "PUT")) { - method = Orthanc_HttpMethod_Put; + method = HttpMethod_Put; } else { @@ -601,10 +601,10 @@ // Compute the HTTP method, taking method faking into consideration - Orthanc_HttpMethod method; + HttpMethod method; if (!ExtractMethod(method, request, headers, argumentsGET)) { - output.SendHeader(Orthanc_HttpStatus_400_BadRequest); + output.SendHeader(HttpStatus_400_BadRequest); return (void*) ""; } @@ -640,8 +640,8 @@ // Extract the body of the request for PUT and POST std::string body; - if (method == Orthanc_HttpMethod_Post || - method == Orthanc_HttpMethod_Put) + if (method == HttpMethod_Post || + method == HttpMethod_Put) { PostDataStatus status; @@ -668,11 +668,11 @@ switch (status) { case PostDataStatus_NoLength: - output.SendHeader(Orthanc_HttpStatus_411_LengthRequired); + output.SendHeader(HttpStatus_411_LengthRequired); return (void*) ""; case PostDataStatus_Failure: - output.SendHeader(Orthanc_HttpStatus_400_BadRequest); + output.SendHeader(HttpStatus_400_BadRequest); return (void*) ""; case PostDataStatus_Pending: @@ -693,7 +693,7 @@ } catch (OrthancException) { - output.SendHeader(Orthanc_HttpStatus_400_BadRequest); + output.SendHeader(HttpStatus_400_BadRequest); return (void*) ""; } @@ -703,28 +703,28 @@ { try { - LOG(INFO) << Orthanc_HttpMethod_ToString(method) << " " << Toolbox::FlattenUri(uri); + LOG(INFO) << Toolbox::ToString(method) << " " << Toolbox::FlattenUri(uri); handler->Handle(output, method, uri, headers, argumentsGET, body); } catch (OrthancException& e) { LOG(ERROR) << "MongooseServer Exception [" << e.What() << "]"; - output.SendHeader(Orthanc_HttpStatus_500_InternalServerError); + output.SendHeader(HttpStatus_500_InternalServerError); } catch (boost::bad_lexical_cast&) { LOG(ERROR) << "MongooseServer Exception: Bad lexical cast"; - output.SendHeader(Orthanc_HttpStatus_400_BadRequest); + output.SendHeader(HttpStatus_400_BadRequest); } catch (std::runtime_error&) { LOG(ERROR) << "MongooseServer Exception: Presumably a bad JSON request"; - output.SendHeader(Orthanc_HttpStatus_400_BadRequest); + output.SendHeader(HttpStatus_400_BadRequest); } } else { - output.SendHeader(Orthanc_HttpStatus_404_NotFound); + output.SendHeader(HttpStatus_404_NotFound); } // Mark as processed diff -r 722b56b99093 -r c9a5d72f8481 Core/HttpServer/MongooseServer.h --- a/Core/HttpServer/MongooseServer.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/HttpServer/MongooseServer.h Mon Jul 15 17:22:13 2013 +0200 @@ -51,7 +51,7 @@ { } - virtual bool IsAllowed(Orthanc_HttpMethod method, + virtual bool IsAllowed(HttpMethod method, const char* uri, const char* ip, const char* username) const = 0; diff -r 722b56b99093 -r c9a5d72f8481 Core/RestApi/RestApi.cpp --- a/Core/RestApi/RestApi.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/RestApi/RestApi.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -180,7 +180,7 @@ } void RestApi::Handle(HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& getArguments, @@ -191,7 +191,7 @@ RestApiPath::Components components; UriComponents trailing; - if (method == Orthanc_HttpMethod_Get) + if (method == HttpMethod_Get) { for (GetHandlers::const_iterator it = getHandlers_.begin(); it != getHandlers_.end(); it++) @@ -213,7 +213,7 @@ } } } - else if (method == Orthanc_HttpMethod_Put) + else if (method == HttpMethod_Put) { for (PutHandlers::const_iterator it = putHandlers_.begin(); it != putHandlers_.end(); it++) @@ -235,7 +235,7 @@ } } } - else if (method == Orthanc_HttpMethod_Post) + else if (method == HttpMethod_Post) { for (PostHandlers::const_iterator it = postHandlers_.begin(); it != postHandlers_.end(); it++) @@ -257,7 +257,7 @@ } } } - else if (method == Orthanc_HttpMethod_Delete) + else if (method == HttpMethod_Delete) { for (DeleteHandlers::const_iterator it = deleteHandlers_.begin(); it != deleteHandlers_.end(); it++) @@ -280,7 +280,7 @@ if (!ok) { - LOG(INFO) << "REST method " << Orthanc_HttpMethod_ToString(method) + LOG(INFO) << "REST method " << Toolbox::ToString(method) << " not allowed on: " << Toolbox::FlattenUri(uri); output.SendMethodNotAllowedError(GetAcceptedMethods(uri)); } diff -r 722b56b99093 -r c9a5d72f8481 Core/RestApi/RestApi.h --- a/Core/RestApi/RestApi.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/RestApi/RestApi.h Mon Jul 15 17:22:13 2013 +0200 @@ -212,7 +212,7 @@ virtual bool IsServedUri(const UriComponents& uri); virtual void Handle(HttpOutput& output, - Orthanc_HttpMethod method, + HttpMethod method, const UriComponents& uri, const Arguments& headers, const Arguments& getArguments, diff -r 722b56b99093 -r c9a5d72f8481 Core/RestApi/RestApiOutput.cpp --- a/Core/RestApi/RestApiOutput.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/RestApi/RestApiOutput.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -48,7 +48,7 @@ { if (!alreadySent_) { - output_.SendHeader(Orthanc_HttpStatus_400_BadRequest); + output_.SendHeader(HttpStatus_400_BadRequest); } } @@ -100,10 +100,10 @@ alreadySent_ = true; } - void RestApiOutput::SignalError(Orthanc_HttpStatus status) + void RestApiOutput::SignalError(HttpStatus status) { - if (status != Orthanc_HttpStatus_403_Forbidden && - status != Orthanc_HttpStatus_415_UnsupportedMediaType) + if (status != HttpStatus_403_Forbidden && + status != HttpStatus_415_UnsupportedMediaType) { throw OrthancException("This HTTP status is not allowed in a REST API"); } diff -r 722b56b99093 -r c9a5d72f8481 Core/RestApi/RestApiOutput.h --- a/Core/RestApi/RestApiOutput.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/RestApi/RestApiOutput.h Mon Jul 15 17:22:13 2013 +0200 @@ -74,7 +74,7 @@ size_t length, const std::string& contentType); - void SignalError(Orthanc_HttpStatus status); + void SignalError(HttpStatus status); void Redirect(const std::string& path); diff -r 722b56b99093 -r c9a5d72f8481 Core/Toolbox.cpp --- a/Core/Toolbox.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/Toolbox.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -132,9 +132,9 @@ #if defined(_WIN32) static BOOL WINAPI ConsoleControlHandler(DWORD dwCtrlType) { - // http://msdn.microsoft.com/en-us/library/ms683242(v=vs.85).aspx - finish = true; - return true; + // http://msdn.microsoft.com/en-us/library/ms683242(v=vs.85).aspx + finish = true; + return true; } #else static void SignalHandler(int) @@ -169,7 +169,7 @@ void Toolbox::ServerBarrier() { #if defined(_WIN32) - SetConsoleCtrlHandler(ConsoleControlHandler, true); + SetConsoleCtrlHandler(ConsoleControlHandler, true); #else signal(SIGINT, SignalHandler); signal(SIGQUIT, SignalHandler); @@ -182,7 +182,7 @@ } #if defined(_WIN32) - SetConsoleCtrlHandler(ConsoleControlHandler, false); + SetConsoleCtrlHandler(ConsoleControlHandler, false); #else signal(SIGINT, NULL); signal(SIGQUIT, NULL); @@ -697,4 +697,26 @@ throw OrthancException(ErrorCode_NotImplemented); } } + + + const char* Toolbox::ToString(HttpMethod method) + { + switch (method) + { + case HttpMethod_Get: + return "GET"; + + case HttpMethod_Post: + return "POST"; + + case HttpMethod_Delete: + return "DELETE"; + + case HttpMethod_Put: + return "PUT"; + + default: + return "?"; + } + } } diff -r 722b56b99093 -r c9a5d72f8481 Core/Toolbox.h --- a/Core/Toolbox.h Mon Jul 15 13:50:36 2013 +0200 +++ b/Core/Toolbox.h Mon Jul 15 17:22:13 2013 +0200 @@ -105,5 +105,7 @@ void UrlDecode(std::string& s); Endianness DetectEndianness(); + + const char* ToString(HttpMethod method); } } diff -r 722b56b99093 -r c9a5d72f8481 OrthancCppClient/HttpClient.cpp --- a/OrthancCppClient/HttpClient.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/OrthancCppClient/HttpClient.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -98,8 +98,8 @@ CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_NOSIGNAL, 1)); url_ = ""; - method_ = Orthanc_HttpMethod_Get; - lastStatus_ = Orthanc_HttpStatus_200_Ok; + method_ = HttpMethod_Get; + lastStatus_ = HttpStatus_200_Ok; isVerbose_ = false; } @@ -162,11 +162,11 @@ switch (method_) { - case Orthanc_HttpMethod_Get: + case HttpMethod_Get: CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPGET, 1L)); break; - case Orthanc_HttpMethod_Post: + case HttpMethod_Post: CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_POST, 1L)); CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_HTTPHEADER, pimpl_->postHeaders_)); @@ -183,12 +183,12 @@ break; - case Orthanc_HttpMethod_Delete: + case HttpMethod_Delete: CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_NOBODY, 1L)); CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_CUSTOMREQUEST, "DELETE")); break; - case Orthanc_HttpMethod_Put: + case HttpMethod_Put: CheckCode(curl_easy_setopt(pimpl_->curl_, CURLOPT_PUT, 1L)); break; @@ -205,11 +205,11 @@ if (status == 0) { // This corresponds to a call to an inexistent host - lastStatus_ = Orthanc_HttpStatus_500_InternalServerError; + lastStatus_ = HttpStatus_500_InternalServerError; } else { - lastStatus_ = static_cast(status); + lastStatus_ = static_cast(status); } return (status >= 200 && status < 300); diff -r 722b56b99093 -r c9a5d72f8481 OrthancCppClient/HttpClient.h --- a/OrthancCppClient/HttpClient.h Mon Jul 15 13:50:36 2013 +0200 +++ b/OrthancCppClient/HttpClient.h Mon Jul 15 17:22:13 2013 +0200 @@ -27,7 +27,6 @@ #pragma once -#include "HttpEnumerations.h" #include "HttpException.h" #include @@ -44,8 +43,8 @@ std::string url_; std::string credentials_; - Orthanc_HttpMethod method_; - Orthanc_HttpStatus lastStatus_; + HttpMethod method_; + HttpStatus lastStatus_; std::string postData_; bool isVerbose_; @@ -75,12 +74,12 @@ return url_; } - void SetMethod(Orthanc_HttpMethod method) + void SetMethod(HttpMethod method) { method_ = method; } - Orthanc_HttpMethod GetMethod() const + HttpMethod GetMethod() const { return method_; } @@ -106,7 +105,7 @@ bool Apply(Json::Value& answer); - Orthanc_HttpStatus GetLastStatus() const + HttpStatus GetLastStatus() const { return lastStatus_; } diff -r 722b56b99093 -r c9a5d72f8481 OrthancCppClient/HttpEnumerations.cpp --- a/OrthancCppClient/HttpEnumerations.cpp Mon Jul 15 13:50:36 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/** - * Orthanc - A Lightweight, RESTful DICOM Store - * Copyright (C) 2012-2013 Medical Physics Department, CHU of Liege, - * Belgium - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - - -#include "HttpEnumerations.h" - -const char* Orthanc_HttpMethod_ToString(Orthanc_HttpMethod method) -{ - switch (method) - { - case Orthanc_HttpMethod_Get: - return "GET"; - - case Orthanc_HttpMethod_Post: - return "POST"; - - case Orthanc_HttpMethod_Delete: - return "DELETE"; - - case Orthanc_HttpMethod_Put: - return "PUT"; - - default: - return "?"; - } -} - diff -r 722b56b99093 -r c9a5d72f8481 OrthancCppClient/HttpEnumerations.h --- a/OrthancCppClient/HttpEnumerations.h Mon Jul 15 13:50:36 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -/** - * Orthanc - A Lightweight, RESTful DICOM Store - * Copyright (C) 2012-2013 Medical Physics Department, CHU of Liege, - * Belgium - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - - -#pragma once - - -/** - * This file contains the enumerations for the access to the Orthanc - * REST API in C and C++. Namespaces are not used, in order to enable - * the access in C. - **/ - -// Most common, non-joke and non-experimental HTTP status codes -// http://en.wikipedia.org/wiki/List_of_HTTP_status_codes -enum Orthanc_HttpStatus -{ - Orthanc_HttpStatus_None = -1, - - // 1xx Informational - Orthanc_HttpStatus_100_Continue = 100, - Orthanc_HttpStatus_101_SwitchingProtocols = 101, - Orthanc_HttpStatus_102_Processing = 102, - - // 2xx Success - Orthanc_HttpStatus_200_Ok = 200, - Orthanc_HttpStatus_201_Created = 201, - Orthanc_HttpStatus_202_Accepted = 202, - Orthanc_HttpStatus_203_NonAuthoritativeInformation = 203, - Orthanc_HttpStatus_204_NoContent = 204, - Orthanc_HttpStatus_205_ResetContent = 205, - Orthanc_HttpStatus_206_PartialContent = 206, - Orthanc_HttpStatus_207_MultiStatus = 207, - Orthanc_HttpStatus_208_AlreadyReported = 208, - Orthanc_HttpStatus_226_IMUsed = 226, - - // 3xx Redirection - Orthanc_HttpStatus_300_MultipleChoices = 300, - Orthanc_HttpStatus_301_MovedPermanently = 301, - Orthanc_HttpStatus_302_Found = 302, - Orthanc_HttpStatus_303_SeeOther = 303, - Orthanc_HttpStatus_304_NotModified = 304, - Orthanc_HttpStatus_305_UseProxy = 305, - Orthanc_HttpStatus_307_TemporaryRedirect = 307, - - // 4xx Client Error - Orthanc_HttpStatus_400_BadRequest = 400, - Orthanc_HttpStatus_401_Unauthorized = 401, - Orthanc_HttpStatus_402_PaymentRequired = 402, - Orthanc_HttpStatus_403_Forbidden = 403, - Orthanc_HttpStatus_404_NotFound = 404, - Orthanc_HttpStatus_405_MethodNotAllowed = 405, - Orthanc_HttpStatus_406_NotAcceptable = 406, - Orthanc_HttpStatus_407_ProxyAuthenticationRequired = 407, - Orthanc_HttpStatus_408_RequestTimeout = 408, - Orthanc_HttpStatus_409_Conflict = 409, - Orthanc_HttpStatus_410_Gone = 410, - Orthanc_HttpStatus_411_LengthRequired = 411, - Orthanc_HttpStatus_412_PreconditionFailed = 412, - Orthanc_HttpStatus_413_RequestEntityTooLarge = 413, - Orthanc_HttpStatus_414_RequestUriTooLong = 414, - Orthanc_HttpStatus_415_UnsupportedMediaType = 415, - Orthanc_HttpStatus_416_RequestedRangeNotSatisfiable = 416, - Orthanc_HttpStatus_417_ExpectationFailed = 417, - Orthanc_HttpStatus_422_UnprocessableEntity = 422, - Orthanc_HttpStatus_423_Locked = 423, - Orthanc_HttpStatus_424_FailedDependency = 424, - Orthanc_HttpStatus_426_UpgradeRequired = 426, - - // 5xx Server Error - Orthanc_HttpStatus_500_InternalServerError = 500, - Orthanc_HttpStatus_501_NotImplemented = 501, - Orthanc_HttpStatus_502_BadGateway = 502, - Orthanc_HttpStatus_503_ServiceUnavailable = 503, - Orthanc_HttpStatus_504_GatewayTimeout = 504, - Orthanc_HttpStatus_505_HttpVersionNotSupported = 505, - Orthanc_HttpStatus_506_VariantAlsoNegotiates = 506, - Orthanc_HttpStatus_507_InsufficientStorage = 507, - Orthanc_HttpStatus_509_BandwidthLimitExceeded = 509, - Orthanc_HttpStatus_510_NotExtended = 510 -}; - - -enum Orthanc_HttpMethod -{ - Orthanc_HttpMethod_Get = 0, - Orthanc_HttpMethod_Post = 1, - Orthanc_HttpMethod_Delete = 2, - Orthanc_HttpMethod_Put = 3 -}; - - -const char* Orthanc_HttpMethod_ToString(Orthanc_HttpMethod method); diff -r 722b56b99093 -r c9a5d72f8481 OrthancCppClient/HttpException.cpp --- a/OrthancCppClient/HttpException.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/OrthancCppClient/HttpException.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -31,7 +31,7 @@ { const char* HttpException::What() const { - if (status_ == Orthanc_HttpStatus_None) + if (status_ == HttpStatus_None) { return custom_.c_str(); } @@ -41,164 +41,164 @@ } } - const char* HttpException::GetDescription(Orthanc_HttpStatus status) + const char* HttpException::GetDescription(HttpStatus status) { switch (status) { - case Orthanc_HttpStatus_100_Continue: + case HttpStatus_100_Continue: return "Continue"; - case Orthanc_HttpStatus_101_SwitchingProtocols: + case HttpStatus_101_SwitchingProtocols: return "Switching Protocols"; - case Orthanc_HttpStatus_102_Processing: + case HttpStatus_102_Processing: return "Processing"; - case Orthanc_HttpStatus_200_Ok: + case HttpStatus_200_Ok: return "OK"; - case Orthanc_HttpStatus_201_Created: + case HttpStatus_201_Created: return "Created"; - case Orthanc_HttpStatus_202_Accepted: + case HttpStatus_202_Accepted: return "Accepted"; - case Orthanc_HttpStatus_203_NonAuthoritativeInformation: + case HttpStatus_203_NonAuthoritativeInformation: return "Non-Authoritative Information"; - case Orthanc_HttpStatus_204_NoContent: + case HttpStatus_204_NoContent: return "No Content"; - case Orthanc_HttpStatus_205_ResetContent: + case HttpStatus_205_ResetContent: return "Reset Content"; - case Orthanc_HttpStatus_206_PartialContent: + case HttpStatus_206_PartialContent: return "Partial Content"; - case Orthanc_HttpStatus_207_MultiStatus: + case HttpStatus_207_MultiStatus: return "Multi-Status"; - case Orthanc_HttpStatus_208_AlreadyReported: + case HttpStatus_208_AlreadyReported: return "Already Reported"; - case Orthanc_HttpStatus_226_IMUsed: + case HttpStatus_226_IMUsed: return "IM Used"; - case Orthanc_HttpStatus_300_MultipleChoices: + case HttpStatus_300_MultipleChoices: return "Multiple Choices"; - case Orthanc_HttpStatus_301_MovedPermanently: + case HttpStatus_301_MovedPermanently: return "Moved Permanently"; - case Orthanc_HttpStatus_302_Found: + case HttpStatus_302_Found: return "Found"; - case Orthanc_HttpStatus_303_SeeOther: + case HttpStatus_303_SeeOther: return "See Other"; - case Orthanc_HttpStatus_304_NotModified: + case HttpStatus_304_NotModified: return "Not Modified"; - case Orthanc_HttpStatus_305_UseProxy: + case HttpStatus_305_UseProxy: return "Use Proxy"; - case Orthanc_HttpStatus_307_TemporaryRedirect: + case HttpStatus_307_TemporaryRedirect: return "Temporary Redirect"; - case Orthanc_HttpStatus_400_BadRequest: + case HttpStatus_400_BadRequest: return "Bad Request"; - case Orthanc_HttpStatus_401_Unauthorized: + case HttpStatus_401_Unauthorized: return "Unauthorized"; - case Orthanc_HttpStatus_402_PaymentRequired: + case HttpStatus_402_PaymentRequired: return "Payment Required"; - case Orthanc_HttpStatus_403_Forbidden: + case HttpStatus_403_Forbidden: return "Forbidden"; - case Orthanc_HttpStatus_404_NotFound: + case HttpStatus_404_NotFound: return "Not Found"; - case Orthanc_HttpStatus_405_MethodNotAllowed: + case HttpStatus_405_MethodNotAllowed: return "Method Not Allowed"; - case Orthanc_HttpStatus_406_NotAcceptable: + case HttpStatus_406_NotAcceptable: return "Not Acceptable"; - case Orthanc_HttpStatus_407_ProxyAuthenticationRequired: + case HttpStatus_407_ProxyAuthenticationRequired: return "Proxy Authentication Required"; - case Orthanc_HttpStatus_408_RequestTimeout: + case HttpStatus_408_RequestTimeout: return "Request Timeout"; - case Orthanc_HttpStatus_409_Conflict: + case HttpStatus_409_Conflict: return "Conflict"; - case Orthanc_HttpStatus_410_Gone: + case HttpStatus_410_Gone: return "Gone"; - case Orthanc_HttpStatus_411_LengthRequired: + case HttpStatus_411_LengthRequired: return "Length Required"; - case Orthanc_HttpStatus_412_PreconditionFailed: + case HttpStatus_412_PreconditionFailed: return "Precondition Failed"; - case Orthanc_HttpStatus_413_RequestEntityTooLarge: + case HttpStatus_413_RequestEntityTooLarge: return "Request Entity Too Large"; - case Orthanc_HttpStatus_414_RequestUriTooLong: + case HttpStatus_414_RequestUriTooLong: return "Request-URI Too Long"; - case Orthanc_HttpStatus_415_UnsupportedMediaType: + case HttpStatus_415_UnsupportedMediaType: return "Unsupported Media Type"; - case Orthanc_HttpStatus_416_RequestedRangeNotSatisfiable: + case HttpStatus_416_RequestedRangeNotSatisfiable: return "Requested Range Not Satisfiable"; - case Orthanc_HttpStatus_417_ExpectationFailed: + case HttpStatus_417_ExpectationFailed: return "Expectation Failed"; - case Orthanc_HttpStatus_422_UnprocessableEntity: + case HttpStatus_422_UnprocessableEntity: return "Unprocessable Entity"; - case Orthanc_HttpStatus_423_Locked: + case HttpStatus_423_Locked: return "Locked"; - case Orthanc_HttpStatus_424_FailedDependency: + case HttpStatus_424_FailedDependency: return "Failed Dependency"; - case Orthanc_HttpStatus_426_UpgradeRequired: + case HttpStatus_426_UpgradeRequired: return "Upgrade Required"; - case Orthanc_HttpStatus_500_InternalServerError: + case HttpStatus_500_InternalServerError: return "Internal Server Error"; - case Orthanc_HttpStatus_501_NotImplemented: + case HttpStatus_501_NotImplemented: return "Not Implemented"; - case Orthanc_HttpStatus_502_BadGateway: + case HttpStatus_502_BadGateway: return "Bad Gateway"; - case Orthanc_HttpStatus_503_ServiceUnavailable: + case HttpStatus_503_ServiceUnavailable: return "Service Unavailable"; - case Orthanc_HttpStatus_504_GatewayTimeout: + case HttpStatus_504_GatewayTimeout: return "Gateway Timeout"; - case Orthanc_HttpStatus_505_HttpVersionNotSupported: + case HttpStatus_505_HttpVersionNotSupported: return "HTTP Version Not Supported"; - case Orthanc_HttpStatus_506_VariantAlsoNegotiates: + case HttpStatus_506_VariantAlsoNegotiates: return "Variant Also Negotiates"; - case Orthanc_HttpStatus_507_InsufficientStorage: + case HttpStatus_507_InsufficientStorage: return "Insufficient Storage"; - case Orthanc_HttpStatus_509_BandwidthLimitExceeded: + case HttpStatus_509_BandwidthLimitExceeded: return "Bandwidth Limit Exceeded"; - case Orthanc_HttpStatus_510_NotExtended: + case HttpStatus_510_NotExtended: return "Not Extended"; default: diff -r 722b56b99093 -r c9a5d72f8481 OrthancCppClient/HttpException.h --- a/OrthancCppClient/HttpException.h Mon Jul 15 13:50:36 2013 +0200 +++ b/OrthancCppClient/HttpException.h Mon Jul 15 17:22:13 2013 +0200 @@ -27,7 +27,7 @@ #pragma once -#include "HttpEnumerations.h" +#include "../Core/Enumerations.h" #include @@ -36,24 +36,24 @@ class HttpException { private: - Orthanc_HttpStatus status_; + HttpStatus status_; std::string custom_; public: - static const char* GetDescription(Orthanc_HttpStatus status); + static const char* GetDescription(HttpStatus status); HttpException(const std::string& custom) { - status_ = Orthanc_HttpStatus_None; + status_ = HttpStatus_None; custom_ = custom; } - HttpException(Orthanc_HttpStatus status) + HttpException(HttpStatus status) { status_ = status; } - Orthanc_HttpStatus GetHttpStatus() const + HttpStatus GetHttpStatus() const { return status_; } diff -r 722b56b99093 -r c9a5d72f8481 OrthancServer/main.cpp --- a/OrthancServer/main.cpp Mon Jul 15 13:50:36 2013 +0200 +++ b/OrthancServer/main.cpp Mon Jul 15 17:22:13 2013 +0200 @@ -158,7 +158,7 @@ { } - virtual bool IsAllowed(Orthanc_HttpMethod method, + virtual bool IsAllowed(HttpMethod method, const char* uri, const char* ip, const char* username) const @@ -172,19 +172,19 @@ switch (method) { - case Orthanc_HttpMethod_Get: + case HttpMethod_Get: call.PushString("GET"); break; - case Orthanc_HttpMethod_Put: + case HttpMethod_Put: call.PushString("PUT"); break; - case Orthanc_HttpMethod_Post: + case HttpMethod_Post: call.PushString("POST"); break; - case Orthanc_HttpMethod_Delete: + case HttpMethod_Delete: call.PushString("DELETE"); break;