lcl_login_manager to global

This commit is contained in:
Christian Günter 2018-01-08 20:27:17 +01:00
parent 0c916d48f1
commit 956a15b5fa
6 changed files with 175 additions and 125 deletions

View File

@ -0,0 +1,139 @@
CLASS zcl_abapgit_login_manager DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS:
load
IMPORTING
!iv_uri TYPE string
!ii_client TYPE REF TO if_http_client OPTIONAL
RETURNING
VALUE(rv_authorization) TYPE string
RAISING
zcx_abapgit_exception,
save
IMPORTING
!iv_uri TYPE string
!ii_client TYPE REF TO if_http_client
RAISING
zcx_abapgit_exception,
clear,
set
IMPORTING
!iv_uri TYPE string
!iv_username TYPE string
!iv_password TYPE string
RETURNING
VALUE(rv_auth) TYPE string
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
TYPES:
BEGIN OF ty_auth,
uri TYPE string,
authorization TYPE string,
END OF ty_auth .
CLASS-DATA:
gt_auth TYPE TABLE OF ty_auth WITH DEFAULT KEY.
CLASS-METHODS:
append
IMPORTING
!iv_uri TYPE string
!iv_auth TYPE string
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS zcl_abapgit_login_manager IMPLEMENTATION.
METHOD append.
FIELD-SYMBOLS: <ls_auth> LIKE LINE OF gt_auth.
READ TABLE gt_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri )
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
APPEND INITIAL LINE TO gt_auth ASSIGNING <ls_auth>.
<ls_auth>-uri = zcl_abapgit_url=>host( iv_uri ).
<ls_auth>-authorization = iv_auth.
ENDIF.
ENDMETHOD.
METHOD clear.
CLEAR gt_auth.
ENDMETHOD.
METHOD load.
DATA: ls_auth LIKE LINE OF gt_auth.
READ TABLE gt_auth INTO ls_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri ).
IF sy-subrc = 0.
rv_authorization = ls_auth-authorization.
IF NOT ii_client IS INITIAL.
ii_client->request->set_header_field(
name = 'authorization'
value = ls_auth-authorization ). "#EC NOTEXT
ii_client->propertytype_logon_popup = ii_client->co_disabled.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD save.
DATA: lv_auth TYPE string.
lv_auth = ii_client->request->get_header_field( 'authorization' ). "#EC NOTEXT
IF NOT lv_auth IS INITIAL.
append( iv_uri = iv_uri
iv_auth = lv_auth ).
ENDIF.
ENDMETHOD.
METHOD set.
DATA: lv_concat TYPE string.
ASSERT NOT iv_uri IS INITIAL.
IF iv_username IS INITIAL OR iv_password IS INITIAL.
RETURN.
ENDIF.
CONCATENATE iv_username ':' iv_password INTO lv_concat.
rv_auth = cl_http_utility=>if_http_utility~encode_base64( lv_concat ).
CONCATENATE 'Basic' rv_auth INTO rv_auth
SEPARATED BY space ##NO_TEXT.
append( iv_uri = iv_uri
iv_auth = rv_auth ).
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_LOGIN_MANAGER</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Login Manager</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
<DESCRIPTIONS>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_LOGIN_MANAGER</CLSNAME>
<CMPNAME>TY_AUTH</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>TY_AUTH</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -221,7 +221,7 @@ CLASS lcl_background IMPLEMENTATION.
lv_repo_name = lo_repo->get_name( ).
WRITE: / <ls_list>-method, lv_repo_name.
lcl_login_manager=>set(
zcl_abapgit_login_manager=>set(
iv_uri = lo_repo->get_url( )
iv_username = <ls_list>-username
iv_password = <ls_list>-password ).

View File

@ -480,7 +480,7 @@ CLASS lcl_http IMPLEMENTATION.
" Disable internal auth dialog (due to its unclarity)
li_client->propertytype_logon_popup = if_http_client=>co_disabled.
lcl_login_manager=>load( iv_uri = iv_url
zcl_abapgit_login_manager=>load( iv_uri = iv_url
ii_client = li_client ).
ro_client->send_receive( ).
@ -493,7 +493,7 @@ CLASS lcl_http IMPLEMENTATION.
ro_client->check_http_200( ).
IF lv_scheme <> gc_scheme-digest.
lcl_login_manager=>save( iv_uri = iv_url
zcl_abapgit_login_manager=>save( iv_uri = iv_url
ii_client = li_client ).
ENDIF.

View File

@ -1149,18 +1149,18 @@ ENDCLASS.
CLASS ltcl_login_manager IMPLEMENTATION.
METHOD setup.
lcl_login_manager=>clear( ).
zcl_abapgit_login_manager=>clear( ).
ENDMETHOD.
METHOD teardown.
lcl_login_manager=>clear( ).
zcl_abapgit_login_manager=>clear( ).
ENDMETHOD.
METHOD encoding.
DATA: lv_auth TYPE string.
lv_auth = lcl_login_manager=>set(
lv_auth = zcl_abapgit_login_manager=>set(
iv_uri = 'https://github.com/larshp/abapGit.git'
iv_username = c_username
iv_password = c_password ).
@ -1180,13 +1180,13 @@ CLASS ltcl_login_manager IMPLEMENTATION.
lv_auth2 TYPE string.
lcl_login_manager=>set(
zcl_abapgit_login_manager=>set(
iv_uri = lc_github1
iv_username = c_username
iv_password = c_password ).
lv_auth1 = lcl_login_manager=>load( lc_github1 ).
lv_auth2 = lcl_login_manager=>load( lc_github2 ).
lv_auth1 = zcl_abapgit_login_manager=>load( lc_github1 ).
lv_auth2 = zcl_abapgit_login_manager=>load( lc_github2 ).
cl_abap_unit_assert=>assert_equals(
act = lv_auth1

View File

@ -2,122 +2,6 @@
*& Include ZABAPGIT_UTIL
*&---------------------------------------------------------------------*
CLASS lcl_login_manager DEFINITION FINAL.
PUBLIC SECTION.
CLASS-METHODS:
load
IMPORTING iv_uri TYPE string
ii_client TYPE REF TO if_http_client OPTIONAL
RETURNING VALUE(rv_authorization) TYPE string
RAISING zcx_abapgit_exception,
save
IMPORTING iv_uri TYPE string
ii_client TYPE REF TO if_http_client
RAISING zcx_abapgit_exception,
clear,
set
IMPORTING iv_uri TYPE string
iv_username TYPE string
iv_password TYPE string
RETURNING VALUE(rv_auth) TYPE string
RAISING zcx_abapgit_exception.
PRIVATE SECTION.
TYPES: BEGIN OF ty_auth,
uri TYPE string,
authorization TYPE string,
END OF ty_auth.
CLASS-DATA: gt_auth TYPE TABLE OF ty_auth WITH DEFAULT KEY.
CLASS-METHODS:
append
IMPORTING iv_uri TYPE string
iv_auth TYPE string
RAISING zcx_abapgit_exception.
ENDCLASS.
CLASS lcl_login_manager IMPLEMENTATION.
METHOD clear.
CLEAR gt_auth.
ENDMETHOD.
METHOD set.
DATA: lv_concat TYPE string.
ASSERT NOT iv_uri IS INITIAL.
IF iv_username IS INITIAL OR iv_password IS INITIAL.
RETURN.
ENDIF.
CONCATENATE iv_username ':' iv_password INTO lv_concat.
rv_auth = cl_http_utility=>if_http_utility~encode_base64( lv_concat ).
CONCATENATE 'Basic' rv_auth INTO rv_auth
SEPARATED BY space ##NO_TEXT.
append( iv_uri = iv_uri
iv_auth = rv_auth ).
ENDMETHOD.
METHOD load.
DATA: ls_auth LIKE LINE OF gt_auth.
READ TABLE gt_auth INTO ls_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri ).
IF sy-subrc = 0.
rv_authorization = ls_auth-authorization.
IF NOT ii_client IS INITIAL.
ii_client->request->set_header_field(
name = 'authorization'
value = ls_auth-authorization ). "#EC NOTEXT
ii_client->propertytype_logon_popup = ii_client->co_disabled.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD save.
DATA: lv_auth TYPE string.
lv_auth = ii_client->request->get_header_field( 'authorization' ). "#EC NOTEXT
IF NOT lv_auth IS INITIAL.
append( iv_uri = iv_uri
iv_auth = lv_auth ).
ENDIF.
ENDMETHOD.
METHOD append.
FIELD-SYMBOLS: <ls_auth> LIKE LINE OF gt_auth.
READ TABLE gt_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri )
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
APPEND INITIAL LINE TO gt_auth ASSIGNING <ls_auth>.
<ls_auth>-uri = zcl_abapgit_url=>host( iv_uri ).
<ls_auth>-authorization = iv_auth.
ENDIF.
ENDMETHOD.
ENDCLASS.
CLASS lcl_progress DEFINITION FINAL.
PUBLIC SECTION.