forked from Telodendria/Telodendria
213 lines
6.2 KiB
C
213 lines
6.2 KiB
C
/*
|
|
* Copyright (C) 2022 Jordan Bancino <@jordan:bancino.net>
|
|
*
|
|
* 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 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 <Http.h>
|
|
|
|
#include <string.h>
|
|
|
|
const char *
|
|
HttpRequestMethodToString(const HttpRequestMethod method)
|
|
{
|
|
switch (method)
|
|
{
|
|
case HTTP_GET:
|
|
return "GET";
|
|
case HTTP_HEAD:
|
|
return "HEAD";
|
|
case HTTP_POST:
|
|
return "POST";
|
|
case HTTP_PUT:
|
|
return "PUT";
|
|
case HTTP_DELETE:
|
|
return "DELETE";
|
|
case HTTP_CONNECT:
|
|
return "CONNECT";
|
|
case HTTP_OPTIONS:
|
|
return "OPTIONS";
|
|
case HTTP_TRACE:
|
|
return "TRACE";
|
|
case HTTP_PATCH:
|
|
return "PATCH";
|
|
default:
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
HttpRequestMethod
|
|
HttpRequestMethodFromString(const char *str)
|
|
{
|
|
if (strcmp(str, "GET") == 0)
|
|
{
|
|
return HTTP_GET;
|
|
}
|
|
|
|
if (strcmp(str, "HEAD") == 0)
|
|
{
|
|
return HTTP_HEAD;
|
|
}
|
|
|
|
if (strcmp(str, "POST") == 0)
|
|
{
|
|
return HTTP_POST;
|
|
}
|
|
|
|
if (strcmp(str, "PUT") == 0)
|
|
{
|
|
return HTTP_PUT;
|
|
}
|
|
|
|
if (strcmp(str, "DELETE") == 0)
|
|
{
|
|
return HTTP_DELETE;
|
|
}
|
|
|
|
if (strcmp(str, "CONNECT") == 0)
|
|
{
|
|
return HTTP_CONNECT;
|
|
}
|
|
|
|
if (strcmp(str, "OPTIONS") == 0)
|
|
{
|
|
return HTTP_OPTIONS;
|
|
}
|
|
|
|
if (strcmp(str, "TRACE") == 0)
|
|
{
|
|
return HTTP_TRACE;
|
|
}
|
|
|
|
if (strcmp(str, "PATCH") == 0)
|
|
{
|
|
return HTTP_PATCH;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
const char *
|
|
HttpStatusToString(const HttpStatus status)
|
|
{
|
|
switch (status)
|
|
{
|
|
case HTTP_CONTINUE:
|
|
return "Continue";
|
|
case HTTP_SWITCHING_PROTOCOLS:
|
|
return "Switching Protocols";
|
|
case HTTP_EARLY_HINTS:
|
|
return "Early Hints";
|
|
case HTTP_OK:
|
|
return "Ok";
|
|
case HTTP_CREATED:
|
|
return "Created";
|
|
case HTTP_ACCEPTED:
|
|
return "Accepted";
|
|
case HTTP_NON_AUTHORITATIVE_INFORMATION:
|
|
return "Non-Authoritative Information";
|
|
case HTTP_NO_CONTENT:
|
|
return "No Content";
|
|
case HTTP_RESET_CONTENT:
|
|
return "Reset Content";
|
|
case HTTP_PARTIAL_CONTENT:
|
|
return "Partial Content";
|
|
case HTTP_MULTIPLE_CHOICES:
|
|
return "Multiple Choices";
|
|
case HTTP_MOVED_PERMANENTLY:
|
|
return "Moved Permanently";
|
|
case HTTP_FOUND:
|
|
return "Found";
|
|
case HTTP_SEE_OTHER:
|
|
return "See Other";
|
|
case HTTP_NOT_MODIFIED:
|
|
return "Not Modified";
|
|
case HTTP_TEMPORARY_REDIRECT:
|
|
return "Temporary Redirect";
|
|
case HTTP_PERMANENT_REDIRECT:
|
|
return "Permanent Redirect";
|
|
case HTTP_BAD_REQUEST:
|
|
return "Bad Request";
|
|
case HTTP_UNAUTHORIZED:
|
|
return "Unauthorized";
|
|
case HTTP_FORBIDDEN:
|
|
return "Forbidden";
|
|
case HTTP_NOT_FOUND:
|
|
return "Not Found";
|
|
case HTTP_METHOD_NOT_ALLOWED:
|
|
return "Method Not Allowed";
|
|
case HTTP_NOT_ACCEPTABLE:
|
|
return "Not Acceptable";
|
|
case HTTP_PROXY_AUTH_REQUIRED:
|
|
return "Proxy Authentication Required";
|
|
case HTTP_REQUEST_TIMEOUT:
|
|
return "Request Timeout";
|
|
case HTTP_CONFLICT:
|
|
return "Conflict";
|
|
case HTTP_GONE:
|
|
return "Gone";
|
|
case HTTP_LENGTH_REQUIRED:
|
|
return "Length Required";
|
|
case HTTP_PRECONDITION_FAILED:
|
|
return "Precondition Failed";
|
|
case HTTP_PAYLOAD_TOO_LARGE:
|
|
return "Payload Too Large";
|
|
case HTTP_URI_TOO_LONG:
|
|
return "URI Too Long";
|
|
case HTTP_UNSUPPORTED_MEDIA_TYPE:
|
|
return "Unsupported Media Type";
|
|
case HTTP_RANGE_NOT_SATISFIABLE:
|
|
return "Range Not Satisfiable";
|
|
case HTTP_EXPECTATION_FAILED:
|
|
return "Expectation Failed";
|
|
case HTTP_TEAPOT:
|
|
return "I'm a Teapot";
|
|
case HTTP_UPGRADE_REQUIRED:
|
|
return "Upgrade Required";
|
|
case HTTP_PRECONDITION_REQUIRED:
|
|
return "Precondition Required";
|
|
case HTTP_TOO_MANY_REQUESTS:
|
|
return "Too Many Requests";
|
|
case HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE:
|
|
return "Request Header Fields Too Large";
|
|
case HTTP_UNAVAILABLE_FOR_LEGAL_REASONS:
|
|
return "Unavailable For Legal Reasons";
|
|
case HTTP_INTERNAL_SERVER_ERROR:
|
|
return "Internal Server Error";
|
|
case HTTP_NOT_IMPLEMENTED:
|
|
return "Not Implemented";
|
|
case HTTP_BAD_GATEWAY:
|
|
return "Bad Gateway";
|
|
case HTTP_SERVICE_UNAVAILABLE:
|
|
return "Service Unavailable";
|
|
case HTTP_GATEWAY_TIMEOUT:
|
|
return "Gateway Timeout";
|
|
case HTTP_VERSION_NOT_SUPPORTED:
|
|
return "Version Not Supported";
|
|
case HTTP_VARIANT_ALSO_NEGOTIATES:
|
|
return "Variant Also Negotiates";
|
|
case HTTP_NOT_EXTENDED:
|
|
return "Not Extended";
|
|
case HTTP_NETWORK_AUTH_REQUIRED:
|
|
return "Network Authentication Required";
|
|
default:
|
|
return NULL;
|
|
}
|
|
}
|