process_search

in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]


  METHOD process_search.
    TYPES lty_result TYPE c LENGTH 20.

    DATA: lo_contrep TYPE REF TO data,
          lo_docid   TYPE REF TO data,
          lo_compid  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_cnt           TYPE i.

    DATA ls_result        TYPE lty_result.

    DATA lt_results       TYPE STANDARD TABLE OF lty_result.

    FIELD-SYMBOLS: <lv_contrep> TYPE c,
                   <lv_docid>   TYPE c,
                   <lv_compid>  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      = 'compId'
                               iv_mandatory = 'X'
                     IMPORTING er_value     = lo_compid ).
    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_compid->*  TO <lv_compid>.
    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.

    doc_search( EXPORTING iv_crep_id        = <lv_contrep>
                          iv_doc_id         = <lv_docid>
                          iv_comp_id        = <lv_compid>
                          iv_offset         = lv_fromoffset
                          iv_to_offset      = lv_tooffset
                          iv_case_sensitive = lv_casesensitive
                          iv_num_results    = lv_numresults
                          iv_signature      = lv_signature
                          iv_security       = space
                          iv_raw_pattern    = <lv_pattern>
                IMPORTING et_result         = lt_results ).

    IF gs_error IS NOT INITIAL.
      RETURN.
    ENDIF.

    DESCRIBE TABLE lt_results LINES lv_cnt.
    ls_result = lv_cnt.
    CONDENSE ls_result NO-GAPS.
    CONCATENATE ls_result ';' INTO gv_body.

    LOOP AT lt_results INTO ls_result.
      CONDENSE ls_result NO-GAPS.
      CONCATENATE gv_body ls_result ';' INTO gv_body.
    ENDLOOP.

    go_server->response->set_status( code   = 200
                                     reason = 'OK' ).