soup-method.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
  2. /*
  3. * Copyright (C) 2008 Red Hat, Inc.
  4. */
  5. #ifndef SOUP_METHOD_H
  6. #define SOUP_METHOD_H 1
  7. #include <libsoup/soup-types.h>
  8. #include <libsoup/soup-misc.h>
  9. G_BEGIN_DECLS
  10. /**
  11. * SECTION:soup-method
  12. * @short_description: HTTP method definitions
  13. *
  14. * soup-method.h contains a number of defines for standard HTTP and
  15. * WebDAV headers. You do not need to use these defines; you can pass
  16. * arbitrary strings to soup_message_new() if you prefer.
  17. *
  18. * The thing that these defines <emphasis>are</emphasis> useful for is
  19. * performing quick comparisons against #SoupMessage's %method field;
  20. * because that field always contains an interned string, and these
  21. * macros return interned strings, you can compare %method directly
  22. * against these macros rather than needing to use strcmp(). This is
  23. * most useful in SoupServer handlers. Eg:
  24. *
  25. * <informalexample><programlisting>
  26. * if (msg->method != SOUP_METHOD_GET &amp;&amp; msg->method != SOUP_METHOD_HEAD) {
  27. * soup_message_set_status (msg, SOUP_METHOD_NOT_IMPLEMENTED);
  28. * return;
  29. * }
  30. * </programlisting></informalexample>
  31. **/
  32. #define _SOUP_INTERN_METHOD(method) (_SOUP_ATOMIC_INTERN_STRING (_SOUP_METHOD_##method, #method))
  33. /* HTTP/1.1 methods */
  34. #define SOUP_METHOD_OPTIONS _SOUP_INTERN_METHOD (OPTIONS)
  35. #define SOUP_METHOD_GET _SOUP_INTERN_METHOD (GET)
  36. #define SOUP_METHOD_HEAD _SOUP_INTERN_METHOD (HEAD)
  37. #define SOUP_METHOD_POST _SOUP_INTERN_METHOD (POST)
  38. #define SOUP_METHOD_PUT _SOUP_INTERN_METHOD (PUT)
  39. #define SOUP_METHOD_DELETE _SOUP_INTERN_METHOD (DELETE)
  40. #define SOUP_METHOD_TRACE _SOUP_INTERN_METHOD (TRACE)
  41. #define SOUP_METHOD_CONNECT _SOUP_INTERN_METHOD (CONNECT)
  42. /* WebDAV methods */
  43. #define SOUP_METHOD_PROPFIND _SOUP_INTERN_METHOD (PROPFIND)
  44. #define SOUP_METHOD_PROPPATCH _SOUP_INTERN_METHOD (PROPPATCH)
  45. #define SOUP_METHOD_MKCOL _SOUP_INTERN_METHOD (MKCOL)
  46. #define SOUP_METHOD_COPY _SOUP_INTERN_METHOD (COPY)
  47. #define SOUP_METHOD_MOVE _SOUP_INTERN_METHOD (MOVE)
  48. #define SOUP_METHOD_LOCK _SOUP_INTERN_METHOD (LOCK)
  49. #define SOUP_METHOD_UNLOCK _SOUP_INTERN_METHOD (UNLOCK)
  50. /* Do not use these variables directly; use the macros above, which
  51. * ensure that they get initialized properly.
  52. */
  53. SOUP_VAR gpointer _SOUP_METHOD_OPTIONS;
  54. SOUP_VAR gpointer _SOUP_METHOD_GET;
  55. SOUP_VAR gpointer _SOUP_METHOD_HEAD;
  56. SOUP_VAR gpointer _SOUP_METHOD_POST;
  57. SOUP_VAR gpointer _SOUP_METHOD_PUT;
  58. SOUP_VAR gpointer _SOUP_METHOD_DELETE;
  59. SOUP_VAR gpointer _SOUP_METHOD_TRACE;
  60. SOUP_VAR gpointer _SOUP_METHOD_CONNECT;
  61. SOUP_VAR gpointer _SOUP_METHOD_PROPFIND;
  62. SOUP_VAR gpointer _SOUP_METHOD_PROPPATCH;
  63. SOUP_VAR gpointer _SOUP_METHOD_MKCOL;
  64. SOUP_VAR gpointer _SOUP_METHOD_COPY;
  65. SOUP_VAR gpointer _SOUP_METHOD_MOVE;
  66. SOUP_VAR gpointer _SOUP_METHOD_LOCK;
  67. SOUP_VAR gpointer _SOUP_METHOD_UNLOCK;
  68. G_END_DECLS
  69. #endif /* SOUP_METHOD_H */