From 9d86ce783bf468e83c7d84240739baffd800d114 Mon Sep 17 00:00:00 2001
From: Andrey Utkin <andrey.utkin@corp.bluecherry.net>
Date: Sat, 18 Oct 2014 00:24:00 +0400
Subject: [PATCH] avformat/http: Introduce ff_http_averror()

int ff_http_averror(int status_code, int default_averror)

This helper function returns AVERROR_ value from 3-digit HTTP status
code.

Second argument, default_averror, is used if no specific AVERROR_ is
available. It is introduced because in different places of code
different return codes are used - -1, AVERROR(EIO), AVERROR_INVALIDDATA.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
---
 libavformat/http.c | 17 +++++++++++++++++
 libavformat/http.h |  2 ++
 2 files changed, 19 insertions(+)

diff --git a/libavformat/http.c b/libavformat/http.c
index 018d25c9d73..1958a1b4d5d 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -272,6 +272,23 @@ int ff_http_do_new_request(URLContext *h, const char *uri)
     return ret;
 }
 
+int ff_http_averror(int status_code, int default_averror)
+{
+    switch (status_code) {
+        case 400: return AVERROR_HTTP_BAD_REQUEST;
+        case 401: return AVERROR_HTTP_UNAUTHORIZED;
+        case 403: return AVERROR_HTTP_FORBIDDEN;
+        case 404: return AVERROR_HTTP_NOT_FOUND;
+        default: break;
+    }
+    if (status_code >= 400 && status_code <= 499)
+        return AVERROR_HTTP_OTHER_4XX;
+    else if (status_code >= 500)
+        return AVERROR_HTTP_SERVER_ERROR;
+    else
+        return default_averror;
+}
+
 static int http_open(URLContext *h, const char *uri, int flags,
                      AVDictionary **options)
 {
diff --git a/libavformat/http.h b/libavformat/http.h
index be8ae7f4601..7d02713e310 100644
--- a/libavformat/http.h
+++ b/libavformat/http.h
@@ -47,4 +47,6 @@ void ff_http_init_auth_state(URLContext *dest, const URLContext *src);
  */
 int ff_http_do_new_request(URLContext *h, const char *uri);
 
+int ff_http_averror(int status_code, int default_averror);
+
 #endif /* AVFORMAT_HTTP_H */
-- 
GitLab