mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
html event abstraction, phase 2 (action utils usage unification) (#3902)
* action utils improvements * page unifications * linter
This commit is contained in:
parent
c264588ab2
commit
9574dca828
|
@ -52,18 +52,24 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD dbcontent_decode.
|
METHOD dbcontent_decode.
|
||||||
|
|
||||||
DATA: lt_fields TYPE tihttpnvp,
|
DATA lt_fields TYPE tihttpnvp.
|
||||||
lv_string TYPE string.
|
|
||||||
|
|
||||||
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data(
|
||||||
|
it_post_data = it_postdata
|
||||||
|
iv_upper_cased = abap_true ).
|
||||||
|
|
||||||
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
|
EXPORTING
|
||||||
lv_string = cl_http_utility=>unescape_url( lv_string ).
|
iv_name = 'TYPE'
|
||||||
|
it_field = lt_fields
|
||||||
rs_content = zcl_abapgit_html_action_utils=>dbkey_decode( lv_string ).
|
CHANGING
|
||||||
|
cg_field = rs_content-type ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ).
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
|
EXPORTING
|
||||||
|
iv_name = 'VALUE'
|
||||||
|
it_field = lt_fields
|
||||||
|
CHANGING
|
||||||
|
cg_field = rs_content-value ).
|
||||||
zcl_abapgit_html_action_utils=>get_field(
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_name = 'XMLDATA'
|
iv_name = 'XMLDATA'
|
||||||
|
|
|
@ -93,7 +93,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_ADDONLINE IMPLEMENTATION.
|
||||||
DATA lt_form TYPE tihttpnvp.
|
DATA lt_form TYPE tihttpnvp.
|
||||||
DATA ls_field LIKE LINE OF lt_form.
|
DATA ls_field LIKE LINE OF lt_form.
|
||||||
|
|
||||||
lt_form = zcl_abapgit_html_action_utils=>parse_post_data( it_post_data ).
|
lt_form = zcl_abapgit_html_action_utils=>parse_post_form_data( it_post_data ).
|
||||||
CREATE OBJECT ro_form_data.
|
CREATE OBJECT ro_form_data.
|
||||||
|
|
||||||
LOOP AT lt_form INTO ls_field.
|
LOOP AT lt_form INTO ls_field.
|
||||||
|
|
|
@ -245,15 +245,11 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BOVERVIEW IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD decode_merge.
|
METHOD decode_merge.
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
DATA lt_fields TYPE tihttpnvp.
|
||||||
lt_fields TYPE tihttpnvp.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
|
|
||||||
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( it_postdata ).
|
||||||
|
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
|
||||||
|
|
||||||
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'source'.
|
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'source'.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
|
@ -177,19 +177,15 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_COMMIT IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD parse_commit_request.
|
METHOD parse_commit_request.
|
||||||
|
|
||||||
CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
|
DATA lt_fields TYPE tihttpnvp.
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
|
||||||
lt_fields TYPE tihttpnvp.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <lv_body> TYPE string.
|
FIELD-SYMBOLS <lv_body> TYPE string.
|
||||||
|
|
||||||
CLEAR eg_fields.
|
CLEAR eg_fields.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data(
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN lv_string WITH lc_replace.
|
it_post_data = it_postdata
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_newline IN lv_string WITH lc_replace.
|
iv_upper_cased = abap_true ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ).
|
|
||||||
|
|
||||||
zcl_abapgit_html_action_utils=>get_field(
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -230,7 +226,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_COMMIT IMPLEMENTATION.
|
||||||
|
|
||||||
ASSIGN COMPONENT 'BODY' OF STRUCTURE eg_fields TO <lv_body>.
|
ASSIGN COMPONENT 'BODY' OF STRUCTURE eg_fields TO <lv_body>.
|
||||||
ASSERT <lv_body> IS ASSIGNED.
|
ASSERT <lv_body> IS ASSIGNED.
|
||||||
REPLACE ALL OCCURRENCES OF lc_replace IN <lv_body> WITH zif_abapgit_definitions=>c_newline.
|
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN <lv_body> WITH zif_abapgit_definitions=>c_newline.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -112,37 +112,36 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MERGE_RES IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD apply_merged_content.
|
METHOD apply_merged_content.
|
||||||
|
|
||||||
CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
|
DATA:
|
||||||
|
BEGIN OF ls_filedata,
|
||||||
|
merge_content TYPE string,
|
||||||
|
END OF ls_filedata,
|
||||||
|
lt_fields TYPE tihttpnvp,
|
||||||
|
lv_new_file_content TYPE xstring.
|
||||||
|
|
||||||
DATA: BEGIN OF ls_filedata,
|
FIELD-SYMBOLS:
|
||||||
merge_content TYPE string,
|
<ls_conflict> TYPE zif_abapgit_definitions=>ty_merge_conflict.
|
||||||
END OF ls_filedata.
|
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data(
|
||||||
lt_fields TYPE tihttpnvp,
|
it_post_data = it_postdata
|
||||||
lv_new_file_content TYPE xstring.
|
iv_upper_cased = abap_true ).
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lv_postdata_line> LIKE LINE OF it_postdata,
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
<ls_conflict> TYPE zif_abapgit_definitions=>ty_merge_conflict.
|
EXPORTING
|
||||||
|
iv_name = 'MERGE_CONTENT'
|
||||||
|
it_field = lt_fields
|
||||||
|
CHANGING
|
||||||
|
cg_field = ls_filedata ).
|
||||||
|
|
||||||
LOOP AT it_postdata ASSIGNING <lv_postdata_line>.
|
REPLACE ALL OCCURRENCES
|
||||||
lv_string = |{ lv_string }{ <lv_postdata_line> }|.
|
OF zif_abapgit_definitions=>c_crlf IN ls_filedata-merge_content WITH zif_abapgit_definitions=>c_newline.
|
||||||
ENDLOOP.
|
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN lv_string WITH lc_replace.
|
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_newline IN lv_string WITH lc_replace.
|
|
||||||
|
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ).
|
|
||||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = 'MERGE_CONTENT'
|
|
||||||
it_field = lt_fields
|
|
||||||
CHANGING cg_field = ls_filedata ).
|
|
||||||
ls_filedata-merge_content = cl_http_utility=>unescape_url( escaped = ls_filedata-merge_content ).
|
|
||||||
REPLACE ALL OCCURRENCES OF lc_replace IN ls_filedata-merge_content WITH zif_abapgit_definitions=>c_newline.
|
|
||||||
|
|
||||||
lv_new_file_content = zcl_abapgit_convert=>string_to_xstring_utf8( ls_filedata-merge_content ).
|
lv_new_file_content = zcl_abapgit_convert=>string_to_xstring_utf8( ls_filedata-merge_content ).
|
||||||
|
|
||||||
READ TABLE mt_conflicts ASSIGNING <ls_conflict> INDEX mv_current_conflict_index.
|
READ TABLE mt_conflicts ASSIGNING <ls_conflict> INDEX mv_current_conflict_index.
|
||||||
<ls_conflict>-result_sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>c_type-blob
|
<ls_conflict>-result_sha1 = zcl_abapgit_hash=>sha1(
|
||||||
iv_data = lv_new_file_content ).
|
iv_type = zif_abapgit_definitions=>c_type-blob
|
||||||
|
iv_data = lv_new_file_content ).
|
||||||
<ls_conflict>-result_data = lv_new_file_content.
|
<ls_conflict>-result_data = lv_new_file_content.
|
||||||
mo_merge->resolve_conflict( <ls_conflict> ).
|
mo_merge->resolve_conflict( <ls_conflict> ).
|
||||||
|
|
||||||
|
|
|
@ -318,13 +318,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD apply_patch_from_form_fields.
|
METHOD apply_patch_from_form_fields.
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
DATA:
|
||||||
lt_fields TYPE tihttpnvp,
|
lt_fields TYPE tihttpnvp,
|
||||||
lv_add TYPE string,
|
lv_add TYPE string,
|
||||||
lv_remove TYPE string.
|
lv_remove TYPE string.
|
||||||
|
|
||||||
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( it_postdata ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
|
||||||
|
|
||||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-add
|
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-add
|
||||||
it_field = lt_fields
|
it_field = lt_fields
|
||||||
|
|
|
@ -54,11 +54,6 @@ CLASS zcl_abapgit_gui_page_repo_sett DEFINITION
|
||||||
!it_post_fields TYPE tihttpnvp
|
!it_post_fields TYPE tihttpnvp
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS parse_post
|
|
||||||
IMPORTING
|
|
||||||
!it_postdata TYPE cnht_post_data_tab
|
|
||||||
RETURNING
|
|
||||||
VALUE(rt_post_fields) TYPE tihttpnvp .
|
|
||||||
METHODS render_dot_abapgit_reqs
|
METHODS render_dot_abapgit_reqs
|
||||||
IMPORTING
|
IMPORTING
|
||||||
ii_html TYPE REF TO zif_abapgit_html
|
ii_html TYPE REF TO zif_abapgit_html
|
||||||
|
@ -90,16 +85,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_SETT IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD parse_post.
|
|
||||||
|
|
||||||
DATA lv_serialized_post_data TYPE string.
|
|
||||||
|
|
||||||
lv_serialized_post_data = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
|
||||||
rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD render_content.
|
METHOD render_content.
|
||||||
|
|
||||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
@ -352,7 +337,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_SETT IMPLEMENTATION.
|
||||||
DATA: lt_post_fields TYPE tihttpnvp,
|
DATA: lt_post_fields TYPE tihttpnvp,
|
||||||
lv_msg TYPE string.
|
lv_msg TYPE string.
|
||||||
|
|
||||||
lt_post_fields = parse_post( it_postdata ).
|
lt_post_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( it_postdata ).
|
||||||
|
|
||||||
save_dot_abap( lt_post_fields ).
|
save_dot_abap( lt_post_fields ).
|
||||||
save_remotes( lt_post_fields ).
|
save_remotes( lt_post_fields ).
|
||||||
|
|
|
@ -61,11 +61,6 @@ CLASS zcl_abapgit_gui_page_settings DEFINITION
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_post_fields TYPE tihttpnvp .
|
!it_post_fields TYPE tihttpnvp .
|
||||||
METHODS validate_settings .
|
METHODS validate_settings .
|
||||||
METHODS parse_post
|
|
||||||
IMPORTING
|
|
||||||
!it_postdata TYPE cnht_post_data_tab
|
|
||||||
RETURNING
|
|
||||||
VALUE(rt_post_fields) TYPE tihttpnvp .
|
|
||||||
METHODS persist_settings
|
METHODS persist_settings
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
@ -124,16 +119,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD parse_post.
|
|
||||||
|
|
||||||
DATA lv_serialized_post_data TYPE string.
|
|
||||||
|
|
||||||
lv_serialized_post_data = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
|
||||||
rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD persist_settings.
|
METHOD persist_settings.
|
||||||
|
|
||||||
DATA lo_settings_persistence TYPE REF TO zcl_abapgit_persist_settings.
|
DATA lo_settings_persistence TYPE REF TO zcl_abapgit_persist_settings.
|
||||||
|
@ -719,7 +704,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
||||||
|
|
||||||
CASE ii_event->mv_action.
|
CASE ii_event->mv_action.
|
||||||
WHEN c_action-save_settings.
|
WHEN c_action-save_settings.
|
||||||
lt_post_fields = parse_post( ii_event->mt_postdata ).
|
lt_post_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( ii_event->mt_postdata ).
|
||||||
|
|
||||||
post( lt_post_fields ).
|
post( lt_post_fields ).
|
||||||
validate_settings( ).
|
validate_settings( ).
|
||||||
|
|
|
@ -587,16 +587,16 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD stage_selected.
|
METHOD stage_selected.
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
DATA:
|
||||||
lt_fields TYPE tihttpnvp,
|
lt_fields TYPE tihttpnvp,
|
||||||
ls_file TYPE zif_abapgit_definitions=>ty_file.
|
ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF ms_files-local,
|
FIELD-SYMBOLS:
|
||||||
<ls_status> LIKE LINE OF ms_files-status,
|
<ls_file> LIKE LINE OF ms_files-local,
|
||||||
<ls_item> LIKE LINE OF lt_fields.
|
<ls_status> LIKE LINE OF ms_files-status,
|
||||||
|
<ls_item> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( it_postdata ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
|
||||||
|
|
||||||
IF lines( lt_fields ) = 0.
|
IF lines( lt_fields ) = 0.
|
||||||
zcx_abapgit_exception=>raise( 'process_stage_list: empty list' ).
|
zcx_abapgit_exception=>raise( 'process_stage_list: empty list' ).
|
||||||
|
@ -687,7 +687,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
|
||||||
|
|
||||||
WHEN c_action-stage_filter.
|
WHEN c_action-stage_filter.
|
||||||
|
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( concat_lines_of( table = ii_event->mt_postdata ) ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( ii_event->mt_postdata ).
|
||||||
|
|
||||||
zcl_abapgit_html_action_utils=>get_field(
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
|
|
@ -153,19 +153,15 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_TAG IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD parse_tag_request.
|
METHOD parse_tag_request.
|
||||||
|
|
||||||
CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
|
DATA lt_fields TYPE tihttpnvp.
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
|
||||||
lt_fields TYPE tihttpnvp.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <lv_body> TYPE string.
|
FIELD-SYMBOLS <lv_body> TYPE string.
|
||||||
|
|
||||||
CLEAR eg_fields.
|
CLEAR eg_fields.
|
||||||
|
|
||||||
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_post_form_data(
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN lv_string WITH lc_replace.
|
it_post_data = it_postdata
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_newline IN lv_string WITH lc_replace.
|
iv_upper_cased = abap_true ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ).
|
|
||||||
|
|
||||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = 'SHA1'
|
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = 'SHA1'
|
||||||
it_field = lt_fields
|
it_field = lt_fields
|
||||||
|
@ -188,7 +184,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_TAG IMPLEMENTATION.
|
||||||
|
|
||||||
ASSIGN COMPONENT 'BODY' OF STRUCTURE eg_fields TO <lv_body>.
|
ASSIGN COMPONENT 'BODY' OF STRUCTURE eg_fields TO <lv_body>.
|
||||||
ASSERT <lv_body> IS ASSIGNED.
|
ASSERT <lv_body> IS ASSIGNED.
|
||||||
REPLACE ALL OCCURRENCES OF lc_replace IN <lv_body> WITH zif_abapgit_definitions=>c_newline.
|
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN <lv_body> WITH zif_abapgit_definitions=>c_newline.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,10 @@ CLASS zcl_abapgit_html_action_utils DEFINITION
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
CLASS-METHODS parse_post_data
|
CLASS-METHODS parse_post_form_data
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_post_data TYPE cnht_post_data_tab
|
!it_post_data TYPE cnht_post_data_tab
|
||||||
|
!iv_upper_cased TYPE abap_bool DEFAULT abap_false
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_fields) TYPE tihttpnvp .
|
VALUE(rt_fields) TYPE tihttpnvp .
|
||||||
CLASS-METHODS parse_fields
|
CLASS-METHODS parse_fields
|
||||||
|
@ -19,6 +20,12 @@ CLASS zcl_abapgit_html_action_utils DEFINITION
|
||||||
!iv_string TYPE clike
|
!iv_string TYPE clike
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_fields) TYPE tihttpnvp .
|
VALUE(rt_fields) TYPE tihttpnvp .
|
||||||
|
CLASS-METHODS translate_postdata
|
||||||
|
IMPORTING
|
||||||
|
!it_postdata TYPE cnht_post_data_tab
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_string) TYPE string .
|
||||||
|
|
||||||
CLASS-METHODS get_field
|
CLASS-METHODS get_field
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_name TYPE string
|
!iv_name TYPE string
|
||||||
|
@ -330,27 +337,33 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD parse_fields.
|
METHOD parse_fields.
|
||||||
|
|
||||||
DATA: lt_substrings TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
DATA:
|
||||||
ls_field LIKE LINE OF rt_fields.
|
lt_substrings TYPE string_table,
|
||||||
|
ls_field LIKE LINE OF rt_fields.
|
||||||
FIELD-SYMBOLS: <lv_substring> LIKE LINE OF lt_substrings.
|
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <lv_substring> LIKE LINE OF lt_substrings.
|
||||||
|
|
||||||
SPLIT iv_string AT '&' INTO TABLE lt_substrings.
|
SPLIT iv_string AT '&' INTO TABLE lt_substrings.
|
||||||
|
|
||||||
LOOP AT lt_substrings ASSIGNING <lv_substring>.
|
LOOP AT lt_substrings ASSIGNING <lv_substring>.
|
||||||
|
|
||||||
CLEAR: ls_field.
|
CLEAR ls_field.
|
||||||
|
|
||||||
ls_field-name = substring_before( val = <lv_substring>
|
ls_field-name = substring_before(
|
||||||
sub = '=' ).
|
val = <lv_substring>
|
||||||
|
sub = '=' ).
|
||||||
ls_field-name = unescape( ls_field-name ).
|
ls_field-name = unescape( ls_field-name ).
|
||||||
|
|
||||||
ls_field-value = substring_after( val = <lv_substring>
|
ls_field-value = substring_after(
|
||||||
sub = '=' ).
|
val = <lv_substring>
|
||||||
|
sub = '=' ).
|
||||||
ls_field-value = unescape( ls_field-value ).
|
ls_field-value = unescape( ls_field-value ).
|
||||||
|
|
||||||
INSERT ls_field INTO TABLE rt_fields.
|
IF ls_field IS INITIAL. " Not a field with proper structure
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
APPEND ls_field TO rt_fields.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -365,12 +378,16 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD parse_post_data.
|
METHOD parse_post_form_data.
|
||||||
|
|
||||||
DATA lv_serialized_post_data TYPE string.
|
DATA lv_serialized_post_data TYPE string.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_post_data INTO lv_serialized_post_data.
|
lv_serialized_post_data = translate_postdata( it_post_data ).
|
||||||
rt_fields = parse_fields( lv_serialized_post_data ).
|
IF iv_upper_cased = abap_true.
|
||||||
|
rt_fields = parse_fields_upper_case_name( lv_serialized_post_data ).
|
||||||
|
ELSE.
|
||||||
|
rt_fields = parse_fields( lv_serialized_post_data ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -391,6 +408,33 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD translate_postdata.
|
||||||
|
|
||||||
|
DATA: lt_post_data TYPE cnht_post_data_tab,
|
||||||
|
ls_last_line TYPE cnht_post_data_line,
|
||||||
|
lv_last_line_index TYPE i.
|
||||||
|
|
||||||
|
IF it_postdata IS INITIAL.
|
||||||
|
RETURN. "Nothing to do
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lt_post_data = it_postdata.
|
||||||
|
|
||||||
|
"Save the last line for separate merge, because we don't need its trailing spaces
|
||||||
|
WHILE ls_last_line IS INITIAL.
|
||||||
|
lv_last_line_index = lines( lt_post_data ).
|
||||||
|
READ TABLE lt_post_data INTO ls_last_line INDEX lv_last_line_index.
|
||||||
|
DELETE lt_post_data INDEX lv_last_line_index.
|
||||||
|
ENDWHILE.
|
||||||
|
|
||||||
|
CONCATENATE LINES OF lt_post_data INTO rv_string
|
||||||
|
IN CHARACTER MODE RESPECTING BLANKS.
|
||||||
|
CONCATENATE rv_string ls_last_line INTO rv_string
|
||||||
|
IN CHARACTER MODE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD unescape.
|
METHOD unescape.
|
||||||
* do not use cl_http_utility as it does strange things with the encoding
|
* do not use cl_http_utility as it does strange things with the encoding
|
||||||
rv_string = iv_string.
|
rv_string = iv_string.
|
||||||
|
|
|
@ -9,6 +9,8 @@ CLASS ltcl_html_action_utils DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
||||||
METHODS parse_fields_advanced_case FOR TESTING.
|
METHODS parse_fields_advanced_case FOR TESTING.
|
||||||
METHODS parse_fields_unescape FOR TESTING.
|
METHODS parse_fields_unescape FOR TESTING.
|
||||||
METHODS parse_fields_german_umlauts FOR TESTING.
|
METHODS parse_fields_german_umlauts FOR TESTING.
|
||||||
|
METHODS parse_fields_wrong_format FOR TESTING.
|
||||||
|
METHODS parse_post_form_data FOR TESTING.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
@ -36,6 +38,9 @@ CLASS ltcl_html_action_utils DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
||||||
iv_index TYPE i
|
iv_index TYPE i
|
||||||
iv_name TYPE string
|
iv_name TYPE string
|
||||||
iv_value TYPE string.
|
iv_value TYPE string.
|
||||||
|
METHODS _then_field_count_should_be
|
||||||
|
IMPORTING
|
||||||
|
iv_count TYPE i.
|
||||||
|
|
||||||
CLASS-METHODS _hex_to_char
|
CLASS-METHODS _hex_to_char
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -65,12 +70,18 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
|
||||||
ls_answer-value = 'TEST'.
|
ls_answer-value = 'TEST'.
|
||||||
APPEND ls_answer TO lt_fields.
|
APPEND ls_answer TO lt_fields.
|
||||||
|
|
||||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = 'NAME'
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
it_field = lt_fields
|
EXPORTING
|
||||||
CHANGING cg_field = ls_field-value ).
|
iv_name = 'NAME'
|
||||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = 'NAME'
|
it_field = lt_fields
|
||||||
it_field = lt_fields
|
CHANGING
|
||||||
CHANGING cg_field = ls_field ).
|
cg_field = ls_field-value ).
|
||||||
|
zcl_abapgit_html_action_utils=>get_field(
|
||||||
|
EXPORTING
|
||||||
|
iv_name = 'NAME'
|
||||||
|
it_field = lt_fields
|
||||||
|
CHANGING
|
||||||
|
cg_field = ls_field ).
|
||||||
|
|
||||||
ls_answer-name = 'TEST'.
|
ls_answer-name = 'TEST'.
|
||||||
ls_answer-value = 'TEST'.
|
ls_answer-value = 'TEST'.
|
||||||
|
@ -208,19 +219,30 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_parsed_field> LIKE LINE OF mt_parsed_fields.
|
FIELD-SYMBOLS: <ls_parsed_field> LIKE LINE OF mt_parsed_fields.
|
||||||
|
|
||||||
READ TABLE mt_parsed_fields ASSIGNING <ls_parsed_field>
|
READ TABLE mt_parsed_fields ASSIGNING <ls_parsed_field> INDEX iv_index.
|
||||||
INDEX iv_index.
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_subrc( exp = 0
|
cl_abap_unit_assert=>assert_subrc(
|
||||||
msg = |No parsed field found at index { iv_index }| ).
|
exp = 0
|
||||||
|
msg = |No parsed field found at index { iv_index }| ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals( act = <ls_parsed_field>-name
|
cl_abap_unit_assert=>assert_equals(
|
||||||
exp = iv_name
|
act = <ls_parsed_field>-name
|
||||||
msg = |Name at index { iv_index } should be { iv_name }| ).
|
exp = iv_name
|
||||||
|
msg = |Name at index { iv_index } should be { iv_name }| ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals( act = <ls_parsed_field>-value
|
cl_abap_unit_assert=>assert_equals(
|
||||||
exp = iv_value
|
act = <ls_parsed_field>-value
|
||||||
msg = |Value at index { iv_index } should be { iv_value }| ).
|
exp = iv_value
|
||||||
|
msg = |Value at index { iv_index } should be { iv_value }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD _then_field_count_should_be.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lines( mt_parsed_fields )
|
||||||
|
exp = iv_count
|
||||||
|
msg = |Field count { lines( mt_parsed_fields ) } should be { iv_count }| ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -233,4 +255,62 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD parse_fields_wrong_format.
|
||||||
|
|
||||||
|
_given_string_is( `some_query_string_without_param_structure` ).
|
||||||
|
_when_fields_are_parsed( ).
|
||||||
|
_then_field_count_should_be( 0 ).
|
||||||
|
|
||||||
|
_given_string_is( `some_query_string_without_param_structure&a=b` ).
|
||||||
|
_when_fields_are_parsed( ).
|
||||||
|
_then_field_count_should_be( 1 ).
|
||||||
|
_then_fields_should_be(
|
||||||
|
iv_index = 1
|
||||||
|
iv_name = 'A'
|
||||||
|
iv_value = 'b' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD parse_post_form_data.
|
||||||
|
|
||||||
|
DATA lt_post_data TYPE cnht_post_data_tab.
|
||||||
|
DATA lv_line LIKE LINE OF lt_post_data.
|
||||||
|
DATA lv_long_name LIKE LINE OF lt_post_data.
|
||||||
|
DATA lv_size TYPE i.
|
||||||
|
|
||||||
|
DESCRIBE FIELD lv_line LENGTH lv_size IN CHARACTER MODE.
|
||||||
|
lv_long_name = repeat(
|
||||||
|
val = 'x'
|
||||||
|
occ = lv_size - 4 ).
|
||||||
|
lv_line = 'a=b&' && lv_long_name.
|
||||||
|
|
||||||
|
APPEND lv_line TO lt_post_data.
|
||||||
|
APPEND '=y' TO lt_post_data.
|
||||||
|
|
||||||
|
mt_parsed_fields = zcl_abapgit_html_action_utils=>parse_post_form_data( lt_post_data ).
|
||||||
|
_then_field_count_should_be( 2 ).
|
||||||
|
_then_fields_should_be(
|
||||||
|
iv_index = 1
|
||||||
|
iv_name = 'a'
|
||||||
|
iv_value = 'b' ).
|
||||||
|
_then_fields_should_be(
|
||||||
|
iv_index = 2
|
||||||
|
iv_name = |{ lv_long_name }|
|
||||||
|
iv_value = 'y' ).
|
||||||
|
|
||||||
|
mt_parsed_fields = zcl_abapgit_html_action_utils=>parse_post_form_data(
|
||||||
|
it_post_data = lt_post_data
|
||||||
|
iv_upper_cased = abap_true ).
|
||||||
|
_then_field_count_should_be( 2 ).
|
||||||
|
_then_fields_should_be(
|
||||||
|
iv_index = 1
|
||||||
|
iv_name = 'A'
|
||||||
|
iv_value = 'b' ).
|
||||||
|
_then_fields_should_be(
|
||||||
|
iv_index = 2
|
||||||
|
iv_name = |{ to_upper( lv_long_name ) }|
|
||||||
|
iv_value = 'y' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -19,18 +19,29 @@ CLASS zcl_abapgit_utils DEFINITION
|
||||||
!ev_time TYPE zif_abapgit_definitions=>ty_commit-time
|
!ev_time TYPE zif_abapgit_definitions=>ty_commit-time
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS translate_postdata
|
|
||||||
IMPORTING
|
|
||||||
!it_postdata TYPE cnht_post_data_tab
|
|
||||||
RETURNING
|
|
||||||
VALUE(rv_string) TYPE string .
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_utils IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_UTILS IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD extract_author_data.
|
||||||
|
|
||||||
|
" unix time stamps are in same time zone, so ignore the zone
|
||||||
|
FIND REGEX zif_abapgit_definitions=>c_author_regex IN iv_author
|
||||||
|
SUBMATCHES
|
||||||
|
ev_author
|
||||||
|
ev_email
|
||||||
|
ev_time.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( |Error author regex value='{ iv_author }'| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD is_binary.
|
METHOD is_binary.
|
||||||
|
@ -61,48 +72,4 @@ CLASS zcl_abapgit_utils IMPLEMENTATION.
|
||||||
ENDDO.
|
ENDDO.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD extract_author_data.
|
|
||||||
|
|
||||||
" unix time stamps are in same time zone, so ignore the zone
|
|
||||||
FIND REGEX zif_abapgit_definitions=>c_author_regex IN iv_author
|
|
||||||
SUBMATCHES
|
|
||||||
ev_author
|
|
||||||
ev_email
|
|
||||||
ev_time.
|
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise( |Error author regex value='{ iv_author }'| ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD translate_postdata.
|
|
||||||
|
|
||||||
DATA: lt_post_data TYPE cnht_post_data_tab,
|
|
||||||
ls_last_line TYPE cnht_post_data_line,
|
|
||||||
lv_last_line_index TYPE i.
|
|
||||||
|
|
||||||
IF it_postdata IS INITIAL.
|
|
||||||
"Nothing to do
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lt_post_data = it_postdata.
|
|
||||||
|
|
||||||
"Save the last line for separate merge, because we don't need its trailing spaces
|
|
||||||
WHILE ls_last_line IS INITIAL.
|
|
||||||
lv_last_line_index = lines( lt_post_data ).
|
|
||||||
READ TABLE lt_post_data INTO ls_last_line INDEX lv_last_line_index.
|
|
||||||
DELETE lt_post_data INDEX lv_last_line_index.
|
|
||||||
ENDWHILE.
|
|
||||||
|
|
||||||
CONCATENATE LINES OF lt_post_data INTO rv_string
|
|
||||||
IN CHARACTER MODE RESPECTING BLANKS.
|
|
||||||
CONCATENATE rv_string ls_last_line INTO rv_string
|
|
||||||
IN CHARACTER MODE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user