in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]
METHOD process_rep_certget.
DATA lo_contrep TYPE REF TO data.
DATA lv_pversion TYPE string ##NEEDED.
DATA lv_newcerts TYPE c LENGTH 1.
DATA lt_racls TYPE STANDARD TABLE OF crep_racl.
DATA ls_crep_http TYPE crep_http.
DATA lv_security TYPE string.
DATA ls_racl TYPE crep_racl.
DATA lv_fingerprint TYPE string.
DATA lv_subject TYPE string.
DATA lv_issuer TYPE string.
DATA lv_serialno TYPE string.
DATA lv_valid_since TYPE string.
DATA lv_valid_until TYPE string.
DATA lv_certificate TYPE xstring.
DATA lv_cert64 TYPE string.
FIELD-SYMBOLS <lv_contentrep> TYPE c.
get_parameter_c( EXPORTING iv_name = 'contRep '
iv_mandatory = 's'
IMPORTING er_value = lo_contrep ).
ASSIGN lo_contrep->* TO <lv_contentrep>.
lv_pversion = get_parameter( iv_name = 'pVersion'
iv_mandatory = 'X' ).
IF gv_command = 'getCert'.
lv_newcerts = space.
ELSE.
check_authority( iv_read = 1 ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
lv_newcerts = get_parameter_b( iv_name = 'newCerts'
iv_mandatory = 'X' ).
ENDIF.
check_parameter_consistence( ).
IF gs_error IS NOT INITIAL.
RETURN.
ENDIF.
CALL FUNCTION 'SCMS_RACL_GET'
EXPORTING
contrep = <lv_contentrep>
TABLES
fingerprints = lt_racls.
go_server->response->set_header_field( name = 'Content-Type'
value = 'text/plain' ) ##NO_TEXT.
IF gv_command = 'getCert'.
PERFORM crep_select IN PROGRAM saplscms_url USING gv_mandt
<lv_contentrep>
CHANGING ls_crep_http.
IF ls_crep_http-http_nosig = 'X'.
lv_security = '0'.
ELSE.
lv_security = '1'.
ENDIF.
body_add_field( iv_name = 'security'
iv_value = lv_security ).
CONCATENATE gv_body gv_nl INTO gv_body.
ENDIF.
LOOP AT lt_racls INTO ls_racl WHERE active <> lv_newcerts. "#EC CI_STDSEQ
lv_fingerprint = ls_racl-fingerp.
CALL FUNCTION 'SCMS_RACL_INFO'
EXPORTING
fingerprint = lv_fingerprint
IMPORTING
subject = lv_subject
issuer = lv_issuer
serialno = lv_serialno
valid_since = lv_valid_since
valid_until = lv_valid_until
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
body_add_field( iv_name = 'subject'
iv_value = lv_subject ).
body_add_field( iv_name = 'issuer'
iv_value = lv_issuer ).
body_add_field( iv_name = 'serialNumber'
iv_value = lv_serialno ).
body_add_field( iv_name = 'notBefore'
iv_value = lv_valid_since ).
body_add_field( iv_name = 'notAfter'
iv_value = lv_valid_until ).
body_add_field( iv_name = 'keyInfo'
iv_value = lv_fingerprint ).
IF gv_command = 'getCert'.
CALL FUNCTION 'SCMS_CERT_GET'
EXPORTING
fingerprint = lv_fingerprint
IMPORTING
data = lv_certificate
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
lv_cert64 = lv_certificate.
body_add_field( iv_name = 'certificate'
iv_value = lv_cert64 ).
ENDIF.
ENDIF.
CONCATENATE gv_body gv_nl INTO gv_body.
ENDLOOP.
go_server->response->set_status( code = 200
reason = 'OK' ).