Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | CLASS zcl_abapgit_http_agent DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_http_agent . CLASS-METHODS create RETURNING VALUE(ri_instance) TYPE REF TO zif_abapgit_http_agent . METHODS constructor. PROTECTED SECTION. PRIVATE SECTION. DATA mo_global_headers TYPE REF TO zcl_abapgit_string_map. CLASS-METHODS attach_payload IMPORTING ii_request TYPE REF TO if_http_request iv_payload TYPE any RAISING zcx_abapgit_exception. ENDCLASS. CLASS ZCL_ABAPGIT_HTTP_AGENT IMPLEMENTATION. METHOD attach_payload. DATA lo_type TYPE REF TO cl_abap_typedescr. lo_type = cl_abap_typedescr=>describe_by_data( iv_payload ). IF lo_type->type_kind = cl_abap_typedescr=>typekind_xstring. ii_request->set_data( iv_payload ). ELSEIF lo_type->type_kind = cl_abap_typedescr=>typekind_string. ii_request->set_cdata( iv_payload ). ELSE. zcx_abapgit_exception=>raise( |Unexpected payload type { lo_type->absolute_name }| ). ENDIF. ENDMETHOD. METHOD constructor. CREATE OBJECT mo_global_headers. ENDMETHOD. METHOD create. CREATE OBJECT ri_instance TYPE zcl_abapgit_http_agent. ENDMETHOD. METHOD zif_abapgit_http_agent~global_headers. ro_global_headers = mo_global_headers. ENDMETHOD. METHOD zif_abapgit_http_agent~request. DATA li_client TYPE REF TO if_http_client. DATA lo_proxy_configuration TYPE REF TO zcl_abapgit_proxy_config. DATA lv_code TYPE i. DATA lv_message TYPE string. FIELD-SYMBOLS <ls_entry> LIKE LINE OF io_query->mt_entries. CREATE OBJECT lo_proxy_configuration. cl_http_client=>create_by_url( EXPORTING url = iv_url ssl_id = zcl_abapgit_exit=>get_instance( )->get_ssl_id( ) proxy_host = lo_proxy_configuration->get_proxy_url( iv_url ) proxy_service = lo_proxy_configuration->get_proxy_port( iv_url ) IMPORTING client = li_client ). li_client->request->set_version( if_http_request=>co_protocol_version_1_1 ). li_client->request->set_method( iv_method ). IF io_query IS BOUND. LOOP AT io_query->mt_entries ASSIGNING <ls_entry>. li_client->request->set_form_field( name = <ls_entry>-k value = <ls_entry>-v ). ENDLOOP. ENDIF. LOOP AT mo_global_headers->mt_entries ASSIGNING <ls_entry>. li_client->request->set_header_field( name = to_lower( <ls_entry>-k ) value = <ls_entry>-v ). ENDLOOP. IF io_headers IS BOUND. LOOP AT io_headers->mt_entries ASSIGNING <ls_entry>. li_client->request->set_header_field( name = to_lower( <ls_entry>-k ) value = <ls_entry>-v ). ENDLOOP. ENDIF. IF iv_method = zif_abapgit_http_agent=>c_methods-post OR iv_method = zif_abapgit_http_agent=>c_methods-put OR iv_method = zif_abapgit_http_agent=>c_methods-patch. attach_payload( ii_request = li_client->request iv_payload = iv_payload ). ENDIF. li_client->send( EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 http_invalid_timeout = 4 OTHERS = 5 ). IF sy-subrc = 0. li_client->receive( EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 OTHERS = 4 ). ENDIF. IF sy-subrc <> 0. li_client->get_last_error( IMPORTING code = lv_code message = lv_message ). zcx_abapgit_exception=>raise( |HTTP error: [{ lv_code }] { lv_message }| ). ENDIF. ri_response = lcl_http_response=>create( li_client ). ENDMETHOD. ENDCLASS. |