gitabu 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +33 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +65 -0
- data/LICENSE.txt +21 -0
- data/README.md +42 -0
- data/Rakefile +12 -0
- data/gitabu.gemspec +41 -0
- data/lib/gitabu/api/v3/actions.rb +3724 -0
- data/lib/gitabu/api/v3/activity.rb +835 -0
- data/lib/gitabu/api/v3/apps.rb +961 -0
- data/lib/gitabu/api/v3/billing.rb +217 -0
- data/lib/gitabu/api/v3/branches.rb +1098 -0
- data/lib/gitabu/api/v3/checks.rb +384 -0
- data/lib/gitabu/api/v3/code_scanning.rb +315 -0
- data/lib/gitabu/api/v3/codes_of_conduct.rb +92 -0
- data/lib/gitabu/api/v3/codespaces.rb +650 -0
- data/lib/gitabu/api/v3/collaborators.rb +341 -0
- data/lib/gitabu/api/v3/commits.rb +428 -0
- data/lib/gitabu/api/v3/dependabot.rb +419 -0
- data/lib/gitabu/api/v3/deploy_keys.rb +152 -0
- data/lib/gitabu/api/v3/deployments.rb +356 -0
- data/lib/gitabu/api/v3/emojis.rb +67 -0
- data/lib/gitabu/api/v3/enterprise_admin.rb +495 -0
- data/lib/gitabu/api/v3/gists.rb +552 -0
- data/lib/gitabu/api/v3/git.rb +409 -0
- data/lib/gitabu/api/v3/gitignore.rb +92 -0
- data/lib/gitabu/api/v3/interactions.rb +275 -0
- data/lib/gitabu/api/v3/issues.rb +1119 -0
- data/lib/gitabu/api/v3/licenses.rb +118 -0
- data/lib/gitabu/api/v3/markdown.rb +94 -0
- data/lib/gitabu/api/v3/meta.rb +142 -0
- data/lib/gitabu/api/v3/metrics.rb +302 -0
- data/lib/gitabu/api/v3/migrations.rb +631 -0
- data/lib/gitabu/api/v3/orgs.rb +1291 -0
- data/lib/gitabu/api/v3/packages.rb +686 -0
- data/lib/gitabu/api/v3/pages.rb +282 -0
- data/lib/gitabu/api/v3/projects.rb +693 -0
- data/lib/gitabu/api/v3/pulls.rb +816 -0
- data/lib/gitabu/api/v3/rate_limit.rb +67 -0
- data/lib/gitabu/api/v3/reactions.rb +734 -0
- data/lib/gitabu/api/v3/releases.rb +411 -0
- data/lib/gitabu/api/v3/repos.rb +1136 -0
- data/lib/gitabu/api/v3/scim.rb +214 -0
- data/lib/gitabu/api/v3/search.rb +217 -0
- data/lib/gitabu/api/v3/secret_scanning.rb +201 -0
- data/lib/gitabu/api/v3/teams.rb +1963 -0
- data/lib/gitabu/api/v3/users.rb +851 -0
- data/lib/gitabu/api/v3/webhooks.rb +379 -0
- data/lib/gitabu/builder.rb +37 -0
- data/lib/gitabu/client.rb +8 -0
- data/lib/gitabu/generator.rb +75 -0
- data/lib/gitabu/http_client.rb +96 -0
- data/lib/gitabu/items.rb +110 -0
- data/lib/gitabu/public/api/v3/actions.json +5779 -0
- data/lib/gitabu/public/api/v3/activity.json +1248 -0
- data/lib/gitabu/public/api/v3/apps.json +1174 -0
- data/lib/gitabu/public/api/v3/billing.json +183 -0
- data/lib/gitabu/public/api/v3/branches.json +1886 -0
- data/lib/gitabu/public/api/v3/checks.json +856 -0
- data/lib/gitabu/public/api/v3/code_scanning.json +666 -0
- data/lib/gitabu/public/api/v3/codes_of_conduct.json +41 -0
- data/lib/gitabu/public/api/v3/codespaces.json +884 -0
- data/lib/gitabu/public/api/v3/collaborators.json +464 -0
- data/lib/gitabu/public/api/v3/commits.json +830 -0
- data/lib/gitabu/public/api/v3/dependabot.json +596 -0
- data/lib/gitabu/public/api/v3/deploy_keys.json +195 -0
- data/lib/gitabu/public/api/v3/deployments.json +698 -0
- data/lib/gitabu/public/api/v3/emojis.json +18 -0
- data/lib/gitabu/public/api/v3/enterprise_admin.json +881 -0
- data/lib/gitabu/public/api/v3/gists.json +689 -0
- data/lib/gitabu/public/api/v3/git.json +735 -0
- data/lib/gitabu/public/api/v3/gitignore.json +41 -0
- data/lib/gitabu/public/api/v3/interactions.json +265 -0
- data/lib/gitabu/public/api/v3/issues.json +2359 -0
- data/lib/gitabu/public/api/v3/licenses.json +100 -0
- data/lib/gitabu/public/api/v3/markdown.json +59 -0
- data/lib/gitabu/public/api/v3/meta.json +69 -0
- data/lib/gitabu/public/api/v3/metrics.json +342 -0
- data/lib/gitabu/public/api/v3/migrations.json +960 -0
- data/lib/gitabu/public/api/v3/orgs.json +1989 -0
- data/lib/gitabu/public/api/v3/packages.json +1078 -0
- data/lib/gitabu/public/api/v3/pages.json +373 -0
- data/lib/gitabu/public/api/v3/projects.json +966 -0
- data/lib/gitabu/public/api/v3/pulls.json +1768 -0
- data/lib/gitabu/public/api/v3/rate_limit.json +18 -0
- data/lib/gitabu/public/api/v3/reactions.json +1425 -0
- data/lib/gitabu/public/api/v3/releases.json +753 -0
- data/lib/gitabu/public/api/v3/repos.json +2314 -0
- data/lib/gitabu/public/api/v3/scim.json +412 -0
- data/lib/gitabu/public/api/v3/search.json +408 -0
- data/lib/gitabu/public/api/v3/secret_scanning.json +385 -0
- data/lib/gitabu/public/api/v3/teams.json +3126 -0
- data/lib/gitabu/public/api/v3/users.json +956 -0
- data/lib/gitabu/public/api/v3/webhooks.json +667 -0
- data/lib/gitabu/run.rb +237 -0
- data/lib/gitabu/scraper.rb +86 -0
- data/lib/gitabu/templates/template.rb.erb +70 -0
- data/lib/gitabu/version.rb +6 -0
- data/lib/gitabu.rb +57 -0
- data/sig/gitabu.rbs +4 -0
- metadata +177 -0
data/lib/gitabu/items.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Ruby gem that helps you work with Github API.
|
4
|
+
module Gitabu
|
5
|
+
# Items of Github API documentation that get populated into ruby templates.
|
6
|
+
class Items
|
7
|
+
attr_accessor :json_spec_result, :version
|
8
|
+
|
9
|
+
def self.items(json_spec_result:, version:)
|
10
|
+
new(json_spec_result, version).items
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(json_spec_result, version)
|
14
|
+
@json_spec_result = json_spec_result
|
15
|
+
@version = version
|
16
|
+
end
|
17
|
+
|
18
|
+
def items
|
19
|
+
collection = []
|
20
|
+
|
21
|
+
json_spec_result.each do |block|
|
22
|
+
fields = block.except("namespace_description", "method", "endpoint")
|
23
|
+
values = values_from(fields)
|
24
|
+
collection << api_hash_for(block, values)
|
25
|
+
end
|
26
|
+
|
27
|
+
collection
|
28
|
+
end
|
29
|
+
|
30
|
+
def values_from(fields)
|
31
|
+
auth = []
|
32
|
+
body = []
|
33
|
+
documentation = []
|
34
|
+
headers = []
|
35
|
+
params = []
|
36
|
+
params_flat = []
|
37
|
+
params_kv = []
|
38
|
+
params_kv_no_nil = []
|
39
|
+
|
40
|
+
fields.each do |_, value|
|
41
|
+
auth << get_auth_from(value) if value["field_type"] == "auth"
|
42
|
+
body << get_body_from(value) if value["field_type"] == "body"
|
43
|
+
documentation << get_docu_from(value) if %w[body path].include?(value["field_type"])
|
44
|
+
headers << get_headers_from(value) if value["field_type"] == "header"
|
45
|
+
params << get_params_from(value) if value["field_type"] == "query"
|
46
|
+
params_flat << get_params_flat_from(value) if %w[body path].include?(value["field_type"])
|
47
|
+
params_kv << get_params_kv_from(value) if %w[body path].include?(value["field_type"])
|
48
|
+
params_kv_no_nil << get_params_kv_no_nil_from(value) if %w[body path].include?(value["field_type"])
|
49
|
+
end
|
50
|
+
|
51
|
+
{
|
52
|
+
auth: auth, body: body, documentation: documentation, headers: headers,
|
53
|
+
params: params, params_flat: params_flat, params_kv: params_kv, params_kv_no_nil: params_kv_no_nil
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def get_auth_from(value)
|
58
|
+
"#{value["fields"]["name"]}: #{value["fields"]["name"]}"
|
59
|
+
end
|
60
|
+
|
61
|
+
def get_body_from(value)
|
62
|
+
"#{value["fields"]["name"]}: #{value["fields"]["name"]}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def get_docu_from(value)
|
66
|
+
"# @param #{value["fields"]["name"]} [#{value["fields"]["type"].capitalize}] #{value["fields"]["description"]}"
|
67
|
+
end
|
68
|
+
|
69
|
+
def get_headers_from(value)
|
70
|
+
if value["fields"]["name"] == "accept"
|
71
|
+
"#{value["fields"]["name"]}: 'application/vnd.github.v#{version}+json'"
|
72
|
+
else
|
73
|
+
"#{value["fields"]["name"]}: #{value["fields"]["name"]}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_params_from(value)
|
78
|
+
"#{value["fields"]["name"]}: options[:#{value["fields"]["name"]}]"
|
79
|
+
end
|
80
|
+
|
81
|
+
def get_params_flat_from(value)
|
82
|
+
value["fields"]["name"].to_s
|
83
|
+
end
|
84
|
+
|
85
|
+
def get_params_kv_from(value)
|
86
|
+
"#{value["fields"]["name"]}: nil"
|
87
|
+
end
|
88
|
+
|
89
|
+
def get_params_kv_no_nil_from(value)
|
90
|
+
"#{value["fields"]["name"]}: #{value["fields"]["name"]}"
|
91
|
+
end
|
92
|
+
|
93
|
+
def api_hash_for(block, values)
|
94
|
+
api_hash = {}
|
95
|
+
api_hash["http_method"] = block["method"]
|
96
|
+
api_hash["endpoint"] = block["endpoint"].gsub("{", '#{')
|
97
|
+
api_hash["description"] = block["namespace_description"].downcase
|
98
|
+
api_hash["method_name"] = block["namespace_description"].downcase.gsub("-", "_").split(" ").join("_")
|
99
|
+
api_hash["auth"] = values[:auth].size.zero? ? "nil" : "{ #{values[:auth].join(", ")} }"
|
100
|
+
api_hash["body"] = values[:body].size.zero? ? "nil" : "{ #{values[:body].join(", ")} }"
|
101
|
+
api_hash["documentation"] = values[:documentation].size.zero? ? "# @params options [Hash]" : values[:documentation].join("\n\t\t\t\t")
|
102
|
+
api_hash["headers"] = values[:headers].size.zero? ? "nil" : "{ #{values[:headers].join(", ")} }"
|
103
|
+
api_hash["params"] = values[:params].size.zero? ? "nil" : "{ #{values[:params].join(", ")} }"
|
104
|
+
api_hash["path_params_flat"] = values[:params_flat].size.zero? ? "(options)" : "(#{values[:params_flat].join(", ")}, options)"
|
105
|
+
api_hash["params_key_value"] = values[:params_kv].size.zero? ? "(options: nil)" : "(#{values[:params_kv].join(", ")}, options: nil)"
|
106
|
+
api_hash["params_key_value_without_nil"] = values[:params_kv_no_nil].size.zero? ? "options: options)" : "(#{values[:params_kv_no_nil].join(", ")}, options: nil)"
|
107
|
+
api_hash
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|