in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]
METHOD process_rep_certset.
DATA lo_content TYPE REF TO data.
DATA lv_pversion TYPE string ##NEEDED.
DATA lv_cdata TYPE string.
DATA lv_active TYPE c LENGTH 1.
DATA lv_line TYPE string.
DATA lv_key TYPE string.
DATA lv_value TYPE string.
DATA ls_racl TYPE crep_racl.
DATA lt_racls TYPE STANDARD TABLE OF crep_racl.
FIELD-SYMBOLS <lv_contentrep> TYPE c.
DATA: BEGIN OF ls_info,
subject TYPE string,
issuer TYPE string,
serialno TYPE string,
valid_from TYPE string,
valid_until TYPE string,
fingerprint TYPE string,
END OF ls_info.
get_parameter_c( EXPORTING iv_name = 'contRep '
iv_mandatory = 's'
IMPORTING er_value = lo_content ).
ASSIGN lo_content->* TO <lv_contentrep>.
lv_pversion = get_parameter( iv_name = 'pVersion'
iv_mandatory = 'X' ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
check_authority( iv_write = 1 ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
check_parameter_consistence( ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
lv_cdata = go_server->request->get_cdata( ).
lv_active = 'X'.
WHILE lv_cdata <> space.
SPLIT lv_cdata AT gv_nl INTO lv_line lv_cdata.
IF lv_line IS INITIAL.
IF lv_active IS INITIAL.
IF lv_cdata IS INITIAL.
EXIT.
ENDIF.
gs_error-status_code = 400.
ENDIF.
lv_active = space.
ENDIF.
CLEAR ls_info.
WHILE lv_line <> space.
SPLIT lv_line AT '="' INTO lv_key lv_line.
SPLIT lv_line AT '";' INTO lv_value lv_line.
CASE lv_key.
WHEN 'subject'.
ls_info-subject = lv_value.
WHEN 'issuer'.
ls_info-issuer = lv_value.
WHEN 'serialNumber'.
ls_info-serialno = lv_value.
WHEN 'notBefore'.
ls_info-valid_from = lv_value.
WHEN 'notAfter'.
ls_info-valid_until = lv_value.
WHEN 'keyInfo'.
ls_info-fingerprint = lv_value.
WHEN OTHERS.
gs_error-status_code = 400.
ENDCASE.
ENDWHILE.
IF ls_info-fingerprint IS INITIAL.
* gs_error-status_code = 400.
ENDIF.
ls_racl-crep_id = <lv_contentrep>.
ls_racl-fingerp = ls_info-fingerprint.
ls_racl-active = lv_active.
APPEND ls_racl TO lt_racls.
ENDWHILE.
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
CALL FUNCTION 'SCMS_RACL_SET'
EXPORTING
contrep = <lv_contentrep>
TABLES
fingerprints = lt_racls
EXCEPTIONS
authority_missing = 1
OTHERS = 2.
IF sy-subrc <> 0.
IF sy-subrc = 1.
sys_error_set( ).
gs_error-status_code = 401.
gs_error-set_authenticate = 'X'.
ELSE.
sys_error_set( ).
ENDIF.
ENDIF.
go_server->response->set_status( code = 200
reason = 'OK' ).