YAZ 5.38.1
srwutil.c File Reference

Implements SRW/SRU utilities. More...

#include <stdlib.h>
#include <assert.h>
#include <yaz/srw.h>
#include <yaz/matchstr.h>
#include <yaz/base64.h>
#include <yaz/yaz-iconv.h>
#include <yaz/snprintf.h>
#include "sru-p.h"

Go to the source code of this file.

Macros

#define MAX_SRU_PARAMETERS   30

Functions

static Z_SRW_extra_arg ** append_extra_arg (ODR odr, Z_SRW_extra_arg **l, const char *n, const char *v)
static Z_SRW_extra_arg ** append_extra_arg_int (ODR odr, Z_SRW_extra_arg **l, const char *n, Odr_int *v)
static char * yaz_decode_sru_dbpath_odr (ODR n, const char *uri, size_t len)
void yaz_encode_sru_dbpath_buf (char *dst, const char *db)
 encode SRU database for HTTP path
char * yaz_encode_sru_dbpath_odr (ODR out, const char *db)
 encode SRU database for HTTP path
const char * yaz_element_attribute_value_get (xmlNodePtr ptr, const char *node_name, const char *attribute_name)
int yaz_srw_check_content_type (Z_HTTP_Response *hres)
static void yaz_srw_decodeauth (Z_SRW_PDU *sr, Z_HTTP_Request *hreq, char *username, char *password, ODR decode)
void yaz_mk_srw_diagnostic (ODR o, Z_SRW_diagnostic *d, const char *uri, const char *message, const char *details)
void yaz_mk_std_diagnostic (ODR o, Z_SRW_diagnostic *d, int code, const char *details)
void yaz_add_srw_diagnostic_uri (ODR o, Z_SRW_diagnostic **d, int *num, const char *uri, const char *message, const char *details)
void yaz_add_srw_diagnostic (ODR o, Z_SRW_diagnostic **d, int *num, int code, const char *addinfo)
void yaz_add_sru_update_diagnostic (ODR o, Z_SRW_diagnostic **d, int *num, int code, const char *addinfo)
void yaz_mk_sru_surrogate (ODR o, Z_SRW_record *record, int pos, int code, const char *details)
static void grab_charset (ODR o, const char *content_type, char **charset)
int yaz_srw_decode (Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, Z_SOAP **soap_package, ODR decode, char **charset)
static int yaz_sru_decode_integer (ODR odr, const char *pname, const char *valstr, Odr_int **valp, Z_SRW_diagnostic **diag, int *num_diag, int min_value)
int yaz_sru_decode (Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, Z_SOAP **soap_package, ODR decode, char **charset, Z_SRW_diagnostic **diag, int *num_diag)
Z_SRW_extra_record * yaz_srw_get_extra_record (ODR o)
Z_SRW_record * yaz_srw_get_records (ODR o, int n)
Z_SRW_record * yaz_srw_get_record (ODR o)
static Z_SRW_PDU * yaz_srw_get_core_ver (ODR o, const char *version)
Z_SRW_PDU * yaz_srw_get_core_v_2_0 (ODR o)
Z_SRW_PDU * yaz_srw_get (ODR o, int which)
Z_SRW_PDU * yaz_srw_get_pdu_e (ODR o, int which, Z_SRW_PDU *req)
Z_SRW_PDU * yaz_srw_get_pdu (ODR o, int which, const char *version)
void yaz_add_name_value_int (ODR o, char **name, char **value, int *i, char *a_name, Odr_int *val)
void yaz_add_name_value_str (ODR o, char **name, char **value, int *i, char *a_name, char *val)
static int yaz_get_sru_parms (const Z_SRW_PDU *srw_pdu, ODR encode, char **name, char **value, int max_names)
int yaz_sru_get_encode (Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, ODR encode, const char *charset)
int yaz_sru_post_encode (Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, ODR encode, const char *charset)
int yaz_sru_soap_encode (Z_HTTP_Request *hreq, Z_SRW_PDU *srw_pdu, ODR odr, const char *charset)
Z_SRW_recordVersion * yaz_srw_get_record_versions (ODR odr, int num)
const char * yaz_srw_pack_to_str (int pack)
int yaz_srw_str_to_pack (const char *str)
void yaz_encode_sru_extra (Z_SRW_PDU *sr, ODR odr, const char *extra_args)

Detailed Description

Implements SRW/SRU utilities.

Definition in file srwutil.c.

Macro Definition Documentation

◆ MAX_SRU_PARAMETERS

#define MAX_SRU_PARAMETERS   30

Definition at line 22 of file srwutil.c.

Referenced by yaz_sru_get_encode(), and yaz_sru_post_encode().

Function Documentation

◆ append_extra_arg()

Z_SRW_extra_arg ** append_extra_arg ( ODR odr,
Z_SRW_extra_arg ** l,
const char * n,
const char * v )
static

◆ append_extra_arg_int()

Z_SRW_extra_arg ** append_extra_arg_int ( ODR odr,
Z_SRW_extra_arg ** l,
const char * n,
Odr_int * v )
static

◆ grab_charset()

void grab_charset ( ODR o,
const char * content_type,
char ** charset )
static

Definition at line 232 of file srwutil.c.

References grab_charset(), and odr_strdup().

Referenced by grab_charset(), and yaz_sru_decode().

◆ yaz_add_name_value_int()

void yaz_add_name_value_int ( ODR o,
char ** name,
char ** value,
int * i,
char * a_name,
Odr_int * val )

◆ yaz_add_name_value_str()

void yaz_add_name_value_str ( ODR o,
char ** name,
char ** value,
int * i,
char * a_name,
char * val )

