Make z_HTTP_header_set public and extend z_HTTP_errmsg
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 2 May 2013 11:53:51 +0000 (13:53 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 2 May 2013 11:53:51 +0000 (13:53 +0200)
Utility z_HTTP_errmsg should now map all HTTP 1.1 diagnostic
codes.

include/yaz/zgdu.h
src/http.c

index 40bb12e..5ce5e47 100644 (file)
@@ -76,6 +76,8 @@ typedef struct {
 YAZ_EXPORT int z_GDU (ODR o, Z_GDU **p, int opt, const char *name);
 YAZ_EXPORT void z_HTTP_header_add(ODR o, Z_HTTP_Header **hp, const char *n,
                                   const char *v);
+YAZ_EXPORT void z_HTTP_header_set(ODR o, Z_HTTP_Header **hp, const char *n,
+                                  const char *v);
 YAZ_EXPORT void z_HTTP_header_add_content_type(ODR o, Z_HTTP_Header **hp,
                                                const char *content_type,
                                                const char *charset);
index 43e2786..62bfa6f 100644 (file)
@@ -206,9 +206,7 @@ void z_HTTP_header_add(ODR o, Z_HTTP_Header **hp, const char *n,
     (*hp)->next = 0;
 }
 
-#if 0
-/* not in use yet */
-static void z_HTTP_header_set(ODR o, Z_HTTP_Header **hp, const char *n,
+void z_HTTP_header_set(ODR o, Z_HTTP_Header **hp, const char *n,
                        const char *v)
 {
     while (*hp)
@@ -225,7 +223,6 @@ static void z_HTTP_header_set(ODR o, Z_HTTP_Header **hp, const char *n,
     (*hp)->value = odr_strdup(o, v);
     (*hp)->next = 0;
 }
-#endif
 
 const char *z_HTTP_header_lookup(const Z_HTTP_Header *hp, const char *n)
 {
@@ -372,18 +369,85 @@ Z_GDU *z_get_HTTP_Response(ODR o, int code)
 
 const char *z_HTTP_errmsg(int code)
 {
-    if (code == 200)
+    switch (code)
+    {
+    case 100:
+        return "Continue";
+    case 101:
+        return "Switching Protocols";
+    case 200:
         return "OK";
-    else if (code == 400)
+    case 201:
+        return "Created";
+    case 202:
+        return "Accepted";
+    case 203:
+        return "Non-Authoritative Information";
+    case 204:
+        return "No Content";
+    case 205:
+        return "Reset Content";
+    case 206:
+        return "Partial Content";
+    case 300:
+        return "Multiple Choices";
+    case 301:
+        return "Moved Permenently";
+    case 302:
+        return "Found";
+    case 303:
+        return "See Other";
+    case 304:
+        return "Not Modified";
+    case 305:
+        return "Use Proxy";
+    case 307:
+        return "Temporary Redirect";
+    case 400:
         return "Bad Request";
-    else if (code == 404)
+    case 404:
         return "Not Found";
-    else if (code == 405)
+    case 405:
         return "Method Not Allowed";
-    else if (code == 500)
+    case 406:
+        return "Not Acceptable";
+    case 407:
+        return "Proxy Authentication Required";
+    case 408:
+        return "Request Timeout";
+    case 409:
+        return "Conflict";
+    case 410:
+        return "Gone";
+    case 411:
+        return "Length Required";
+    case 412:
+        return "Precondition Failed";
+    case 413:
+        return "Request Entity Too Large";
+    case 414:
+        return "Request-URI Too Long";
+    case 415:
+        return "Unsupported Media Type";
+    case 416:
+        return "Requested Range Not Satisfiable";
+    case 417:
+        return "Expectation Failed";
+    case 500:
         return "Internal Error";
-    else
+    case 501:
+        return "Not Implemented";
+    case 502:
+        return "Bad Gateway";
+    case 503:
+        return "Service Unavailable";
+    case 504:
+        return "Gateway Timeout";
+    case 505:
+        return "HTTP Version Not Supported";
+    default:
         return "Unknown Error";
+    }
 }
 
 int yaz_decode_http_response(ODR o, Z_HTTP_Response **hr_p)