mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
#311 separate some methods to lcl_git_utils
Maybe would better look as a part of lcl_git_pack
This commit is contained in:
parent
858f64b01f
commit
41ffa35699
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
CLASS ltcl_git_pack DEFINITION DEFERRED.
|
CLASS ltcl_git_pack DEFINITION DEFERRED.
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
|
||||||
* CLASS lcl_transport DEFINITION
|
|
||||||
*----------------------------------------------------------------------*
|
|
||||||
|
|
||||||
" TODO: move types to global definitions when code is stable
|
" TODO: move types to global definitions when code is stable
|
||||||
TYPES: ty_git_branch_type TYPE char2.
|
TYPES: ty_git_branch_type TYPE char2.
|
||||||
|
@ -19,6 +16,99 @@ TYPES: BEGIN OF ty_git_branch,
|
||||||
END OF ty_git_branch.
|
END OF ty_git_branch.
|
||||||
TYPES: ty_git_branch_list_tt TYPE STANDARD TABLE OF ty_git_branch WITH DEFAULT KEY.
|
TYPES: ty_git_branch_list_tt TYPE STANDARD TABLE OF ty_git_branch WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_git_utils
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
CLASS lcl_git_utils DEFINITION FINAL. " > Maybe better move to lcl_git_pack ??
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
CLASS-METHODS get_null
|
||||||
|
RETURNING VALUE(rv_c) TYPE char1.
|
||||||
|
|
||||||
|
CLASS-METHODS pkt_string
|
||||||
|
IMPORTING iv_string TYPE string
|
||||||
|
RETURNING VALUE(rv_pkt) TYPE string
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS length_utf8_hex
|
||||||
|
IMPORTING iv_data TYPE xstring
|
||||||
|
RETURNING VALUE(rv_len) TYPE i
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_git_utils
|
||||||
|
|
||||||
|
CLASS lcl_git_utils IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD get_null.
|
||||||
|
|
||||||
|
DATA: lv_x(4) TYPE x VALUE '00000000',
|
||||||
|
lv_z(2) TYPE c.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <lv_y> TYPE c.
|
||||||
|
|
||||||
|
|
||||||
|
ASSIGN lv_x TO <lv_y> CASTING.
|
||||||
|
lv_z = <lv_y>.
|
||||||
|
rv_c = lv_z(1).
|
||||||
|
|
||||||
|
ENDMETHOD. "get_null
|
||||||
|
|
||||||
|
METHOD length_utf8_hex.
|
||||||
|
|
||||||
|
DATA: lv_xstring TYPE xstring,
|
||||||
|
lv_string TYPE string,
|
||||||
|
lv_char4 TYPE c LENGTH 4,
|
||||||
|
lv_x TYPE x LENGTH 2,
|
||||||
|
lo_obj TYPE REF TO cl_abap_conv_in_ce,
|
||||||
|
lv_len TYPE int4.
|
||||||
|
|
||||||
|
* hmm, can this be done easier?
|
||||||
|
|
||||||
|
lv_xstring = iv_data(4).
|
||||||
|
|
||||||
|
lo_obj = cl_abap_conv_in_ce=>create(
|
||||||
|
input = lv_xstring
|
||||||
|
encoding = 'UTF-8' ).
|
||||||
|
lv_len = xstrlen( lv_xstring ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_obj->read( EXPORTING n = lv_len
|
||||||
|
IMPORTING data = lv_string ).
|
||||||
|
CATCH cx_sy_conversion_codepage.
|
||||||
|
lcx_exception=>raise( 'error converting to hex, LENGTH_UTF8_HEX' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
lv_char4 = lv_string.
|
||||||
|
TRANSLATE lv_char4 TO UPPER CASE.
|
||||||
|
lv_x = lv_char4.
|
||||||
|
rv_len = lv_x.
|
||||||
|
|
||||||
|
ENDMETHOD. "length_utf8_hex
|
||||||
|
|
||||||
|
METHOD pkt_string.
|
||||||
|
|
||||||
|
DATA: lv_x TYPE x,
|
||||||
|
lv_len TYPE i.
|
||||||
|
|
||||||
|
|
||||||
|
lv_len = strlen( iv_string ).
|
||||||
|
|
||||||
|
IF lv_len >= 255.
|
||||||
|
lcx_exception=>raise( 'PKT, todo' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_x = lv_len + 4.
|
||||||
|
|
||||||
|
rv_pkt = rv_pkt && '00' && lv_x && iv_string.
|
||||||
|
|
||||||
|
ENDMETHOD. "pkt_string
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_git_utils
|
||||||
|
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_transport DEFINITION
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
|
||||||
CLASS lcl_git_transport DEFINITION FINAL.
|
CLASS lcl_git_transport DEFINITION FINAL.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
@ -48,8 +138,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
||||||
|
|
||||||
CLASS-METHODS class_constructor.
|
CLASS-METHODS class_constructor.
|
||||||
|
|
||||||
CLASS-METHODS get_null
|
|
||||||
RETURNING VALUE(rv_c) TYPE char1.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
CLASS-DATA: gv_agent TYPE string.
|
CLASS-DATA: gv_agent TYPE string.
|
||||||
|
@ -66,11 +154,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
||||||
et_branch_list TYPE ty_git_branch_list_tt
|
et_branch_list TYPE ty_git_branch_list_tt
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS pkt_string
|
|
||||||
IMPORTING iv_string TYPE string
|
|
||||||
RETURNING VALUE(rv_pkt) TYPE string
|
|
||||||
RAISING lcx_exception.
|
|
||||||
|
|
||||||
CLASS-METHODS find_branch
|
CLASS-METHODS find_branch
|
||||||
IMPORTING iv_url TYPE string
|
IMPORTING iv_url TYPE string
|
||||||
iv_service TYPE string
|
iv_service TYPE string
|
||||||
|
@ -84,11 +167,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
||||||
CHANGING cv_data TYPE xstring
|
CHANGING cv_data TYPE xstring
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS length_utf8_hex
|
|
||||||
IMPORTING iv_data TYPE xstring
|
|
||||||
RETURNING VALUE(rv_len) TYPE i
|
|
||||||
RAISING lcx_exception.
|
|
||||||
|
|
||||||
CLASS-METHODS set_headers
|
CLASS-METHODS set_headers
|
||||||
IMPORTING iv_url TYPE string
|
IMPORTING iv_url TYPE string
|
||||||
iv_service TYPE string
|
iv_service TYPE string
|
||||||
|
@ -265,20 +343,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "set_headers
|
ENDMETHOD. "set_headers
|
||||||
|
|
||||||
METHOD get_null.
|
|
||||||
|
|
||||||
DATA: lv_x(4) TYPE x VALUE '00000000',
|
|
||||||
lv_z(2) TYPE c.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <lv_y> TYPE c.
|
|
||||||
|
|
||||||
|
|
||||||
ASSIGN lv_x TO <lv_y> CASTING.
|
|
||||||
lv_z = <lv_y>.
|
|
||||||
rv_c = lv_z(1).
|
|
||||||
|
|
||||||
ENDMETHOD. "get_null
|
|
||||||
|
|
||||||
METHOD check_http_200.
|
METHOD check_http_200.
|
||||||
|
|
||||||
DATA: lv_code TYPE i.
|
DATA: lv_code TYPE i.
|
||||||
|
@ -503,11 +567,11 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
iv_new &&
|
iv_new &&
|
||||||
` ` &&
|
` ` &&
|
||||||
iv_branch_name &&
|
iv_branch_name &&
|
||||||
get_null( ) &&
|
lcl_git_utils=>get_null( ) &&
|
||||||
` ` &&
|
` ` &&
|
||||||
lv_cap_list &&
|
lv_cap_list &&
|
||||||
gc_newline. "#EC NOTEXT
|
gc_newline. "#EC NOTEXT
|
||||||
lv_cmd_pkt = pkt_string( lv_line ).
|
lv_cmd_pkt = lcl_git_utils=>pkt_string( lv_line ).
|
||||||
|
|
||||||
lv_buffer = lv_cmd_pkt && '0000'.
|
lv_buffer = lv_cmd_pkt && '0000'.
|
||||||
lv_tmp = lcl_convert=>string_to_xstring_utf8( lv_buffer ).
|
lv_tmp = lcl_convert=>string_to_xstring_utf8( lv_buffer ).
|
||||||
|
@ -531,38 +595,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "receive_pack
|
ENDMETHOD. "receive_pack
|
||||||
|
|
||||||
METHOD length_utf8_hex.
|
|
||||||
|
|
||||||
DATA: lv_xstring TYPE xstring,
|
|
||||||
lv_string TYPE string,
|
|
||||||
lv_char4 TYPE c LENGTH 4,
|
|
||||||
lv_x TYPE x LENGTH 2,
|
|
||||||
lo_obj TYPE REF TO cl_abap_conv_in_ce,
|
|
||||||
lv_len TYPE int4.
|
|
||||||
|
|
||||||
* hmm, can this be done easier?
|
|
||||||
|
|
||||||
lv_xstring = iv_data(4).
|
|
||||||
|
|
||||||
lo_obj = cl_abap_conv_in_ce=>create(
|
|
||||||
input = lv_xstring
|
|
||||||
encoding = 'UTF-8' ).
|
|
||||||
lv_len = xstrlen( lv_xstring ).
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
lo_obj->read( EXPORTING n = lv_len
|
|
||||||
IMPORTING data = lv_string ).
|
|
||||||
CATCH cx_sy_conversion_codepage.
|
|
||||||
lcx_exception=>raise( 'error converting to hex, LENGTH_UTF8_HEX' ).
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
lv_char4 = lv_string.
|
|
||||||
TRANSLATE lv_char4 TO UPPER CASE.
|
|
||||||
lv_x = lv_char4.
|
|
||||||
rv_len = lv_x.
|
|
||||||
|
|
||||||
ENDMETHOD. "length_utf8_hex
|
|
||||||
|
|
||||||
METHOD parse.
|
METHOD parse.
|
||||||
|
|
||||||
CONSTANTS: lc_band1 TYPE x VALUE '01'.
|
CONSTANTS: lc_band1 TYPE x VALUE '01'.
|
||||||
|
@ -573,7 +605,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
WHILE xstrlen( cv_data ) >= 4.
|
WHILE xstrlen( cv_data ) >= 4.
|
||||||
lv_len = length_utf8_hex( cv_data ).
|
lv_len = lcl_git_utils=>length_utf8_hex( cv_data ).
|
||||||
|
|
||||||
IF lv_len > xstrlen( cv_data ).
|
IF lv_len > xstrlen( cv_data ).
|
||||||
lcx_exception=>raise( 'parse, string length too large' ).
|
lcx_exception=>raise( 'parse, string length too large' ).
|
||||||
|
@ -643,11 +675,11 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||||
&& gc_newline. "#EC NOTEXT
|
&& gc_newline. "#EC NOTEXT
|
||||||
ENDIF.
|
ENDIF.
|
||||||
lv_buffer = lv_buffer && pkt_string( lv_line ).
|
lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( lv_line ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
IF iv_deepen = abap_true.
|
IF iv_deepen = abap_true.
|
||||||
lv_buffer = lv_buffer && pkt_string( 'deepen 1' && gc_newline ). "#EC NOTEXT
|
lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( 'deepen 1' && gc_newline ). "#EC NOTEXT
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lv_buffer = lv_buffer
|
lv_buffer = lv_buffer
|
||||||
|
@ -672,24 +704,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "upload_pack
|
ENDMETHOD. "upload_pack
|
||||||
|
|
||||||
METHOD pkt_string.
|
|
||||||
|
|
||||||
DATA: lv_x TYPE x,
|
|
||||||
lv_len TYPE i.
|
|
||||||
|
|
||||||
|
|
||||||
lv_len = strlen( iv_string ).
|
|
||||||
|
|
||||||
IF lv_len >= 255.
|
|
||||||
lcx_exception=>raise( 'PKT, todo' ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lv_x = lv_len + 4.
|
|
||||||
|
|
||||||
rv_pkt = rv_pkt && '00' && lv_x && iv_string.
|
|
||||||
|
|
||||||
ENDMETHOD. "pkt
|
|
||||||
|
|
||||||
ENDCLASS. "lcl_transport IMPLEMENTATION
|
ENDCLASS. "lcl_transport IMPLEMENTATION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -716,7 +730,7 @@ CLASS lcl_git_branch_helper IMPLEMENTATION.
|
||||||
ELSEIF sy-tabix = 2 AND strlen( lv_data ) > 49.
|
ELSEIF sy-tabix = 2 AND strlen( lv_data ) > 49.
|
||||||
lv_hash = lv_data+8.
|
lv_hash = lv_data+8.
|
||||||
lv_name = lv_data+49.
|
lv_name = lv_data+49.
|
||||||
lv_char = lcl_git_transport=>get_null( ).
|
lv_char = lcl_git_utils=>get_null( ).
|
||||||
SPLIT lv_name AT lv_char INTO lv_name lv_foo.
|
SPLIT lv_name AT lv_char INTO lv_name lv_foo.
|
||||||
ELSEIF sy-tabix > 2 AND strlen( lv_data ) > 45.
|
ELSEIF sy-tabix > 2 AND strlen( lv_data ) > 45.
|
||||||
lv_hash = lv_data+4.
|
lv_hash = lv_data+4.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user