ghub 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|