projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into sru_2_0
[yaz-moved-to-github.git]
/
src
/
srwutil.c
diff --git
a/src/srwutil.c
b/src/srwutil.c
index
91808b0
..
1937a77
100644
(file)
--- a/
src/srwutil.c
+++ b/
src/srwutil.c
@@
-296,7
+296,9
@@
int yaz_srw_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
*srw_pdu = (Z_SRW_PDU*) (*soap_package)->u.generic->p;
yaz_srw_decodeauth(*srw_pdu, hreq, 0, 0, decode);
*srw_pdu = (Z_SRW_PDU*) (*soap_package)->u.generic->p;
yaz_srw_decodeauth(*srw_pdu, hreq, 0, 0, decode);
- if ((*soap_package)->u.generic->no == 3) /* SRU 2 ! */
+ /* last entry in handlers - SRU 2.0 - is turned into
+ offset 0.. due to other pieces relying on it */
+ if ((*soap_package)->u.generic->no == 3)
(*soap_package)->u.generic->no = 0;
if ((*srw_pdu)->which == Z_SRW_searchRetrieve_request &&
(*srw_pdu)->u.request->database == 0)
(*soap_package)->u.generic->no = 0;
if ((*srw_pdu)->which == Z_SRW_searchRetrieve_request &&
(*srw_pdu)->u.request->database == 0)
@@
-395,6
+397,7
@@
int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
char *startRecord = 0;
char *maximumTerms = 0;
char *responsePosition = 0;
char *startRecord = 0;
char *maximumTerms = 0;
char *responsePosition = 0;
+ const char *facetLimit = 0;
Z_SRW_extra_arg *extra_args = 0;
#endif
char **uri_name;
Z_SRW_extra_arg *extra_args = 0;
#endif
char **uri_name;
@@
-466,6
+469,8
@@
int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
maximumTerms = v;
else if (!strcmp(n, "responsePosition"))
responsePosition = v;
maximumTerms = v;
else if (!strcmp(n, "responsePosition"))
responsePosition = v;
+ else if (!strcmp(n, "facetLimit"))
+ facetLimit = v;
else if (!strcmp(n, "extraRequestData"))
; /* ignoring extraRequestData */
else if (n[0] == 'x' && n[1] == '-')
else if (!strcmp(n, "extraRequestData"))
; /* ignoring extraRequestData */
else if (n[0] == 'x' && n[1] == '-')
@@
-486,8
+491,13
@@
int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
}
}
}
}
}
}
- if (!operation && query)
- operation = "searchRetrieve";
+ if (!operation)
+ {
+ if (query)
+ operation = "searchRetrieve";
+ else if (scanClause)
+ operation = "scan";
+ }
version = yaz_negotiate_sru_version(version);
if (!version)
version = yaz_negotiate_sru_version(version);
if (!version)
@@
-545,6
+555,8
@@
int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
sr->u.request->recordPacking = recordXMLEscaping;
sr->u.request->packing = recordPacking;
sr->u.request->stylesheet = stylesheet;
sr->u.request->recordPacking = recordXMLEscaping;
sr->u.request->packing = recordPacking;
sr->u.request->stylesheet = stylesheet;
+ yaz_sru_facet_request(decode , &sr->u.request->facetList,
+ &facetLimit);
yaz_sru_decode_integer(decode, "maximumRecords", maximumRecords,
&sr->u.request->maximumRecords,
yaz_sru_decode_integer(decode, "maximumRecords", maximumRecords,
&sr->u.request->maximumRecords,
@@
-771,6
+783,7
@@
Z_SRW_PDU *yaz_srw_get_pdu(ODR o, int which, const char *version)
sr->u.response = (Z_SRW_searchRetrieveResponse *)
odr_malloc(o, sizeof(*sr->u.response));
sr->u.response->numberOfRecords = 0;
sr->u.response = (Z_SRW_searchRetrieveResponse *)
odr_malloc(o, sizeof(*sr->u.response));
sr->u.response->numberOfRecords = 0;
+ sr->u.response->resultCountPrecision = 0;
sr->u.response->resultSetId = 0;
sr->u.response->resultSetIdleTime = 0;
sr->u.response->records = 0;
sr->u.response->resultSetId = 0;
sr->u.response->resultSetIdleTime = 0;
sr->u.response->records = 0;
@@
-881,19
+894,19
@@
static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode,
int version2 = strcmp(srw_pdu->srw_version, "2.") > 0;
int i = 0;
char *queryType;
int version2 = strcmp(srw_pdu->srw_version, "2.") > 0;
int i = 0;
char *queryType;
- if (!version2)
- yaz_add_name_value_str(encode, name, value, &i, "version", srw_pdu->srw_version);
+ yaz_add_name_value_str(encode, name, value, &i, "version",
+ srw_pdu->srw_version);
name[i] = "operation";
switch (srw_pdu->which)
{
case Z_SRW_searchRetrieve_request:
name[i] = "operation";
switch (srw_pdu->which)
{
case Z_SRW_searchRetrieve_request:
- if (!version2)
- value[i++] = "searchRetrieve";
+ value[i++] = "searchRetrieve";
queryType = srw_pdu->u.request->queryType;
if (version2)
{
queryType = srw_pdu->u.request->queryType;
if (version2)
{
- yaz_add_name_value_str(encode, name, value, &i, "queryType",
- queryType);
+ if (queryType && strcmp(queryType, "cql"))
+ yaz_add_name_value_str(encode, name, value, &i, "queryType",
+ queryType);
yaz_add_name_value_str(encode, name, value, &i, "query",
srw_pdu->u.request->query);
}
yaz_add_name_value_str(encode, name, value, &i, "query",
srw_pdu->u.request->query);
}
@@
-946,6
+959,13
@@
static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode,
srw_pdu->u.request->stylesheet);
yaz_add_name_value_int(encode, name, value, &i, "resultSetTTL",
srw_pdu->u.request->resultSetTTL);
srw_pdu->u.request->stylesheet);
yaz_add_name_value_int(encode, name, value, &i, "resultSetTTL",
srw_pdu->u.request->resultSetTTL);
+ {
+ const char *facetLimit = 0;
+ yaz_sru_facet_request(encode, &srw_pdu->u.request->facetList,
+ &facetLimit);
+ yaz_add_name_value_str(encode, name, value, &i, "facetLimit",
+ (char *) facetLimit);
+ }
break;
case Z_SRW_explain_request:
value[i++] = "explain";
break;
case Z_SRW_explain_request:
value[i++] = "explain";
@@
-965,14
+985,14
@@
static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode,
break;
case Z_SRW_scan_request:
value[i++] = "scan";
break;
case Z_SRW_scan_request:
value[i++] = "scan";
- queryType = srw_pdu->u.request->queryType;
+ queryType = srw_pdu->u.scan_request->queryType;
if (version2)
{
if (queryType && strcmp(queryType, "cql"))
yaz_add_name_value_str(encode, name, value, &i, "queryType",
queryType);
if (version2)
{
if (queryType && strcmp(queryType, "cql"))
yaz_add_name_value_str(encode, name, value, &i, "queryType",
queryType);
- yaz_add_name_value_str(encode, name, value, &i, "query",
- srw_pdu->u.request->query);
+ yaz_add_name_value_str(encode, name, value, &i, "scanClause",
+ srw_pdu->u.scan_request->scanClause);
}
else
{
}
else
{
@@
-1034,7
+1054,6
@@
int yaz_sru_get_encode(Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu,
odr_malloc(encode, strlen(hreq->path) + strlen(uri_args) + 4);
sprintf(path, "%s?%s", hreq->path, uri_args);
odr_malloc(encode, strlen(hreq->path) + strlen(uri_args) + 4);
sprintf(path, "%s?%s", hreq->path, uri_args);
- yaz_log(YLOG_DEBUG, "SRU HTTP Get Request %s", path);
hreq->path = path;
z_HTTP_header_add_content_type(encode, &hreq->headers,
hreq->path = path;
z_HTTP_header_add_content_type(encode, &hreq->headers,