in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]
METHOD attr_search.
TYPES:
BEGIN OF lty_off,
pos TYPE i,
END OF lty_off,
ltt_off TYPE STANDARD TABLE OF lty_off.
DATA: lo_gcs TYPE REF TO zgoog_cl_storage_cont_repo_v1,
lo_abap_sdk_excp TYPE REF TO /goog/cx_sdk.
DATA: lv_p_bucket TYPE string,
lv_case_sensitive TYPE c LENGTH 1,
lv_codepage TYPE abap_encoding,
lv_offset TYPE i,
lv_max_offset TYPE i,
lv_pattern TYPE xstring,
lv_upper TYPE xstring,
lv_lower TYPE xstring,
lv_pos TYPE i,
lv_p_object TYPE string,
lv_ret_code TYPE i,
lv_err_text TYPE string,
lv_data_buffer TYPE xstring,
lv_descr_buffer TYPE xstring,
lv_msg TYPE string,
lv_from TYPE i,
lv_to TYPE i,
lv_reverse TYPE c LENGTH 1.
DATA: ls_off TYPE lty_off.
DATA: lt_off TYPE ltt_off.
load_goog_repo_config( iv_crep_id ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
lv_p_bucket = gs_repo_config.
TRY.
CREATE OBJECT lo_gcs EXPORTING iv_key_name = gs_repo_config-keyname.
lo_gcs->add_common_qparam( iv_name = 'alt'
iv_value = 'media' ).
lv_p_object = iv_doc_id && '/' && iv_doc_id && '-' && 'data'.
lo_gcs->get_objects( EXPORTING iv_p_bucket = lv_p_bucket
iv_p_object = lv_p_object
IMPORTING ev_ret_code = lv_ret_code
ev_err_text = lv_err_text
es_raw = lv_data_buffer ).
IF lo_gcs->is_success( lv_ret_code ) <> abap_true.
set_error( iv_code = lv_ret_code
iv_text = lv_err_text ).
RETURN.
ENDIF.
lv_p_object = iv_doc_id && '/' && iv_doc_id && '-' && 'descr'.
lo_gcs->get_objects( EXPORTING iv_p_bucket = lv_p_bucket
iv_p_object = lv_p_object
IMPORTING ev_ret_code = lv_ret_code
ev_err_text = lv_err_text
es_raw = lv_descr_buffer ).
IF lo_gcs->is_success( lv_ret_code ) <> abap_true.
set_error( iv_code = lv_ret_code
iv_text = lv_err_text ).
RETURN.
ENDIF.
CATCH /goog/cx_sdk INTO lo_abap_sdk_excp.
lv_msg = lo_abap_sdk_excp->get_text( ).
set_error( iv_code = 400
iv_text = lv_msg ).
RETURN.
ENDTRY.
IF iv_from_offset > 0 AND iv_from_offset <= iv_to_offset OR iv_to_offset < 0.
lv_from = iv_from_offset.
lv_to = lv_offset.
lv_reverse = space.
ELSE.
lv_from = lv_offset.
lv_to = iv_from_offset.
lv_reverse = 'X'.
ENDIF.
attr_search_inner( EXPORTING iv_from = lv_from
iv_to = lv_to
iv_case_sensitive = iv_case_sensitive
iv_reverse = lv_reverse
iv_data_buffer = lv_data_buffer
iv_descr_buffer = lv_descr_buffer
iv_pattern = iv_pattern
CHANGING ct_result = et_result ).