From da47ac6c55796acce3860cbe8297c29e4563e4c9 Mon Sep 17 00:00:00 2001 From: Jacob Poulsen Date: Mon, 17 Mar 2008 15:08:14 +0100 Subject: [PATCH] Added customisation of xml send in command itemorder xml 1 usage itemorder xml 1 "" or itemorder xml 1 direct_reference = odr_oiddup(out, yaz_oid_extserv_item_order); @@ -2106,14 +2106,29 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno) } else if (!strcmp(type, "xml") || !strcmp(type, "3")) { - const char *xml_buf = - "\n" - " request\n" - " 000200\n" - " 1212 \n" - ""; + printf("xml found \n"); + + if( !document_name ) + { + printf("no ducoument added \n"); + r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; + return r; + }; + + char *xml_buf = NULL; + int xml_len = 0; + + printf("reading from -%s-\n", document_name ); + if (parse_cmd_doc(&document_name, out, &xml_buf, &xml_len) == 0 ) + { + printf("Unable to read document\n"); + r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; + return r; + }; + r->u.itemOrder->u.esRequest->notToKeep->itemRequest = - z_ext_record_oid(out, yaz_oid_recsyn_xml, xml_buf, strlen(xml_buf)); + z_ext_record_oid(out, yaz_oid_recsyn_xml, xml_buf, xml_len); + } else r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0; @@ -2121,7 +2136,7 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno) return r; } -static int send_itemorder(const char *type, int itemno) +static int send_itemorder(const char *type, int itemno, const char* document_name) { Z_APDU *apdu = zget_APDU(out, Z_APDU_extendedServicesRequest); Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest; @@ -2131,7 +2146,7 @@ static int send_itemorder(const char *type, int itemno) req->packageType = odr_oiddup(out, yaz_oid_extserv_item_order); req->packageName = esPackageName; - req->taskSpecificParameters = create_ItemOrderExternal(type, itemno); + req->taskSpecificParameters = create_ItemOrderExternal(type, itemno, document_name); send_apdu(apdu); return 0; @@ -2457,15 +2472,20 @@ static int cmd_itemorder(const char *arg) { char type[12]; int itemno; + const char* filename = arg; if (only_z3950()) return 1; if (sscanf (arg, "%10s %d", type, &itemno) != 2) return 0; + + filename+=strlen(type) + 1; + while( *filename && *filename !=' ' ) filename++; + printf("Item order request\n"); fflush(stdout); - send_itemorder(type, itemno); + send_itemorder(type, itemno, filename); return 2; } -- 1.7.10.4