summaryrefslogtreecommitdiff
path: root/cache/src/tango_cache_xml.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cache/src/tango_cache_xml.cpp')
-rw-r--r--cache/src/tango_cache_xml.cpp172
1 files changed, 0 insertions, 172 deletions
diff --git a/cache/src/tango_cache_xml.cpp b/cache/src/tango_cache_xml.cpp
deleted file mode 100644
index 97280b6..0000000
--- a/cache/src/tango_cache_xml.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <libxml/parser.h>
-#include "tango_cache_xml.h"
-
-bool parse_uploadID_xml(const char *content, int len, char **uploadID)
-{
- xmlDoc *pdoc;
- xmlNode *pcur;
-
- if((pdoc = xmlParseMemory(content, len)) == NULL)
- {
- return false;
- }
- if((pcur = xmlDocGetRootElement(pdoc)) == NULL)
- {
- xmlFreeDoc(pdoc);
- return false;
- }
-
- while(pcur->type != XML_ELEMENT_NODE)
- pcur = pcur->next;
- if(xmlStrcmp(pcur->name, (const xmlChar *)"InitiateMultipartUploadResult"))
- {
- xmlFreeDoc(pdoc);
- return false;
- }
- pcur = pcur->children;
- while(pcur != NULL)
- {
- if(pcur->type != XML_ELEMENT_NODE || xmlStrcmp(pcur->name, (const xmlChar *)"UploadId"))
- {
- pcur = pcur->next;
- continue;
- }
- *uploadID = (char *)xmlNodeGetContent(pcur);
- xmlFreeDoc(pdoc);
- return true;
- }
-
- xmlFreeDoc(pdoc);
- return false;
-}
-
-void construct_complete_xml(struct tango_cache_ctx *ctx, char **xml, int *len)
-{
- struct multipart_etag_list *etag;
- xmlDoc *pdoc;
- xmlNode *root, *child;
- char number[20];
-
- pdoc = xmlNewDoc((const xmlChar *)"1.0");
- root = xmlNewNode(NULL, (const xmlChar *)"CompleteMultipartUpload");
- /*Big data deletion of this field parsing, shielding this field**/
- //xmlNewProp(root, (const xmlChar *)"xmlns",(const xmlChar *)"http://s3.amazonaws.com/doc/2006-03-01/");
- xmlDocSetRootElement(pdoc, root);
-
- TAILQ_FOREACH(etag, &ctx->put.etag_head, node)
- {
- sprintf(number, "%u", etag->part_number);
- child = xmlNewChild(root, NULL, (const xmlChar*)"Part", NULL);
- xmlNewChild(child, NULL, (const xmlChar*)"ETag", (const xmlChar*)etag->etag);
- xmlNewChild(child, NULL, (const xmlChar*)"PartNumber", (const xmlChar*)number);
- }
-
- xmlDocDumpFormatMemory(pdoc, (xmlChar **)xml, len, 1);
- xmlFreeDoc(pdoc);
-}
-
-static void fill_multidelete_xml_errcode(xmlNode *error, char *out, int size)
-{
- xmlChar *errcode;
- xmlNode *child = error->children;
-
- while(child != NULL)
- {
- if(child->type != XML_ELEMENT_NODE || xmlStrcmp(child->name, (const xmlChar *)"Message"))
- {
- child = child->next;
- continue;
- }
- errcode = xmlNodeGetContent(child);
- snprintf(out, size, "%s", (char *)errcode);
- xmlFree(errcode);
- break;
- }
-}
-
-bool parse_multidelete_xml(const char *xml, int len, u_int32_t *errnum, char *errstr, int size)
-{
- xmlDoc *pdoc;
- xmlNode *pcur;
- int errornum=0;
-
- if((pdoc = xmlParseMemory(xml, len)) == NULL)
- {
- return false;
- }
- if((pcur = xmlDocGetRootElement(pdoc)) == NULL)
- {
- xmlFreeDoc(pdoc);
- return false;
- }
-
- while(pcur->type != XML_ELEMENT_NODE)
- pcur = pcur->next;
- if(xmlStrcmp(pcur->name, (const xmlChar *)"DeleteResult"))
- {
- xmlFreeDoc(pdoc);
- return false;
- }
- pcur = pcur->children;
- while(pcur != NULL)
- {
- if(pcur->type != XML_ELEMENT_NODE || xmlStrcmp(pcur->name, (const xmlChar *)"Error"))
- {
- pcur = pcur->next;
- continue;
- }
- if(errornum == 0)
- {
- fill_multidelete_xml_errcode(pcur, errstr, size);
- }
- errornum++;
- pcur = pcur->next;
- }
- *errnum = errornum;
-
- xmlFreeDoc(pdoc);
- return true;
-}
-
-void construct_multiple_delete_xml(const char *bucket, char *key[], u_int32_t num, int is_hash, char **xml, size_t *len)
-{
- xmlDoc *pdoc;
- xmlNode *root, *child;
- int xmllen;
-
- pdoc = xmlNewDoc((const xmlChar *)"1.0");
- root = xmlNewNode(NULL, (const xmlChar *)"Delete");
- xmlDocSetRootElement(pdoc, root);
-
- xmlNewChild(root, NULL, (const xmlChar*)"Quiet", (const xmlChar*)"true");
-
- if(is_hash)
- {
- char hashkey[72], sha256[72];
- for(u_int32_t i=0; i<num; i++)
- {
- child = xmlNewChild(root, NULL, (const xmlChar*)"Object", NULL);
- caculate_sha256(key[i], strlen(key[i]), sha256, 72);
- snprintf(hashkey, 256, "%c%c_%c%c_%s", sha256[0], sha256[1], sha256[2], sha256[3], sha256+4);
- xmlNewChild(child, NULL, (const xmlChar*)"Key", (const xmlChar*)hashkey);
- }
- }
- else
- {
- for(u_int32_t i=0; i<num; i++)
- {
- child = xmlNewChild(root, NULL, (const xmlChar*)"Object", NULL);
- xmlNewChild(child, NULL, (const xmlChar*)"Key", (const xmlChar*)key[i]);
- }
- }
- xmlDocDumpFormatMemoryEnc(pdoc, (xmlChar **)xml, &xmllen, "UTF-8", 1);
- xmlFreeDoc(pdoc);
- *len = xmllen;
-}
-