in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]
METHOD process_attrsearch.
TYPES lty_result TYPE c LENGTH 20.
DATA:lo_contrep TYPE REF TO data,
lo_docid TYPE REF TO data,
lo_pattern TYPE REF TO data.
DATA: lv_fromoffset TYPE i,
lv_tooffset TYPE i,
lv_numresults TYPE i,
lv_casesens TYPE string,
lv_pversion TYPE string ##NEEDED,
lv_seckey TYPE string,
lv_smand TYPE c LENGTH 1,
lv_signature TYPE c LENGTH 1,
lv_casesensitive TYPE c LENGTH 1,
lv_pos TYPE string,
lv_length TYPE string,
lv_cnt TYPE i.
DATA: ls_result TYPE scms_reatr.
DATA: lt_results TYPE STANDARD TABLE OF scms_reatr.
FIELD-SYMBOLS: <lv_contrep> TYPE c,
<lv_docid> TYPE c,
<lv_pattern> TYPE c.
get_parameter_c( EXPORTING iv_name = 'contRep'
iv_mandatory = 'S'
IMPORTING er_value = lo_contrep ).
get_parameter_c( EXPORTING iv_name = 'docId'
iv_mandatory = 'S'
IMPORTING er_value = lo_docid ).
get_parameter_c( EXPORTING iv_name = 'pattern'
iv_mandatory = 'X'
iv_raw_mode = 'X'
IMPORTING er_value = lo_pattern ).
ASSIGN lo_contrep->* TO <lv_contrep>.
ASSIGN lo_docid->* TO <lv_docid>.
ASSIGN lo_pattern->* TO <lv_pattern>.
lv_fromoffset = get_parameter_i( iv_name = 'fromOffset'
iv_default = 0 ).
lv_tooffset = get_parameter_i( iv_name = 'toOffset'
iv_default = -1 ).
lv_numresults = get_parameter_i( iv_name = 'numResults'
iv_default = 1 ).
lv_casesens = get_parameter( iv_name = 'caseSensitive'
iv_default = 'n' ).
lv_pversion = get_parameter( iv_name = 'pVersion'
iv_mandatory = 'X' ).
lv_seckey = get_parameter( iv_name = 'secKey' ).
IF lv_seckey IS NOT INITIAL.
lv_smand = 'S'.
get_parameter( iv_name = 'accessMode'
iv_mandatory = lv_smand ).
get_parameter( iv_name = 'authId'
iv_mandatory = lv_smand ).
get_parameter( iv_name = 'expiration'
iv_mandatory = lv_smand ).
ENDIF.
check_parameter_consistence( ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
lv_signature = check_signature( iv_docprot = 'r' ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
IF lv_casesens = 'n'.
lv_casesensitive = ' '.
ELSEIF lv_casesens = 'y'.
lv_casesensitive = 'X'.
ELSE.
gs_error-status_code = 400.
ENDIF.
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
attr_search(
EXPORTING
iv_crep_id = <lv_contrep>
iv_doc_id = <lv_docid>
iv_from_offset = lv_fromoffset
iv_to_offset = lv_tooffset
iv_case_sensitive = lv_casesensitive
iv_num_results = lv_numresults
iv_signature = lv_signature
iv_security = ' '
iv_pattern = <lv_pattern>
IMPORTING
et_result = lt_results
).
DESCRIBE TABLE lt_results LINES lv_cnt.
gv_body = lv_cnt.
CONDENSE gv_body NO-GAPS.
CONCATENATE gv_body ';' INTO gv_body.
LOOP AT lt_results INTO ls_result.
lv_pos = ls_result-pos.
lv_length = ls_result-length.
CONDENSE lv_pos NO-GAPS.
CONDENSE lv_length NO-GAPS.
CONCATENATE gv_body lv_pos ';' lv_length ';' INTO gv_body.
ENDLOOP.
go_server->response->set_status( code = 200
reason = 'OK' ).