Added SRU-GET and SRU-POST support for ZOOM C. Option "sru" specifies
[yaz-moved-to-github.git] / include / yaz / srw.h
index 6a9781d..dc721a1 100644 (file)
@@ -1,8 +1,8 @@
 /*
- * Copyright (c) 2002-2005, Index Data.
+ * Copyright (C) 1995-2005, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: srw.h,v 1.19 2005-01-09 21:52:48 adam Exp $
+ * $Id: srw.h,v 1.25 2006-03-01 23:24:24 adam Exp $
  */
 /**
  * \file srw.h
 
 #include <yaz/soap.h>
 #include <yaz/zgdu.h>
+#include <yaz/diagsrw.h>
 
 YAZ_BEGIN_CDECL
 
 typedef struct {
+    int type;
+    char *recordReviewCode;
+    char *recordReviewNote;
+    char *recordId;
+    char *nonDupRecordId;
+    char *recordLockStatus;
+    char *recordOldVersion;
+} Z_SRW_extra_record;
+
+typedef struct {
     char *recordSchema;
     int recordPacking;
 #define Z_SRW_recordPacking_string 0
 #define Z_SRW_recordPacking_XML 1
+#define Z_SRW_recordPacking_URL 2
     char *recordData_buf;
     int recordData_len;
     int *recordPosition;
@@ -75,6 +87,8 @@ typedef struct {
     Z_SRW_diagnostic *diagnostics;
     int num_diagnostics;
     int *nextRecordPosition;
+
+    Z_SRW_extra_record **extra_records;  /* of size num_records */
 } Z_SRW_searchRetrieveResponse;
 
 typedef struct {
@@ -87,6 +101,7 @@ typedef struct {
     Z_SRW_record record;
     Z_SRW_diagnostic *diagnostics;
     int num_diagnostics;
+    Z_SRW_extra_record *extra_record;
 } Z_SRW_explainResponse;
     
 typedef struct {
@@ -116,12 +131,39 @@ typedef struct {
     int num_diagnostics;
 } Z_SRW_scanResponse;
 
+
+typedef struct {
+    char *database;
+    char *operation;
+    char *recordId;
+    char *recordVersion;
+    char *recordOldVersion;
+    Z_SRW_record record;
+    Z_SRW_extra_record *extra_record;
+    char *extraRequestData;
+    char *stylesheet;
+} Z_SRW_updateRequest;
+
+typedef struct {
+    char *operationStatus;
+    char *recordId;
+    char *recordVersion;
+    char *recordChecksum;
+    char *extraResponseData;
+    Z_SRW_record record;
+    Z_SRW_extra_record *extra_record;
+    Z_SRW_diagnostic *diagnostics;
+    int num_diagnostics;
+} Z_SRW_updateResponse;
+
 #define Z_SRW_searchRetrieve_request  1
 #define Z_SRW_searchRetrieve_response 2
 #define Z_SRW_explain_request 3
 #define Z_SRW_explain_response 4
 #define Z_SRW_scan_request 5
 #define Z_SRW_scan_response 6
+#define Z_SRW_update_request 7
+#define Z_SRW_update_response 8
 
 typedef struct {
     int which;
@@ -132,6 +174,8 @@ typedef struct {
         Z_SRW_explainResponse *explain_response;
         Z_SRW_scanRequest *scan_request;
         Z_SRW_scanResponse *scan_response;
+        Z_SRW_updateRequest *update_request;
+        Z_SRW_updateResponse *update_response;
     } u;
     char *srw_version;
 } Z_SRW_PDU;
@@ -139,9 +183,11 @@ typedef struct {
 YAZ_EXPORT int yaz_srw_codec(ODR o, void * pptr,
                              Z_SRW_PDU **handler_data,
                              void *client_data, const char *ns);
+YAZ_EXPORT int yaz_ucp_codec(ODR o, void * pptr,
+                             Z_SRW_PDU **handler_data,
+                             void *client_data, const char *ns);
 YAZ_EXPORT Z_SRW_PDU *yaz_srw_get(ODR o, int which);
-
-YAZ_EXPORT const char *yaz_diag_srw_str (int code);
+YAZ_EXPORT Z_SRW_extra_record *yaz_srw_get_extra_record(ODR o);
 
 YAZ_EXPORT int yaz_diag_bib1_to_srw (int bib1_code);
 
@@ -149,20 +195,43 @@ YAZ_EXPORT int yaz_diag_srw_to_bib1(int srw_code);
 
 YAZ_EXPORT char *yaz_uri_val(const char *path, const char *name, ODR o);
 YAZ_EXPORT void yaz_uri_val_int(const char *path, const char *name,
-                               ODR o, int **intp);
+                                ODR o, int **intp);
 YAZ_EXPORT int yaz_srw_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
-                             Z_SOAP **soap_package, ODR decode, char **charset);
+                              Z_SOAP **soap_package, ODR decode, char **charset);
 YAZ_EXPORT int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
-                             Z_SOAP **soap_package, ODR decode, 
-                             char **charset,
-                             Z_SRW_diagnostic **, int *num_diagnostic);
+                              Z_SOAP **soap_package, ODR decode, 
+                              char **charset,
+                              Z_SRW_diagnostic **, int *num_diagnostic);
 
 YAZ_EXPORT void yaz_add_srw_diagnostic(ODR o, Z_SRW_diagnostic **d,
-                                      int *num, int code,
-                                      const char *addinfo);
+                                       int *num, int code,
+                                       const char *addinfo);
     
+
 YAZ_EXPORT void yaz_mk_std_diagnostic(ODR o, Z_SRW_diagnostic *d, 
-                                     int code, const char *details);
+                                      int code, const char *details);
+
+YAZ_EXPORT void yaz_add_srw_diagnostic_uri(ODR o, Z_SRW_diagnostic **d,
+                                           int *num, const char *uri,
+                                           const char *message,
+                                           const char *details);
+
+YAZ_EXPORT void yaz_mk_srw_diagnostic(ODR o, Z_SRW_diagnostic *d, 
+                                      const char *uri, const char *message,
+                                      const char *details);
+
+YAZ_EXPORT int yaz_sru_get_encode(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu,
+                                  ODR encode, char *charset);
+YAZ_EXPORT int yaz_sru_post_encode(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu,
+                                   ODR encode, char *charset);
 YAZ_END_CDECL
 
 #endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+