summaryrefslogtreecommitdiff
path: root/libdigidoc/DigiDocHTTP.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdigidoc/DigiDocHTTP.c')
-rw-r--r--libdigidoc/DigiDocHTTP.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/libdigidoc/DigiDocHTTP.c b/libdigidoc/DigiDocHTTP.c
new file mode 100644
index 0000000..3152996
--- /dev/null
+++ b/libdigidoc/DigiDocHTTP.c
@@ -0,0 +1,44 @@
+#include <libdigidoc/DigiDocHTTP.h>
+#include <libdigidoc/DigiDocError.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+//--------------------------------------------------
+// Returns HTTP return code
+// pBuf- buffer with HTTP response
+// returns error code or HTTP response code
+//--------------------------------------------------
+int ddocGetHttpResponseCode(DigiDocMemBuf* pBuf)
+{
+ int rc = ERR_OK;
+ char *p = (char*)pBuf->pMem;
+ RETURN_IF_NULL_PARAM(pBuf);
+ if(p && !strncmp(p, "HTTP", 4)) {
+ while(*p && *p != ' ') p++;
+ while(*p && !isdigit(*p)) p++;
+ rc = atoi(p);
+ } else
+ return ERR_HTTP_ERR;
+ return rc;
+}
+
+//--------------------------------------------------
+// Returns HTTP response body
+// pInBuf- buffer with HTTP response
+// pOutBuf - buffer for response body
+// returns error code or ERR_OK
+//--------------------------------------------------
+int ddocGetHttpPayload(DigiDocMemBuf* pInBuf, DigiDocMemBuf* pOutBuf)
+{
+ int err = ERR_OK;
+ char *p;
+ RETURN_IF_NULL_PARAM(pInBuf);
+ RETURN_IF_NULL_PARAM(pOutBuf);
+ if((p = strstr((char*)pInBuf->pMem, "\r\n\r\n")) != NULL) {
+ p += 4;
+ err = ddocMemAssignData(pOutBuf, p, pInBuf->nLen - (int)(p - (char*)pInBuf->pMem));
+ } else
+ return ERR_HTTP_ERR;
+ return err;
+}