gitabu 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +33 -0
  4. data/CHANGELOG.md +3 -0
  5. data/Gemfile +10 -0
  6. data/Gemfile.lock +65 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +42 -0
  9. data/Rakefile +12 -0
  10. data/gitabu.gemspec +41 -0
  11. data/lib/gitabu/api/v3/actions.rb +3724 -0
  12. data/lib/gitabu/api/v3/activity.rb +835 -0
  13. data/lib/gitabu/api/v3/apps.rb +961 -0
  14. data/lib/gitabu/api/v3/billing.rb +217 -0
  15. data/lib/gitabu/api/v3/branches.rb +1098 -0
  16. data/lib/gitabu/api/v3/checks.rb +384 -0
  17. data/lib/gitabu/api/v3/code_scanning.rb +315 -0
  18. data/lib/gitabu/api/v3/codes_of_conduct.rb +92 -0
  19. data/lib/gitabu/api/v3/codespaces.rb +650 -0
  20. data/lib/gitabu/api/v3/collaborators.rb +341 -0
  21. data/lib/gitabu/api/v3/commits.rb +428 -0
  22. data/lib/gitabu/api/v3/dependabot.rb +419 -0
  23. data/lib/gitabu/api/v3/deploy_keys.rb +152 -0
  24. data/lib/gitabu/api/v3/deployments.rb +356 -0
  25. data/lib/gitabu/api/v3/emojis.rb +67 -0
  26. data/lib/gitabu/api/v3/enterprise_admin.rb +495 -0
  27. data/lib/gitabu/api/v3/gists.rb +552 -0
  28. data/lib/gitabu/api/v3/git.rb +409 -0
  29. data/lib/gitabu/api/v3/gitignore.rb +92 -0
  30. data/lib/gitabu/api/v3/interactions.rb +275 -0
  31. data/lib/gitabu/api/v3/issues.rb +1119 -0
  32. data/lib/gitabu/api/v3/licenses.rb +118 -0
  33. data/lib/gitabu/api/v3/markdown.rb +94 -0
  34. data/lib/gitabu/api/v3/meta.rb +142 -0
  35. data/lib/gitabu/api/v3/metrics.rb +302 -0
  36. data/lib/gitabu/api/v3/migrations.rb +631 -0
  37. data/lib/gitabu/api/v3/orgs.rb +1291 -0
  38. data/lib/gitabu/api/v3/packages.rb +686 -0
  39. data/lib/gitabu/api/v3/pages.rb +282 -0
  40. data/lib/gitabu/api/v3/projects.rb +693 -0
  41. data/lib/gitabu/api/v3/pulls.rb +816 -0
  42. data/lib/gitabu/api/v3/rate_limit.rb +67 -0
  43. data/lib/gitabu/api/v3/reactions.rb +734 -0
  44. data/lib/gitabu/api/v3/releases.rb +411 -0
  45. data/lib/gitabu/api/v3/repos.rb +1136 -0
  46. data/lib/gitabu/api/v3/scim.rb +214 -0
  47. data/lib/gitabu/api/v3/search.rb +217 -0
  48. data/lib/gitabu/api/v3/secret_scanning.rb +201 -0
  49. data/lib/gitabu/api/v3/teams.rb +1963 -0
  50. data/lib/gitabu/api/v3/users.rb +851 -0
  51. data/lib/gitabu/api/v3/webhooks.rb +379 -0
  52. data/lib/gitabu/builder.rb +37 -0
  53. data/lib/gitabu/client.rb +8 -0
  54. data/lib/gitabu/generator.rb +75 -0
  55. data/lib/gitabu/http_client.rb +96 -0
  56. data/lib/gitabu/items.rb +110 -0
  57. data/lib/gitabu/public/api/v3/actions.json +5779 -0
  58. data/lib/gitabu/public/api/v3/activity.json +1248 -0
  59. data/lib/gitabu/public/api/v3/apps.json +1174 -0
  60. data/lib/gitabu/public/api/v3/billing.json +183 -0
  61. data/lib/gitabu/public/api/v3/branches.json +1886 -0
  62. data/lib/gitabu/public/api/v3/checks.json +856 -0
  63. data/lib/gitabu/public/api/v3/code_scanning.json +666 -0
  64. data/lib/gitabu/public/api/v3/codes_of_conduct.json +41 -0
  65. data/lib/gitabu/public/api/v3/codespaces.json +884 -0
  66. data/lib/gitabu/public/api/v3/collaborators.json +464 -0
  67. data/lib/gitabu/public/api/v3/commits.json +830 -0
  68. data/lib/gitabu/public/api/v3/dependabot.json +596 -0
  69. data/lib/gitabu/public/api/v3/deploy_keys.json +195 -0
  70. data/lib/gitabu/public/api/v3/deployments.json +698 -0
  71. data/lib/gitabu/public/api/v3/emojis.json +18 -0
  72. data/lib/gitabu/public/api/v3/enterprise_admin.json +881 -0
  73. data/lib/gitabu/public/api/v3/gists.json +689 -0
  74. data/lib/gitabu/public/api/v3/git.json +735 -0
  75. data/lib/gitabu/public/api/v3/gitignore.json +41 -0
  76. data/lib/gitabu/public/api/v3/interactions.json +265 -0
  77. data/lib/gitabu/public/api/v3/issues.json +2359 -0
  78. data/lib/gitabu/public/api/v3/licenses.json +100 -0
  79. data/lib/gitabu/public/api/v3/markdown.json +59 -0
  80. data/lib/gitabu/public/api/v3/meta.json +69 -0
  81. data/lib/gitabu/public/api/v3/metrics.json +342 -0
  82. data/lib/gitabu/public/api/v3/migrations.json +960 -0
  83. data/lib/gitabu/public/api/v3/orgs.json +1989 -0
  84. data/lib/gitabu/public/api/v3/packages.json +1078 -0
  85. data/lib/gitabu/public/api/v3/pages.json +373 -0
  86. data/lib/gitabu/public/api/v3/projects.json +966 -0
  87. data/lib/gitabu/public/api/v3/pulls.json +1768 -0
  88. data/lib/gitabu/public/api/v3/rate_limit.json +18 -0
  89. data/lib/gitabu/public/api/v3/reactions.json +1425 -0
  90. data/lib/gitabu/public/api/v3/releases.json +753 -0
  91. data/lib/gitabu/public/api/v3/repos.json +2314 -0
  92. data/lib/gitabu/public/api/v3/scim.json +412 -0
  93. data/lib/gitabu/public/api/v3/search.json +408 -0
  94. data/lib/gitabu/public/api/v3/secret_scanning.json +385 -0
  95. data/lib/gitabu/public/api/v3/teams.json +3126 -0
  96. data/lib/gitabu/public/api/v3/users.json +956 -0
  97. data/lib/gitabu/public/api/v3/webhooks.json +667 -0
  98. data/lib/gitabu/run.rb +237 -0
  99. data/lib/gitabu/scraper.rb +86 -0
  100. data/lib/gitabu/templates/template.rb.erb +70 -0
  101. data/lib/gitabu/version.rb +6 -0
  102. data/lib/gitabu.rb +57 -0
  103. data/sig/gitabu.rbs +4 -0
  104. metadata +177 -0
@@ -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