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
|
VALUE(rv_url) TYPE string
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
|
METHODS validate_url
|
||||||
|
IMPORTING
|
||||||
|
!iv_url TYPE string
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
METHODS get_default_commit_display_url
|
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.
|
METHOD get_commit_display_url.
|
||||||
|
@ -81,4 +88,26 @@ CLASS ZCL_ABAPGIT_GIT_URL IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
|
@ -72,6 +72,23 @@ ENDCLASS.
|
||||||
CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
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.
|
METHOD constructor.
|
||||||
super->constructor( ).
|
super->constructor( ).
|
||||||
CREATE OBJECT mo_validation_log.
|
CREATE OBJECT mo_validation_log.
|
||||||
|
@ -168,13 +185,21 @@ CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD validate_form.
|
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 ).
|
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.
|
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.
|
CATCH zcx_abapgit_exception INTO lx_err.
|
||||||
ro_validation_log->set(
|
ro_validation_log->set(
|
||||||
iv_key = c_id-url
|
iv_key = c_id-url
|
||||||
|
@ -312,22 +337,4 @@ CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
||||||
io_validation_log = mo_validation_log ) ).
|
io_validation_log = mo_validation_log ) ).
|
||||||
ri_html->add( '</div>' ).
|
ri_html->add( '</div>' ).
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
|
@ -796,6 +796,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
||||||
DATA:
|
DATA:
|
||||||
lx_error TYPE REF TO zcx_abapgit_exception,
|
lx_error TYPE REF TO zcx_abapgit_exception,
|
||||||
lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list,
|
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_offline TYPE abap_bool,
|
||||||
lv_head_type TYPE ty_head_type,
|
lv_head_type TYPE ty_head_type,
|
||||||
lv_branch TYPE ty_remote_settings-branch,
|
lv_branch TYPE ty_remote_settings-branch,
|
||||||
|
@ -823,6 +824,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
||||||
zcl_abapgit_url=>name(
|
zcl_abapgit_url=>name(
|
||||||
iv_url = lv_url
|
iv_url = lv_url
|
||||||
iv_validate = abap_true ).
|
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.
|
CATCH zcx_abapgit_exception INTO lx_error.
|
||||||
ro_validation_log->set(
|
ro_validation_log->set(
|
||||||
iv_key = c_id-url
|
iv_key = c_id-url
|
||||||
|
|
Loading…
Reference in New Issue
Block a user