background mode, close #236

just needs more testing
This commit is contained in:
larshp 2016-06-01 11:27:12 +00:00
parent ab9cb83bd7
commit 676a433acf

View File

@ -3,7 +3,7 @@ REPORT zabapgit.
* See http://www.abapgit.org
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
gc_abap_version TYPE string VALUE 'v1.10.3'. "#EC NOTEXT
gc_abap_version TYPE string VALUE 'v1.11.0'. "#EC NOTEXT
********************************************************************************
* The MIT License (MIT)
@ -67,11 +67,6 @@ TYPES: BEGIN OF ty_metadata,
late_deser TYPE string,
END OF ty_metadata.
TYPES: BEGIN OF ty_login,
username TYPE string,
password TYPE string,
END OF ty_login.
CONSTANTS: BEGIN OF gc_type,
commit TYPE ty_type VALUE 'commit', "#EC NOTEXT
tree TYPE ty_type VALUE 'tree', "#EC NOTEXT
@ -16653,13 +16648,18 @@ CLASS lcl_login_manager DEFINITION FINAL.
PUBLIC SECTION.
CLASS-METHODS:
load
IMPORTING iv_uri type string
IMPORTING iv_uri TYPE string
ii_client TYPE REF TO if_http_client
RAISING lcx_exception,
save
IMPORTING iv_uri type string
IMPORTING iv_uri TYPE string
ii_client TYPE REF TO if_http_client
RAISING lcx_exception.
RAISING lcx_exception,
set
IMPORTING iv_uri TYPE string
iv_username TYPE string
iv_password TYPE string
RETURNING VALUE(rv_auth) TYPE string.
PRIVATE SECTION.
TYPES: BEGIN OF ty_auth,
@ -16669,10 +16669,64 @@ CLASS lcl_login_manager DEFINITION FINAL.
CLASS-DATA: gt_auth TYPE TABLE OF ty_auth WITH DEFAULT KEY.
CLASS-METHODS:
append
IMPORTING iv_uri TYPE string
iv_auth TYPE string.
ENDCLASS.
CLASS ltcl_login_manager DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
PRIVATE SECTION.
METHODS:
test1 FOR TESTING.
ENDCLASS.
CLASS ltcl_login_manager IMPLEMENTATION.
METHOD test1.
DATA: lv_auth TYPE string.
lv_auth = lcl_login_manager=>set(
iv_uri = 'foobar'
iv_username = 'Aladdin'
iv_password = 'OpenSesame' ).
cl_abap_unit_assert=>assert_equals(
act = lv_auth
exp = 'Basic QWxhZGRpbjpPcGVuU2VzYW1l' ).
ENDMETHOD.
ENDCLASS.
CLASS lcl_login_manager IMPLEMENTATION.
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.
append( iv_uri = iv_uri
iv_auth = rv_auth ).
ENDMETHOD.
METHOD load.
DATA: ls_auth LIKE LINE OF gt_auth.
@ -16692,18 +16746,26 @@ CLASS lcl_login_manager IMPLEMENTATION.
DATA: lv_auth TYPE string.
FIELD-SYMBOLS: <ls_auth> LIKE LINE OF gt_auth.
lv_auth = ii_client->request->get_header_field( 'authorization' ). "#EC NOTEXT
IF NOT lv_auth IS INITIAL.
READ TABLE gt_auth WITH KEY uri = iv_uri TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
APPEND INITIAL LINE TO gt_auth ASSIGNING <ls_auth>.
<ls_auth>-uri = iv_uri.
<ls_auth>-authorization = lv_auth.
ENDIF.
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 = iv_uri TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
APPEND INITIAL LINE TO gt_auth ASSIGNING <ls_auth>.
<ls_auth>-uri = iv_uri.
<ls_auth>-authorization = iv_auth.
ENDIF.
ENDMETHOD.
@ -21060,9 +21122,7 @@ CLASS lcl_background DEFINITION FINAL.
PRIVATE SECTION.
CLASS-METHODS: push
IMPORTING io_repo TYPE REF TO lcl_repo_online
iv_username TYPE string
iv_password TYPE string
IMPORTING io_repo TYPE REF TO lcl_repo_online
RAISING lcx_exception.
ENDCLASS.
@ -21073,7 +21133,6 @@ CLASS lcl_background IMPLEMENTATION.
DATA: ls_comment TYPE ty_comment,
ls_files TYPE lcl_stage_logic=>ty_stage_files,
ls_login TYPE ty_login,
lo_stage TYPE REF TO lcl_stage.
FIELD-SYMBOLS: <ls_file> LIKE LINE OF ls_files-local.
@ -21095,11 +21154,6 @@ CLASS lcl_background IMPLEMENTATION.
lo_stage->add( <ls_file>-file ).
ENDLOOP.
ls_login-username = iv_username.
ls_login-password = iv_password.
* todo
io_repo->push( is_comment = ls_comment
io_stage = lo_stage ).
@ -21122,13 +21176,17 @@ CLASS lcl_background IMPLEMENTATION.
LOOP AT lt_list ASSIGNING <ls_list>.
lo_repo ?= lcl_repo_srv=>get( <ls_list>-key ).
WRITE: / <ls_list>-method, lo_repo->get_name( ).
lcl_login_manager=>set(
iv_uri = lo_repo->get_url( )
iv_username = <ls_list>-username
iv_password = <ls_list>-password ).
CASE <ls_list>-method.
WHEN lcl_persistence_background=>c_method-pull.
lo_repo->deserialize( ).
WHEN lcl_persistence_background=>c_method-push.
push( io_repo = lo_repo
iv_username = <ls_list>-username
iv_password = <ls_list>-password ).
push( lo_repo ).
WHEN OTHERS.
_raise 'background, unknown mode'.
ENDCASE.