mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Introduce separate proxy configuration class
Introduce separate proxy configuration class and userexit to manipulate proxy settings
This commit is contained in:
parent
a228f701a6
commit
a435191564
|
@ -48,6 +48,7 @@ INCLUDE zabapgit_folder_logic.
|
|||
INCLUDE zabapgit_requirements.
|
||||
INCLUDE zabapgit_authorizations.
|
||||
INCLUDE zabapgit_exit.
|
||||
INCLUDE zabapgit_proxy.
|
||||
|
||||
INCLUDE zabapgit_stage.
|
||||
INCLUDE zabapgit_git_helpers.
|
||||
|
|
|
@ -446,17 +446,18 @@ CLASS lcl_2fa_github_auth IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD is_2fa_required.
|
||||
DATA: li_client TYPE REF TO if_http_client,
|
||||
lo_settings TYPE REF TO lcl_settings.
|
||||
|
||||
lo_settings = lcl_app=>settings( )->read( ).
|
||||
DATA: li_client TYPE REF TO if_http_client,
|
||||
lo_proxy TYPE REF TO lcl_proxy_configuration.
|
||||
|
||||
lo_proxy = lcl_app=>proxy( ).
|
||||
|
||||
cl_http_client=>create_by_url(
|
||||
EXPORTING
|
||||
url = gc_github_api_url
|
||||
ssl_id = 'ANONYM'
|
||||
proxy_host = lo_settings->get_proxy_url( )
|
||||
proxy_service = lo_settings->get_proxy_port( )
|
||||
proxy_host = lo_proxy->get_proxy_url( )
|
||||
proxy_service = lo_proxy->get_proxy_port( )
|
||||
IMPORTING
|
||||
client = li_client
|
||||
EXCEPTIONS
|
||||
|
|
|
@ -7,6 +7,7 @@ CLASS lcl_persistence_user DEFINITION DEFERRED.
|
|||
CLASS lcl_repo_srv DEFINITION DEFERRED.
|
||||
CLASS lcl_persistence_db DEFINITION DEFERRED.
|
||||
CLASS lcl_persist_settings DEFINITION DEFERRED.
|
||||
CLASS lcl_proxy_configuration DEFINITION DEFERRED.
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_app DEFINITION
|
||||
|
@ -32,11 +33,15 @@ CLASS lcl_app DEFINITION FINAL.
|
|||
CLASS-METHODS settings
|
||||
RETURNING VALUE(ro_settings) TYPE REF TO lcl_persist_settings.
|
||||
|
||||
CLASS-METHODS proxy
|
||||
RETURNING VALUE(ro_proxy) TYPE REF TO lcl_proxy_configuration.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA: go_gui TYPE REF TO lcl_gui,
|
||||
go_current_user TYPE REF TO lcl_persistence_user,
|
||||
go_db TYPE REF TO lcl_persistence_db,
|
||||
go_repo_srv TYPE REF TO lcl_repo_srv,
|
||||
go_settings TYPE REF TO lcl_persist_settings.
|
||||
go_settings TYPE REF TO lcl_persist_settings,
|
||||
go_proxy TYPE REF TO lcl_proxy_configuration.
|
||||
|
||||
ENDCLASS. "lcl_app
|
||||
|
|
|
@ -56,4 +56,11 @@ CLASS lcl_app IMPLEMENTATION.
|
|||
ro_settings = go_settings.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD proxy.
|
||||
IF go_proxy IS NOT BOUND.
|
||||
CREATE OBJECT go_proxy.
|
||||
ENDIF.
|
||||
ro_proxy = go_proxy.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_app
|
||||
|
|
|
@ -8,7 +8,17 @@ INTERFACE lif_exit.
|
|||
change_local_host
|
||||
CHANGING ct_hosts TYPE zif_abapgit_definitions=>ty_icm_sinfo2_tt,
|
||||
allow_sap_objects
|
||||
RETURNING VALUE(rv_allowed) TYPE abap_bool.
|
||||
RETURNING VALUE(rv_allowed) TYPE abap_bool,
|
||||
change_proxy_url
|
||||
IMPORTING iv_repo_url TYPE csequence
|
||||
CHANGING c_proxy_url TYPE string,
|
||||
change_proxy_port
|
||||
IMPORTING iv_repo_url TYPE csequence
|
||||
CHANGING c_proxy_port TYPE string,
|
||||
change_proxy_authentication
|
||||
IMPORTING iv_repo_url TYPE csequence
|
||||
CHANGING c_proxy_authentication TYPE abap_bool.
|
||||
|
||||
|
||||
ENDINTERFACE.
|
||||
|
||||
|
@ -48,4 +58,20 @@ CLASS lcl_exit IMPLEMENTATION.
|
|||
rv_allowed = abap_false.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD lif_exit~change_proxy_url.
|
||||
* default behavior change nothing
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_exit~change_proxy_port.
|
||||
* default behavior change nothing
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_exit~change_proxy_authentication.
|
||||
* default behavior change nothing
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -414,21 +414,20 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
|
||||
METHOD create_by_url.
|
||||
|
||||
DATA: lv_uri TYPE string,
|
||||
lv_scheme TYPE string,
|
||||
li_client TYPE REF TO if_http_client,
|
||||
lo_settings TYPE REF TO lcl_settings,
|
||||
lv_text TYPE string.
|
||||
DATA: lv_uri TYPE string,
|
||||
lv_scheme TYPE string,
|
||||
li_client TYPE REF TO if_http_client,
|
||||
lo_proxy_configuration TYPE REF TO lcl_proxy_configuration,
|
||||
lv_text TYPE string.
|
||||
|
||||
|
||||
lo_settings = lcl_app=>settings( )->read( ).
|
||||
lo_proxy_configuration = lcl_app=>proxy( ).
|
||||
|
||||
cl_http_client=>create_by_url(
|
||||
EXPORTING
|
||||
url = lcl_url=>host( iv_url )
|
||||
ssl_id = 'ANONYM'
|
||||
proxy_host = lo_settings->get_proxy_url( )
|
||||
proxy_service = lo_settings->get_proxy_port( )
|
||||
proxy_host = lo_proxy_configuration->get_proxy_url( iv_url )
|
||||
proxy_service = lo_proxy_configuration->get_proxy_port( iv_url )
|
||||
IMPORTING
|
||||
client = li_client
|
||||
EXCEPTIONS
|
||||
|
@ -449,7 +448,7 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( lv_text ).
|
||||
ENDIF.
|
||||
|
||||
IF lo_settings->get_proxy_authentication( ) = abap_true.
|
||||
IF lo_proxy_configuration->get_proxy_authentication( iv_url ) = abap_true.
|
||||
lcl_proxy_auth=>run( li_client ).
|
||||
ENDIF.
|
||||
|
||||
|
@ -502,7 +501,7 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
|
||||
DATA: lv_host TYPE string,
|
||||
lt_list TYPE zif_abapgit_definitions=>ty_icm_sinfo2_tt,
|
||||
li_exit TYPE ref to lif_exit.
|
||||
li_exit TYPE REF TO lif_exit.
|
||||
|
||||
CALL FUNCTION 'ICM_GET_INFO2'
|
||||
TABLES
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
*& Include ZABAPGIT_PERSISTENCE
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
INTERFACE lif_exit DEFERRED.
|
||||
CLASS lcl_settings DEFINITION DEFERRED.
|
||||
CLASS lcl_exit DEFINITION DEFERRED.
|
||||
|
||||
CLASS lcl_persist_migrate DEFINITION FINAL.
|
||||
|
||||
|
|
81
src/zabapgit_proxy.prog.abap
Normal file
81
src/zabapgit_proxy.prog.abap
Normal file
|
@ -0,0 +1,81 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include zabapgit_proxy
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_proxy_configuration DEFINITION CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor,
|
||||
|
||||
get_proxy_url
|
||||
IMPORTING
|
||||
iv_repo_url TYPE csequence OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_proxy_url) TYPE string,
|
||||
|
||||
get_proxy_port
|
||||
IMPORTING
|
||||
iv_repo_url TYPE csequence OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_port) TYPE string,
|
||||
|
||||
get_proxy_authentication
|
||||
IMPORTING
|
||||
iv_repo_url TYPE csequence OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_auth) TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_settings TYPE REF TO lcl_settings,
|
||||
mi_exit TYPE REF TO lif_exit.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_proxy_configuration IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
mo_settings = lcl_app=>settings( )->read( ).
|
||||
|
||||
mi_exit = lcl_exit=>get_instance( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_proxy_url.
|
||||
|
||||
rv_proxy_url = mo_settings->get_proxy_url( ).
|
||||
|
||||
mi_exit->change_proxy_url(
|
||||
EXPORTING
|
||||
iv_repo_url = iv_repo_url
|
||||
CHANGING
|
||||
c_proxy_url = rv_proxy_url ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_proxy_port.
|
||||
|
||||
rv_port = mo_settings->get_proxy_port( ).
|
||||
|
||||
mi_exit->change_proxy_port(
|
||||
EXPORTING
|
||||
iv_repo_url = iv_repo_url
|
||||
CHANGING
|
||||
c_proxy_port = rv_port ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_proxy_authentication.
|
||||
|
||||
rv_auth = mo_settings->get_proxy_authentication( ).
|
||||
|
||||
mi_exit->change_proxy_authentication(
|
||||
EXPORTING
|
||||
iv_repo_url = iv_repo_url
|
||||
CHANGING
|
||||
c_proxy_authentication = rv_auth ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
25
src/zabapgit_proxy.prog.xml
Normal file
25
src/zabapgit_proxy.prog.xml
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_PROXY</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL>S</DBAPL>
|
||||
<DBNA>D$</DBNA>
|
||||
<SUBC>I</SUBC>
|
||||
<FIXPT>X</FIXPT>
|
||||
<LDBNAME>D$S</LDBNAME>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>ZABAPGIT_PROXY</ENTRY>
|
||||
<LENGTH>14</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user