ghub 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.adoc +134 -0
- data/README.adoc +198 -0
- data/ghub.gemspec +37 -0
- data/lib/ghub/api/client.rb +49 -0
- data/lib/ghub/api/page.rb +59 -0
- data/lib/ghub/client.rb +34 -0
- data/lib/ghub/configuration/content.rb +8 -0
- data/lib/ghub/configuration/loader.rb +30 -0
- data/lib/ghub/container.rb +15 -0
- data/lib/ghub/endpoints/branches/protection/actions/show.rb +31 -0
- data/lib/ghub/endpoints/branches/protection/actions/update.rb +38 -0
- data/lib/ghub/endpoints/branches/protection/container.rb +35 -0
- data/lib/ghub/endpoints/branches/protection/import.rb +13 -0
- data/lib/ghub/endpoints/branches/protection/models/show.rb +48 -0
- data/lib/ghub/endpoints/branches/protection/requests/update.rb +52 -0
- data/lib/ghub/endpoints/branches/protection/responses/show.rb +27 -0
- data/lib/ghub/endpoints/branches/protection/root.rb +26 -0
- data/lib/ghub/endpoints/branches/signature/container.rb +26 -0
- data/lib/ghub/endpoints/branches/signature/import.rb +13 -0
- data/lib/ghub/endpoints/branches/signature/root.rb +48 -0
- data/lib/ghub/endpoints/container.rb +19 -0
- data/lib/ghub/endpoints/import.rb +9 -0
- data/lib/ghub/endpoints/organizations/members/actions/index.rb +32 -0
- data/lib/ghub/endpoints/organizations/members/container.rb +30 -0
- data/lib/ghub/endpoints/organizations/members/import.rb +13 -0
- data/lib/ghub/endpoints/organizations/members/responses/index.rb +14 -0
- data/lib/ghub/endpoints/organizations/members/root.rb +16 -0
- data/lib/ghub/endpoints/pulls/actions/index.rb +28 -0
- data/lib/ghub/endpoints/pulls/actions/show.rb +26 -0
- data/lib/ghub/endpoints/pulls/container.rb +30 -0
- data/lib/ghub/endpoints/pulls/import.rb +11 -0
- data/lib/ghub/endpoints/pulls/models/show.rb +81 -0
- data/lib/ghub/endpoints/pulls/responses/index.rb +12 -0
- data/lib/ghub/endpoints/pulls/responses/show.rb +62 -0
- data/lib/ghub/endpoints/pulls/root.rb +16 -0
- data/lib/ghub/endpoints/repositories/actions/create.rb +37 -0
- data/lib/ghub/endpoints/repositories/actions/index.rb +36 -0
- data/lib/ghub/endpoints/repositories/actions/patch.rb +37 -0
- data/lib/ghub/endpoints/repositories/actions/show.rb +32 -0
- data/lib/ghub/endpoints/repositories/container.rb +39 -0
- data/lib/ghub/endpoints/repositories/import.rb +11 -0
- data/lib/ghub/endpoints/repositories/path.rb +54 -0
- data/lib/ghub/endpoints/repositories/requests/create.rb +32 -0
- data/lib/ghub/endpoints/repositories/requests/patch.rb +38 -0
- data/lib/ghub/endpoints/repositories/responses/index.rb +12 -0
- data/lib/ghub/endpoints/repositories/responses/show.rb +97 -0
- data/lib/ghub/endpoints/repositories/root.rb +28 -0
- data/lib/ghub/endpoints/users/actions/index.rb +28 -0
- data/lib/ghub/endpoints/users/actions/show.rb +24 -0
- data/lib/ghub/endpoints/users/container.rb +31 -0
- data/lib/ghub/endpoints/users/import.rb +11 -0
- data/lib/ghub/endpoints/users/models/index.rb +39 -0
- data/lib/ghub/endpoints/users/models/show.rb +53 -0
- data/lib/ghub/endpoints/users/responses/index.rb +33 -0
- data/lib/ghub/endpoints/users/responses/show.rb +45 -0
- data/lib/ghub/endpoints/users/root.rb +16 -0
- data/lib/ghub/import.rb +7 -0
- data/lib/ghub/models/application.rb +34 -0
- data/lib/ghub/models/boolean_link.rb +13 -0
- data/lib/ghub/models/branch.rb +20 -0
- data/lib/ghub/models/check.rb +17 -0
- data/lib/ghub/models/dismissal_restriction.rb +31 -0
- data/lib/ghub/models/label.rb +22 -0
- data/lib/ghub/models/license.rb +20 -0
- data/lib/ghub/models/link.rb +13 -0
- data/lib/ghub/models/links.rb +28 -0
- data/lib/ghub/models/owner.rb +27 -0
- data/lib/ghub/models/permissions/branch.rb +21 -0
- data/lib/ghub/models/permissions/repository.rb +22 -0
- data/lib/ghub/models/repository.rb +111 -0
- data/lib/ghub/models/restriction.rb +32 -0
- data/lib/ghub/models/review.rb +28 -0
- data/lib/ghub/models/status_check.rb +25 -0
- data/lib/ghub/models/team.rb +27 -0
- data/lib/ghub/models/user.rb +33 -0
- data/lib/ghub/responses/application.rb +42 -0
- data/lib/ghub/responses/boolean_link.rb +11 -0
- data/lib/ghub/responses/branch.rb +14 -0
- data/lib/ghub/responses/dismissal_restriction.rb +15 -0
- data/lib/ghub/responses/label.rb +16 -0
- data/lib/ghub/responses/license.rb +14 -0
- data/lib/ghub/responses/link.rb +8 -0
- data/lib/ghub/responses/links.rb +17 -0
- data/lib/ghub/responses/permission.rb +14 -0
- data/lib/ghub/responses/repository.rb +90 -0
- data/lib/ghub/responses/restriction.rb +16 -0
- data/lib/ghub/responses/review.rb +15 -0
- data/lib/ghub/responses/status_check.rb +20 -0
- data/lib/ghub/responses/team.rb +20 -0
- data/lib/ghub/responses/user.rb +27 -0
- data/lib/ghub/resultable.rb +20 -0
- data/lib/ghub.rb +16 -0
- data.tar.gz.sig +0 -0
- metadata +276 -0
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry/container"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Branches
|
|
8
|
+
module Protection
|
|
9
|
+
# Defines branch protection dependencies.
|
|
10
|
+
module Container
|
|
11
|
+
extend Dry::Container::Mixin
|
|
12
|
+
|
|
13
|
+
merge Ghub::Container
|
|
14
|
+
|
|
15
|
+
namespace :requests do
|
|
16
|
+
register(:update) { Requests::Update }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
namespace :responses do
|
|
20
|
+
register(:show) { Responses::Show }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
namespace :models do
|
|
24
|
+
register(:show) { Models::Show }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
namespace :actions do
|
|
28
|
+
register(:show) { Actions::Show.new }
|
|
29
|
+
register(:update) { Actions::Update.new }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Branches
|
|
6
|
+
module Protection
|
|
7
|
+
module Models
|
|
8
|
+
# Defines branch protection.
|
|
9
|
+
Show = Struct.new(
|
|
10
|
+
:allow_deletions,
|
|
11
|
+
:allow_force_pushes,
|
|
12
|
+
:block_creations,
|
|
13
|
+
:enforce_admins,
|
|
14
|
+
:required_conversation_resolution,
|
|
15
|
+
:required_linear_history,
|
|
16
|
+
:required_pull_request_reviews,
|
|
17
|
+
:required_signatures,
|
|
18
|
+
:required_status_checks,
|
|
19
|
+
:restrictions,
|
|
20
|
+
:url,
|
|
21
|
+
keyword_init: true
|
|
22
|
+
) do
|
|
23
|
+
include Resultable
|
|
24
|
+
|
|
25
|
+
def self.for attributes
|
|
26
|
+
new attributes.merge(
|
|
27
|
+
enforce_admins: Ghub::Models::BooleanLink[attributes[:enforce_admins]],
|
|
28
|
+
required_signatures: Ghub::Models::BooleanLink[attributes[:required_signatures]],
|
|
29
|
+
required_status_checks: Ghub::Models::StatusCheck.for(
|
|
30
|
+
attributes[:required_status_checks]
|
|
31
|
+
),
|
|
32
|
+
required_pull_request_reviews: Ghub::Models::Review.for(
|
|
33
|
+
attributes[:required_pull_request_reviews]
|
|
34
|
+
),
|
|
35
|
+
restrictions: Ghub::Models::Restriction.for(attributes[:restrictions])
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def initialize *arguments
|
|
40
|
+
super
|
|
41
|
+
freeze
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Branches
|
|
6
|
+
module Protection
|
|
7
|
+
module Requests
|
|
8
|
+
# Defines the data structure for updating a protected branch.
|
|
9
|
+
Update = Dry::Schema.JSON do
|
|
10
|
+
required(:enforce_admins).filled :bool
|
|
11
|
+
|
|
12
|
+
required(:required_pull_request_reviews).maybe(:hash) do
|
|
13
|
+
optional(:bypass_pull_request_allowances).hash do
|
|
14
|
+
optional(:users).array :string
|
|
15
|
+
optional(:teams).array :string
|
|
16
|
+
optional(:apps).array :string
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
optional(:dismiss_stale_reviews).filled :bool
|
|
20
|
+
|
|
21
|
+
optional(:dismissal_restrictions).hash do
|
|
22
|
+
optional(:users).array :string
|
|
23
|
+
optional(:teams).array :string
|
|
24
|
+
optional(:apps).array :string
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
optional(:require_code_owner_reviews).filled :bool
|
|
28
|
+
optional(:required_approving_review_count).filled :integer
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
required(:required_status_checks).hash do
|
|
32
|
+
required(:strict).filled :bool
|
|
33
|
+
required(:contexts).array(:string)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
required(:restrictions).maybe(:hash) do
|
|
37
|
+
required(:users).array :string
|
|
38
|
+
required(:teams).array :string
|
|
39
|
+
optional(:apps).array :string
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
optional(:allow_deletions).filled :bool
|
|
43
|
+
optional(:allow_force_pushes).filled :bool
|
|
44
|
+
optional(:block_creations).filled :bool
|
|
45
|
+
optional(:required_conversation_resolution).filled :bool
|
|
46
|
+
optional(:required_linear_history).filled :bool
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Branches
|
|
6
|
+
module Protection
|
|
7
|
+
module Responses
|
|
8
|
+
# Defines a brnach protection response.
|
|
9
|
+
Show = Dry::Schema.Params do
|
|
10
|
+
required(:allow_deletions).hash { required(:enabled).filled :bool }
|
|
11
|
+
required(:allow_force_pushes).hash { required(:enabled).filled :bool }
|
|
12
|
+
required(:block_creations).hash { required(:enabled).filled :bool }
|
|
13
|
+
required(:enforce_admins).hash(Ghub::Responses::BooleanLink)
|
|
14
|
+
required(:required_conversation_resolution).hash { required(:enabled).filled :bool }
|
|
15
|
+
required(:required_linear_history).hash { required(:enabled).filled :bool }
|
|
16
|
+
required(:required_signatures).hash(Ghub::Responses::BooleanLink)
|
|
17
|
+
required(:required_status_checks).hash(Ghub::Responses::StatusCheck)
|
|
18
|
+
required(:url).filled :string
|
|
19
|
+
|
|
20
|
+
optional(:required_pull_request_reviews).hash(Ghub::Responses::Review)
|
|
21
|
+
optional(:restrictions).hash(Ghub::Responses::Restriction)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Branches
|
|
6
|
+
module Protection
|
|
7
|
+
# Provides access to the branch protection API endpoint.
|
|
8
|
+
class Root
|
|
9
|
+
include Protection::Import[
|
|
10
|
+
:client,
|
|
11
|
+
show_action: "actions.show",
|
|
12
|
+
update_action: "actions.update"
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
def show(...) = show_action.call(...)
|
|
16
|
+
|
|
17
|
+
def update(...) = update_action.call(...)
|
|
18
|
+
|
|
19
|
+
def destroy owner, repository, branch
|
|
20
|
+
client.delete "repos/#{owner}/#{repository}/branches/#{branch}/protection"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry/container"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Branches
|
|
8
|
+
module Signature
|
|
9
|
+
# Defines branch signature dependencies.
|
|
10
|
+
module Container
|
|
11
|
+
extend Dry::Container::Mixin
|
|
12
|
+
|
|
13
|
+
merge Ghub::Container
|
|
14
|
+
|
|
15
|
+
namespace :responses do
|
|
16
|
+
register(:show) { Ghub::Responses::BooleanLink }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
namespace :models do
|
|
20
|
+
register(:show) { Ghub::Models::BooleanLink }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "transactable"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Branches
|
|
8
|
+
module Signature
|
|
9
|
+
# Provides access to the branch signature API endpoint.
|
|
10
|
+
class Root
|
|
11
|
+
include Signature::Import[:client, response: "responses.show", model: "models.show"]
|
|
12
|
+
include Transactable
|
|
13
|
+
|
|
14
|
+
PATH = "repos/%{owner}/%{repository}/branches/%{branch}/protection/required_signatures"
|
|
15
|
+
|
|
16
|
+
def initialize path: PATH, **dependencies
|
|
17
|
+
super(**dependencies)
|
|
18
|
+
@path = path
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def show owner, repository, branch
|
|
22
|
+
pipe format(path, owner:, repository:, branch:),
|
|
23
|
+
to(client, :get),
|
|
24
|
+
try(:parse, catch: JSON::ParserError),
|
|
25
|
+
validate(response),
|
|
26
|
+
to(model, :new)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def create owner, repository, branch
|
|
30
|
+
pipe format(path, owner:, repository:, branch:),
|
|
31
|
+
to(client, :post),
|
|
32
|
+
try(:parse, catch: JSON::ParserError),
|
|
33
|
+
validate(response),
|
|
34
|
+
to(model, :new)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def destroy owner, repository, branch
|
|
38
|
+
client.delete format(path, owner:, repository:, branch:)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
attr_reader :path
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry/container"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
# Defines endpoint dependencies.
|
|
8
|
+
module Container
|
|
9
|
+
extend Dry::Container::Mixin
|
|
10
|
+
|
|
11
|
+
register(:branch_protection) { Endpoints::Branches::Protection::Root.new }
|
|
12
|
+
register(:branch_signature) { Endpoints::Branches::Signature::Root.new }
|
|
13
|
+
register(:organization_members) { Endpoints::Organizations::Members::Root.new }
|
|
14
|
+
register(:pulls) { Endpoints::Pulls::Root.new }
|
|
15
|
+
register(:repositories) { Endpoints::Repositories::Root.new }
|
|
16
|
+
register(:users) { Endpoints::Users::Root.new }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "transactable"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Organizations
|
|
8
|
+
module Members
|
|
9
|
+
module Actions
|
|
10
|
+
# Handles an organization member index action.
|
|
11
|
+
class Index
|
|
12
|
+
include Members::Import[:client, response: "responses.index", model: "models.show"]
|
|
13
|
+
include Transactable
|
|
14
|
+
|
|
15
|
+
def call owner, **parameters
|
|
16
|
+
pipe(
|
|
17
|
+
"orgs/#{owner}/members",
|
|
18
|
+
insert(parameters),
|
|
19
|
+
to(client, :get),
|
|
20
|
+
try(:parse, catch: JSON::ParserError),
|
|
21
|
+
fmap { |body| {body:} },
|
|
22
|
+
validate(response),
|
|
23
|
+
as(:fetch, :body),
|
|
24
|
+
map { |item| model.new item }
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry/container"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Organizations
|
|
8
|
+
module Members
|
|
9
|
+
# Defines member dependencies.
|
|
10
|
+
module Container
|
|
11
|
+
extend Dry::Container::Mixin
|
|
12
|
+
|
|
13
|
+
merge Ghub::Container
|
|
14
|
+
|
|
15
|
+
namespace :responses do
|
|
16
|
+
register(:index) { Responses::Index }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
namespace :models do
|
|
20
|
+
register(:show) { Ghub::Models::User }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
namespace :actions do
|
|
24
|
+
register(:index) { Actions::Index.new }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Organizations
|
|
6
|
+
module Members
|
|
7
|
+
module Responses
|
|
8
|
+
# Defines a collection of members.
|
|
9
|
+
Index = Dry::Schema.Params { required(:body).array :hash, Ghub::Responses::User }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Organizations
|
|
6
|
+
module Members
|
|
7
|
+
# Provides access to the organization members API endpoint.
|
|
8
|
+
class Root
|
|
9
|
+
include Members::Import[index_action: "actions.index"]
|
|
10
|
+
|
|
11
|
+
def index(...) = index_action.call(...)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "transactable"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Pulls
|
|
8
|
+
module Actions
|
|
9
|
+
# Handles a repository index action.
|
|
10
|
+
class Index
|
|
11
|
+
include Pulls::Import[:client, response: "responses.index", model: "models.show"]
|
|
12
|
+
include Transactable
|
|
13
|
+
|
|
14
|
+
def call owner, repository, **parameters
|
|
15
|
+
pipe(
|
|
16
|
+
client.get("repos/#{owner}/#{repository}/pulls", **parameters),
|
|
17
|
+
try(:parse, catch: JSON::ParserError),
|
|
18
|
+
fmap { |body| {body:} },
|
|
19
|
+
validate(response),
|
|
20
|
+
as(:fetch, :body),
|
|
21
|
+
map { |item| model.for item }
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "transactable"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Pulls
|
|
8
|
+
module Actions
|
|
9
|
+
# Handles a repository index action.
|
|
10
|
+
class Show
|
|
11
|
+
include Pulls::Import[:client, response: "responses.show", model: "models.show"]
|
|
12
|
+
include Transactable
|
|
13
|
+
|
|
14
|
+
def call owner, repository, id, **parameters
|
|
15
|
+
pipe(
|
|
16
|
+
client.get("repos/#{owner}/#{repository}/pulls/#{id}", **parameters),
|
|
17
|
+
try(:parse, catch: JSON::ParserError),
|
|
18
|
+
validate(response),
|
|
19
|
+
to(model, :for)
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry/container"
|
|
4
|
+
|
|
5
|
+
module Ghub
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Pulls
|
|
8
|
+
# Defines pull request dependencies.
|
|
9
|
+
module Container
|
|
10
|
+
extend Dry::Container::Mixin
|
|
11
|
+
|
|
12
|
+
merge Ghub::Container
|
|
13
|
+
|
|
14
|
+
namespace :responses do
|
|
15
|
+
register(:index) { Responses::Index }
|
|
16
|
+
register(:show) { Responses::Show }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
namespace :models do
|
|
20
|
+
register(:show) { Models::Show }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
namespace :actions do
|
|
24
|
+
register(:index) { Actions::Index.new }
|
|
25
|
+
register(:show) { Actions::Show.new }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ghub
|
|
4
|
+
module Endpoints
|
|
5
|
+
module Pulls
|
|
6
|
+
module Models
|
|
7
|
+
# Defines a single pull request.
|
|
8
|
+
Show = Struct.new(
|
|
9
|
+
:_links,
|
|
10
|
+
:active_lock_reason,
|
|
11
|
+
:additions,
|
|
12
|
+
:assignee,
|
|
13
|
+
:assignees,
|
|
14
|
+
:author_association,
|
|
15
|
+
:auto_merge,
|
|
16
|
+
:base,
|
|
17
|
+
:body,
|
|
18
|
+
:changed_files,
|
|
19
|
+
:closed_at,
|
|
20
|
+
:comments,
|
|
21
|
+
:comments_url,
|
|
22
|
+
:commits,
|
|
23
|
+
:commits_url,
|
|
24
|
+
:created_at,
|
|
25
|
+
:deletions,
|
|
26
|
+
:diff_url,
|
|
27
|
+
:draft,
|
|
28
|
+
:head,
|
|
29
|
+
:html_url,
|
|
30
|
+
:id,
|
|
31
|
+
:issue_url,
|
|
32
|
+
:labels,
|
|
33
|
+
:locked,
|
|
34
|
+
:maintainer_can_modify,
|
|
35
|
+
:mergable,
|
|
36
|
+
:merge_commit_sha,
|
|
37
|
+
:mergeable_state,
|
|
38
|
+
:merged,
|
|
39
|
+
:merged_at,
|
|
40
|
+
:merged_by,
|
|
41
|
+
:milestone,
|
|
42
|
+
:node_id,
|
|
43
|
+
:number,
|
|
44
|
+
:patch_url,
|
|
45
|
+
:rebaseable,
|
|
46
|
+
:requested_reviewers,
|
|
47
|
+
:requested_teams,
|
|
48
|
+
:review_comment_url,
|
|
49
|
+
:review_comments,
|
|
50
|
+
:review_comments_url,
|
|
51
|
+
:state,
|
|
52
|
+
:statuses_url,
|
|
53
|
+
:title,
|
|
54
|
+
:updated_at,
|
|
55
|
+
:url,
|
|
56
|
+
:user,
|
|
57
|
+
keyword_init: true
|
|
58
|
+
) do
|
|
59
|
+
include Resultable
|
|
60
|
+
|
|
61
|
+
def self.for attributes
|
|
62
|
+
new attributes.merge(
|
|
63
|
+
_links: Ghub::Models::Links.for(attributes[:_links]),
|
|
64
|
+
assignee: Ghub::Models::User[attributes[:assignee]],
|
|
65
|
+
assignees: attributes[:assignees].map { |data| Ghub::Models::User[data] },
|
|
66
|
+
base: Ghub::Models::Branch[attributes[:base]],
|
|
67
|
+
head: Ghub::Models::Branch[attributes[:head]],
|
|
68
|
+
labels: attributes[:labels].map { |data| Ghub::Models::Label[data] },
|
|
69
|
+
user: Ghub::Models::User[attributes[:user]]
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def initialize *arguments
|
|
74
|
+
super
|
|
75
|
+
freeze
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|