mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
Improve repository URL validation (#5927)
This commit is contained in:
parent
b7c1ac907c
commit
533c9fbdaf
|
@ -12,6 +12,13 @@ CLASS zcl_abapgit_git_url DEFINITION
|
|||
VALUE(rv_url) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
METHODS validate_url
|
||||
IMPORTING
|
||||
!iv_url TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS get_default_commit_display_url
|
||||
|
@ -27,7 +34,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GIT_URL IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_git_url IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_commit_display_url.
|
||||
|
@ -81,4 +88,26 @@ CLASS ZCL_ABAPGIT_GIT_URL IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD validate_url.
|
||||
|
||||
DATA lv_provider TYPE string.
|
||||
|
||||
lv_provider = zcl_abapgit_url=>host( to_lower( iv_url ) ).
|
||||
|
||||
" Provider-specific check for URLs that don't work
|
||||
IF lv_provider CS 'gitlab.com'.
|
||||
FIND REGEX '\.git$' IN iv_url IGNORING CASE.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'Repo URL for GitLab must end in ".git"' ).
|
||||
ENDIF.
|
||||
ELSEIF lv_provider CS 'dev.azure.com'.
|
||||
FIND REGEX '\.git$' IN iv_url IGNORING CASE.
|
||||
IF sy-subrc = 0.
|
||||
zcx_abapgit_exception=>raise( 'Repo URL for Azure DevOps must not end in ".git"' ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -72,6 +72,23 @@ ENDCLASS.
|
|||
CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD choose_labels.
|
||||
|
||||
DATA:
|
||||
lv_old_labels TYPE string,
|
||||
lv_new_labels TYPE string.
|
||||
|
||||
lv_old_labels = mo_form_data->get( c_id-labels ).
|
||||
|
||||
lv_new_labels = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_labels( lv_old_labels ).
|
||||
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-labels
|
||||
iv_val = lv_new_labels ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
CREATE OBJECT mo_validation_log.
|
||||
|
@ -168,13 +185,21 @@ CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
|||
|
||||
METHOD validate_form.
|
||||
|
||||
DATA lx_err TYPE REF TO zcx_abapgit_exception.
|
||||
DATA:
|
||||
lv_url TYPE string,
|
||||
lo_url TYPE REF TO zcl_abapgit_git_url,
|
||||
lx_err TYPE REF TO zcx_abapgit_exception.
|
||||
|
||||
ro_validation_log = mo_form_util->validate( io_form_data ).
|
||||
|
||||
IF io_form_data->get( c_id-url ) IS NOT INITIAL.
|
||||
lv_url = io_form_data->get( c_id-url ).
|
||||
IF lv_url IS NOT INITIAL.
|
||||
TRY.
|
||||
zcl_abapgit_repo_srv=>get_instance( )->validate_url( io_form_data->get( c_id-url ) ).
|
||||
zcl_abapgit_repo_srv=>get_instance( )->validate_url( lv_url ).
|
||||
|
||||
" Provider-specific URL check
|
||||
CREATE OBJECT lo_url.
|
||||
lo_url->validate_url( lv_url ).
|
||||
CATCH zcx_abapgit_exception INTO lx_err.
|
||||
ro_validation_log->set(
|
||||
iv_key = c_id-url
|
||||
|
@ -312,22 +337,4 @@ CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
|||
io_validation_log = mo_validation_log ) ).
|
||||
ri_html->add( '</div>' ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD choose_labels.
|
||||
|
||||
DATA:
|
||||
lv_old_labels TYPE string,
|
||||
lv_new_labels TYPE string.
|
||||
|
||||
lv_old_labels = mo_form_data->get( c_id-labels ).
|
||||
|
||||
lv_new_labels = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_labels( lv_old_labels ).
|
||||
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-labels
|
||||
iv_val = lv_new_labels ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -796,6 +796,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
DATA:
|
||||
lx_error TYPE REF TO zcx_abapgit_exception,
|
||||
lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list,
|
||||
lo_url TYPE REF TO zcl_abapgit_git_url,
|
||||
lv_offline TYPE abap_bool,
|
||||
lv_head_type TYPE ty_head_type,
|
||||
lv_branch TYPE ty_remote_settings-branch,
|
||||
|
@ -823,6 +824,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
zcl_abapgit_url=>name(
|
||||
iv_url = lv_url
|
||||
iv_validate = abap_true ).
|
||||
|
||||
" Provider-specific URL check
|
||||
CREATE OBJECT lo_url.
|
||||
lo_url->validate_url( lv_url ).
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
ro_validation_log->set(
|
||||
iv_key = c_id-url
|
||||
|
|
Loading…
Reference in New Issue
Block a user