Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | CLASS zcl_abapgit_pr_enumerator DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS constructor IMPORTING iv_url TYPE string RAISING zcx_abapgit_exception. METHODS get_pulls RETURNING VALUE(rt_pulls) TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests RAISING zcx_abapgit_exception. CLASS-METHODS new IMPORTING iv_url TYPE string RETURNING VALUE(ro_instance) TYPE REF TO zcl_abapgit_pr_enumerator RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_repo_url TYPE string. DATA mi_enum_provider TYPE REF TO zif_abapgit_pr_enum_provider. CLASS-METHODS create_provider IMPORTING iv_repo_url TYPE string RETURNING VALUE(ri_provider) TYPE REF TO zif_abapgit_pr_enum_provider RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_pr_enumerator IMPLEMENTATION. METHOD constructor. mv_repo_url = to_lower( iv_url ). TRY. mi_enum_provider = create_provider( mv_repo_url ). CATCH zcx_abapgit_exception. ENDTRY. ENDMETHOD. METHOD create_provider. DATA li_agent TYPE REF TO zif_abapgit_http_agent. DATA lv_user TYPE string. DATA lv_repo TYPE string. li_agent = zcl_abapgit_factory=>get_http_agent( ). FIND ALL OCCURRENCES OF REGEX 'github\.com\/([^\/]+)\/([^\/]+)' IN iv_repo_url SUBMATCHES lv_user lv_repo. IF sy-subrc = 0. lv_repo = replace( val = lv_repo regex = '\.git$' with = '' ). CREATE OBJECT ri_provider TYPE zcl_abapgit_pr_enum_github EXPORTING iv_user_and_repo = |{ lv_user }/{ lv_repo }| ii_http_agent = li_agent. ELSE. zcx_abapgit_exception=>raise( |PR enumeration is not supported for { iv_repo_url }| ). ENDIF. " TODO somewhen more providers ENDMETHOD. METHOD get_pulls. IF mi_enum_provider IS NOT BOUND. RETURN. ENDIF. rt_pulls = mi_enum_provider->list_pull_requests( ). ENDMETHOD. METHOD new. CREATE OBJECT ro_instance EXPORTING iv_url = iv_url. ENDMETHOD. ENDCLASS. |