All files / output zcl_abapgit_pr_enumerator.clas.mjs

79.81% Statements 87/109
42.85% Branches 9/21
47.05% Functions 8/17
79.81% Lines 87/109

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 104 105 106 107 108 1091x 1x 3x 3x 3x 3x 3x 3x 3x 1x 1x                   1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x     3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x       3x 3x     3x 3x     3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x     3x 3x     3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x
const {cx_root} = await import("./cx_root.clas.mjs");
// zcl_abapgit_pr_enumerator.clas.abap
class zcl_abapgit_pr_enumerator {
  static INTERNAL_TYPE = 'CLAS';
  static INTERNAL_NAME = 'ZCL_ABAPGIT_PR_ENUMERATOR';
  static IMPLEMENTED_INTERFACES = [];
  static ATTRIBUTES = {"MV_REPO_URL": {"type": () => {return new abap.types.String({qualifiedName: "STRING"});}, "visibility": "I", "is_constant": " ", "is_class": " "},
  "MI_ENUM_PROVIDER": {"type": () => {return new abap.types.ABAPObject({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER", RTTIName: "\\INTERFACE=ZIF_ABAPGIT_PR_ENUM_PROVIDER"});}, "visibility": "I", "is_constant": " ", "is_class": " "}};
  static METHODS = {"CREATE_PROVIDER": {"visibility": "I", "parameters": {"RI_PROVIDER": {"type": () => {return new abap.types.ABAPObject({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER", RTTIName: "\\INTERFACE=ZIF_ABAPGIT_PR_ENUM_PROVIDER"});}, "is_optional": " "}, "IV_REPO_URL": {"type": () => {return new abap.types.String({qualifiedName: "STRING"});}, "is_optional": " "}}},
  "CONSTRUCTOR": {"visibility": "U", "parameters": {"IV_URL": {"type": () => {return new abap.types.String({qualifiedName: "STRING"});}, "is_optional": " "}}},
  "GET_PULLS": {"visibility": "U", "parameters": {"RT_PULLS": {"type": () => {return abap.types.TableFactory.construct(new abap.types.Structure({
  "base_url": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-BASE_URL"}),
  "number": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-NUMBER"}),
  "title": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-TITLE"}),
  "user": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-USER"}),
  "head_url": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-HEAD_URL"}),
  "head_branch": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-HEAD_BRANCH"}),
  "created_at": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-CREATED_AT"}),
  "is_for_upstream": new abap.types.Character(1, {"qualifiedName":"ABAP_BOOL","ddicName":"ABAP_BOOL"}),
  "draft": new abap.types.Character(1, {"qualifiedName":"ABAP_BOOL","ddicName":"ABAP_BOOL"}),
  "html_url": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-HTML_URL"})}, "zif_abapgit_pr_enum_provider=>ty_pull_request", undefined, {}, {}), {"withHeader":false,"keyType":"USER","primaryKey":{"name":"primary_key","type":"STANDARD","isUnique":false,"keyFields":["BASE_URL","NUMBER"]},"secondary":[]}, "zif_abapgit_pr_enum_provider=>ty_pull_requests");}, "is_optional": " "}}},
  "NEW": {"visibility": "U", "parameters": {"RO_INSTANCE": {"type": () => {return new abap.types.ABAPObject({qualifiedName: "ZCL_ABAPGIT_PR_ENUMERATOR", RTTIName: "\\CLASS=ZCL_ABAPGIT_PR_ENUMERATOR"});}, "is_optional": " "}, "IV_URL": {"type": () => {return new abap.types.String({qualifiedName: "STRING"});}, "is_optional": " "}}}};
  #mv_repo_url;
  #mi_enum_provider;
  constructor() {
    this.me = new abap.types.ABAPObject();
    this.me.set(this);
    this.INTERNAL_ID = abap.internalIdCounter++;
    this.FRIENDS_ACCESS_INSTANCE = {
      "get_pulls": this.get_pulls.bind(this),
    };
    this.#mv_repo_url = new abap.types.String({qualifiedName: "STRING"});
    this.FRIENDS_ACCESS_INSTANCE["mv_repo_url"] = this.#mv_repo_url;
    this.#mi_enum_provider = new abap.types.ABAPObject({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER", RTTIName: "\\INTERFACE=ZIF_ABAPGIT_PR_ENUM_PROVIDER"});
    this.FRIENDS_ACCESS_INSTANCE["mi_enum_provider"] = this.#mi_enum_provider;
  }
  async constructor_(INPUT) {
    let iv_url = INPUT?.iv_url;
    if (iv_url?.getQualifiedName === undefined || iv_url.getQualifiedName() !== "STRING") { iv_url = undefined; }
    if (iv_url === undefined) { iv_url = new abap.types.String({qualifiedName: "STRING"}).set(INPUT.iv_url); }
    this.#mv_repo_url.set(abap.builtin.to_lower({val: iv_url}));
    try {
      this.#mi_enum_provider.set((await this.create_provider({iv_repo_url: this.#mv_repo_url})));
    } catch (e) {
      if ((abap.Classes['ZCX_ABAPGIT_EXCEPTION'] && e instanceof abap.Classes['ZCX_ABAPGIT_EXCEPTION'])) {
      } else {
        throw e;
      }
    }
    return this;
  }
  async create_provider(INPUT) {
    return zcl_abapgit_pr_enumerator.create_provider(INPUT);
  }
  static async create_provider(INPUT) {
    let ri_provider = new abap.types.ABAPObject({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER", RTTIName: "\\INTERFACE=ZIF_ABAPGIT_PR_ENUM_PROVIDER"});
    let iv_repo_url = INPUT?.iv_repo_url;
    if (iv_repo_url?.getQualifiedName === undefined || iv_repo_url.getQualifiedName() !== "STRING") { iv_repo_url = undefined; }
    if (iv_repo_url === undefined) { iv_repo_url = new abap.types.String({qualifiedName: "STRING"}).set(INPUT.iv_repo_url); }
    let li_agent = new abap.types.ABAPObject({qualifiedName: "ZIF_ABAPGIT_HTTP_AGENT", RTTIName: "\\INTERFACE=ZIF_ABAPGIT_HTTP_AGENT"});
    let lv_user = new abap.types.String({qualifiedName: "STRING"});
    let lv_repo = new abap.types.String({qualifiedName: "STRING"});
    li_agent.set((await abap.Classes['ZCL_ABAPGIT_HTTP_AGENT'].create()));
    abap.statements.find(iv_repo_url, {regex: abap.CharacterFactory.get(31, 'github\\.com\\/([^\\/]+)\\/([^\\/]+)'), first: false, submatches: [lv_user,lv_repo]});
    if (abap.compare.eq(abap.builtin.sy.get().subrc, abap.IntegerFactory.get(0))) {
      lv_repo.set(abap.builtin.replace({val: lv_repo, regex: abap.CharacterFactory.get(6, '\\.git$'), with: abap.CharacterFactory.get(1, '')}));
      ri_provider.set(await (new abap.Classes['ZCL_ABAPGIT_PR_ENUM_GITHUB']()).constructor_({iv_user_and_repo: new abap.types.String().set(`${abap.templateFormatting(lv_user)}/${abap.templateFormatting(lv_repo)}`), ii_http_agent: li_agent}));
    }
    abap.statements.find(iv_repo_url, {regex: abap.CharacterFactory.get(34, 'localhost:3050\\/([^\\/]+)\\/([^\\/]+)'), first: false, submatches: [lv_user,lv_repo]});
    if (abap.compare.eq(abap.builtin.sy.get().subrc, abap.IntegerFactory.get(0))) {
      ri_provider.set(await (new abap.Classes['ZCL_ABAPGIT_PR_ENUM_GITEA']()).constructor_({iv_user_and_repo: new abap.types.String().set(`${abap.templateFormatting(lv_user)}/${abap.templateFormatting(lv_repo)}`), ii_http_agent: li_agent}));
    }
    if (abap.compare.initial(ri_provider)) {
      await abap.Classes['ZCX_ABAPGIT_EXCEPTION'].raise({iv_text: new abap.types.String().set(`PR enumeration is not supported for ${abap.templateFormatting(iv_repo_url)}`)});
    }
    return ri_provider;
  }
  async get_pulls() {
    let rt_pulls = abap.types.TableFactory.construct(new abap.types.Structure({
    "base_url": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-BASE_URL"}),
    "number": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-NUMBER"}),
    "title": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-TITLE"}),
    "user": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-USER"}),
    "head_url": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-HEAD_URL"}),
    "head_branch": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-HEAD_BRANCH"}),
    "created_at": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-CREATED_AT"}),
    "is_for_upstream": new abap.types.Character(1, {"qualifiedName":"ABAP_BOOL","ddicName":"ABAP_BOOL"}),
    "draft": new abap.types.Character(1, {"qualifiedName":"ABAP_BOOL","ddicName":"ABAP_BOOL"}),
    "html_url": new abap.types.String({qualifiedName: "ZIF_ABAPGIT_PR_ENUM_PROVIDER=>TY_PULL_REQUEST-HTML_URL"})}, "zif_abapgit_pr_enum_provider=>ty_pull_request", undefined, {}, {}), {"withHeader":false,"keyType":"USER","primaryKey":{"name":"primary_key","type":"STANDARD","isUnique":false,"keyFields":["BASE_URL","NUMBER"]},"secondary":[]}, "zif_abapgit_pr_enum_provider=>ty_pull_requests");
    if (abap.compare.initial(this.#mi_enum_provider)) {
      return rt_pulls;
    }
    rt_pulls.set((await this.#mi_enum_provider.get().zif_abapgit_pr_enum_provider$list_pull_requests()));
    return rt_pulls;
  }
  async new(INPUT) {
    return zcl_abapgit_pr_enumerator.new(INPUT);
  }
  static async new(INPUT) {
    let ro_instance = new abap.types.ABAPObject({qualifiedName: "ZCL_ABAPGIT_PR_ENUMERATOR", RTTIName: "\\CLASS=ZCL_ABAPGIT_PR_ENUMERATOR"});
    let iv_url = INPUT?.iv_url;
    if (iv_url?.getQualifiedName === undefined || iv_url.getQualifiedName() !== "STRING") { iv_url = undefined; }
    if (iv_url === undefined) { iv_url = new abap.types.String({qualifiedName: "STRING"}).set(INPUT.iv_url); }
    ro_instance.set(await (new abap.Classes['ZCL_ABAPGIT_PR_ENUMERATOR']()).constructor_({iv_url: iv_url}));
    return ro_instance;
  }
}
abap.Classes['ZCL_ABAPGIT_PR_ENUMERATOR'] = zcl_abapgit_pr_enumerator;
export {zcl_abapgit_pr_enumerator};