◆ yaz_add_sru_update_diagnostic()

void yaz_add_sru_update_diagnostic ( ODR o,
Z_SRW_diagnostic ** d,
int * num,
int code,
const char * addinfo )

◆ yaz_add_srw_diagnostic()

void yaz_add_srw_diagnostic ( ODR o,
Z_SRW_diagnostic ** d,
int * num,
int code,
const char * addinfo )

◆ yaz_add_srw_diagnostic_uri()

void yaz_add_srw_diagnostic_uri ( ODR o,
Z_SRW_diagnostic ** d,
int * num,
const char * uri,
const char * message,
const char * details )

◆ yaz_decode_sru_dbpath_odr()

char * yaz_decode_sru_dbpath_odr ( ODR n,
const char * uri,
size_t len )
static

Definition at line 52 of file srwutil.c.

References odr_strdupn(), and yaz_decode_sru_dbpath_odr().

Referenced by yaz_decode_sru_dbpath_odr(), yaz_sru_decode(), and yaz_srw_decode().

◆ yaz_element_attribute_value_get()

const char * yaz_element_attribute_value_get ( xmlNodePtr ptr,
const char * node_name,
const char * attribute_name )

◆ yaz_encode_sru_dbpath_buf()

void yaz_encode_sru_dbpath_buf ( char * dst,
const char * db )

encode SRU database for HTTP path

Parameters
dstdestination buffer (should be at least strlen(db) +2 in size)
dbsource database

The resulting database (dst) includes a leading /

Definition at line 57 of file srwutil.c.

References yaz_encode_sru_dbpath_buf().

Referenced by yaz_encode_sru_dbpath_buf(), and yaz_encode_sru_dbpath_odr().

◆ yaz_encode_sru_dbpath_odr()

char * yaz_encode_sru_dbpath_odr ( ODR out,
const char * db )

encode SRU database for HTTP path

Parameters
outmemory handle for resulting encoded database string
dbsource database
Returns
encoded database path (includes leading /)

Definition at line 64 of file srwutil.c.

References odr_malloc(), yaz_encode_sru_dbpath_buf(), and yaz_encode_sru_dbpath_odr().

Referenced by yaz_encode_sru_dbpath_odr().

◆ yaz_encode_sru_extra()

void yaz_encode_sru_extra ( Z_SRW_PDU * sr,
ODR odr,
const char * extra_args )

◆ yaz_get_sru_parms()

◆ yaz_mk_sru_surrogate()

void yaz_mk_sru_surrogate ( ODR o,
Z_SRW_record * record,
int pos,
int code,
const char * details )

◆ yaz_mk_srw_diagnostic()

void yaz_mk_srw_diagnostic ( ODR o,
Z_SRW_diagnostic * d,
const char * uri,
const char * message,
const char * details )

◆ yaz_mk_std_diagnostic()

void yaz_mk_std_diagnostic ( ODR o,
Z_SRW_diagnostic * d,
int code,
const char * details )

Definition at line 161 of file srwutil.c.

References yaz_mk_srw_diagnostic(), yaz_mk_std_diagnostic(), and yaz_snprintf().

Referenced by yaz_mk_std_diagnostic().

◆ yaz_sru_decode()

◆ yaz_sru_decode_integer()

int yaz_sru_decode_integer ( ODR odr,
const char * pname,
const char * valstr,
Odr_int ** valp,
Z_SRW_diagnostic ** diag,
int * num_diag,
int min_value )
static

◆ yaz_sru_get_encode()

◆ yaz_sru_post_encode()

◆ yaz_sru_soap_encode()

◆ yaz_srw_check_content_type()

int yaz_srw_check_content_type ( Z_HTTP_Response * hres)

◆ yaz_srw_decode()

◆ yaz_srw_decodeauth()

void yaz_srw_decodeauth ( Z_SRW_PDU * sr,
Z_HTTP_Request * hreq,
char * username,
char * password,
ODR decode )
static

Look for authentication tokens in HTTP Basic parameters or in x-username/x-password parameters. Added by SH.

Definition at line 109 of file srwutil.c.

References Z_HTTP_Request::headers, odr_strdup(), Z_SRW_PDU::password, Z_SRW_PDU::username, yaz_base64decode(), yaz_srw_decodeauth(), and z_HTTP_header_lookup().

Referenced by yaz_sru_decode(), yaz_srw_decode(), and yaz_srw_decodeauth().

◆ yaz_srw_get()

Z_SRW_PDU * yaz_srw_get ( ODR o,
int which )

Definition at line 756 of file srwutil.c.

References yaz_srw_get(), and yaz_srw_get_pdu().

Referenced by yaz_solr_decode_response(), yaz_sru_decode(), and yaz_srw_get().

◆ yaz_srw_get_core_v_2_0()

Z_SRW_PDU * yaz_srw_get_core_v_2_0 ( ODR o)

◆ yaz_srw_get_core_ver()

◆ yaz_srw_get_extra_record()

◆ yaz_srw_get_pdu()

◆ yaz_srw_get_pdu_e()

◆ yaz_srw_get_record()

Z_SRW_record * yaz_srw_get_record ( ODR o)

Definition at line 734 of file srwutil.c.

References yaz_srw_get_record(), and yaz_srw_get_records().

Referenced by srw_bend_update(), yaz_srw_get_record(), and yaz_ucp_codec().

◆ yaz_srw_get_record_versions()

Z_SRW_recordVersion * yaz_srw_get_record_versions ( ODR odr,
int num )

◆ yaz_srw_get_records()

◆ yaz_srw_pack_to_str()

const char * yaz_srw_pack_to_str ( int pack)

◆ yaz_srw_str_to_pack()