gitabu 0.1.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.
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