openlayer 0.3.0 → 0.4.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 (230) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +23 -0
  4. data/README.md +280 -39
  5. data/SECURITY.md +27 -0
  6. data/lib/openlayer/client.rb +64 -59
  7. data/lib/openlayer/errors.rb +228 -0
  8. data/lib/openlayer/file_part.rb +58 -0
  9. data/lib/openlayer/internal/transport/base_client.rb +567 -0
  10. data/lib/openlayer/internal/transport/pooled_net_requester.rb +198 -0
  11. data/lib/openlayer/internal/type/array_of.rb +168 -0
  12. data/lib/openlayer/internal/type/base_model.rb +531 -0
  13. data/lib/openlayer/internal/type/base_page.rb +55 -0
  14. data/lib/openlayer/internal/type/boolean.rb +77 -0
  15. data/lib/openlayer/internal/type/converter.rb +327 -0
  16. data/lib/openlayer/internal/type/enum.rb +131 -0
  17. data/lib/openlayer/internal/type/file_input.rb +111 -0
  18. data/lib/openlayer/internal/type/hash_of.rb +188 -0
  19. data/lib/openlayer/internal/type/request_parameters.rb +42 -0
  20. data/lib/openlayer/internal/type/union.rb +237 -0
  21. data/lib/openlayer/internal/type/unknown.rb +81 -0
  22. data/lib/openlayer/internal/util.rb +915 -0
  23. data/lib/openlayer/internal.rb +20 -0
  24. data/lib/openlayer/models/commit_retrieve_params.rb +14 -0
  25. data/lib/openlayer/models/commit_retrieve_response.rb +275 -0
  26. data/lib/openlayer/models/commits/test_result_list_params.rb +91 -0
  27. data/lib/openlayer/models/commits/test_result_list_response.rb +566 -0
  28. data/lib/openlayer/models/inference_pipeline_delete_params.rb +14 -0
  29. data/lib/openlayer/models/inference_pipeline_retrieve_params.rb +33 -0
  30. data/lib/openlayer/models/inference_pipeline_retrieve_response.rb +605 -0
  31. data/lib/openlayer/models/inference_pipeline_update_params.rb +42 -0
  32. data/lib/openlayer/models/inference_pipeline_update_response.rb +605 -0
  33. data/lib/openlayer/models/inference_pipelines/data_stream_params.rb +463 -0
  34. data/lib/openlayer/models/inference_pipelines/data_stream_response.rb +28 -0
  35. data/lib/openlayer/models/inference_pipelines/row_update_params.rb +90 -0
  36. data/lib/openlayer/models/inference_pipelines/row_update_response.rb +28 -0
  37. data/lib/openlayer/models/inference_pipelines/test_result_list_params.rb +83 -0
  38. data/lib/openlayer/models/inference_pipelines/test_result_list_response.rb +568 -0
  39. data/lib/openlayer/models/project_create_params.rb +51 -0
  40. data/lib/openlayer/models/project_create_response.rb +262 -0
  41. data/lib/openlayer/models/project_list_params.rb +59 -0
  42. data/lib/openlayer/models/project_list_response.rb +274 -0
  43. data/lib/openlayer/models/projects/commit_create_params.rb +61 -0
  44. data/lib/openlayer/models/projects/commit_create_response.rb +277 -0
  45. data/lib/openlayer/models/projects/commit_list_params.rb +32 -0
  46. data/lib/openlayer/models/projects/commit_list_response.rb +288 -0
  47. data/lib/openlayer/models/projects/inference_pipeline_create_params.rb +229 -0
  48. data/lib/openlayer/models/projects/inference_pipeline_create_response.rb +612 -0
  49. data/lib/openlayer/models/projects/inference_pipeline_list_params.rb +40 -0
  50. data/lib/openlayer/models/projects/inference_pipeline_list_response.rb +623 -0
  51. data/lib/openlayer/models/projects/test_create_params.rb +367 -0
  52. data/lib/openlayer/models/projects/test_create_response.rb +438 -0
  53. data/lib/openlayer/models/projects/test_list_params.rb +91 -0
  54. data/lib/openlayer/models/projects/test_list_response.rb +452 -0
  55. data/lib/openlayer/models/projects/test_update_params.rb +262 -0
  56. data/lib/openlayer/models/projects/test_update_response.rb +24 -0
  57. data/lib/openlayer/models/storage/presigned_url_create_params.rb +24 -0
  58. data/lib/openlayer/models/storage/presigned_url_create_response.rb +35 -0
  59. data/lib/openlayer/models.rb +61 -0
  60. data/lib/openlayer/request_options.rb +77 -0
  61. data/lib/openlayer/resources/commits/test_results.rb +51 -0
  62. data/lib/openlayer/resources/commits.rb +38 -0
  63. data/lib/openlayer/resources/inference_pipelines/data.rb +46 -0
  64. data/lib/openlayer/resources/inference_pipelines/rows.rb +46 -0
  65. data/lib/openlayer/resources/inference_pipelines/test_results.rb +49 -0
  66. data/lib/openlayer/resources/inference_pipelines.rb +101 -0
  67. data/lib/openlayer/resources/projects/commits.rb +72 -0
  68. data/lib/openlayer/resources/projects/inference_pipelines.rb +74 -0
  69. data/lib/openlayer/resources/projects/tests.rb +135 -0
  70. data/lib/openlayer/resources/projects.rb +80 -0
  71. data/lib/openlayer/resources/storage/presigned_url.rb +38 -0
  72. data/lib/openlayer/resources/storage.rb +18 -0
  73. data/lib/openlayer/version.rb +1 -1
  74. data/lib/openlayer.rb +96 -12
  75. data/manifest.yaml +15 -0
  76. data/rbi/openlayer/client.rbi +58 -0
  77. data/rbi/openlayer/errors.rbi +205 -0
  78. data/rbi/openlayer/file_part.rbi +37 -0
  79. data/rbi/openlayer/internal/transport/base_client.rbi +293 -0
  80. data/rbi/openlayer/internal/transport/pooled_net_requester.rbi +79 -0
  81. data/rbi/openlayer/internal/type/array_of.rbi +104 -0
  82. data/rbi/openlayer/internal/type/base_model.rbi +304 -0
  83. data/rbi/openlayer/internal/type/base_page.rbi +42 -0
  84. data/rbi/openlayer/internal/type/boolean.rbi +58 -0
  85. data/rbi/openlayer/internal/type/converter.rbi +216 -0
  86. data/rbi/openlayer/internal/type/enum.rbi +82 -0
  87. data/rbi/openlayer/internal/type/file_input.rbi +59 -0
  88. data/rbi/openlayer/internal/type/hash_of.rbi +104 -0
  89. data/rbi/openlayer/internal/type/request_parameters.rbi +29 -0
  90. data/rbi/openlayer/internal/type/union.rbi +128 -0
  91. data/rbi/openlayer/internal/type/unknown.rbi +58 -0
  92. data/rbi/openlayer/internal/util.rbi +487 -0
  93. data/rbi/openlayer/internal.rbi +18 -0
  94. data/rbi/openlayer/models/commit_retrieve_params.rbi +27 -0
  95. data/rbi/openlayer/models/commit_retrieve_response.rbi +393 -0
  96. data/rbi/openlayer/models/commits/test_result_list_params.rbi +214 -0
  97. data/rbi/openlayer/models/commits/test_result_list_response.rbi +1256 -0
  98. data/rbi/openlayer/models/inference_pipeline_delete_params.rbi +30 -0
  99. data/rbi/openlayer/models/inference_pipeline_retrieve_params.rbi +101 -0
  100. data/rbi/openlayer/models/inference_pipeline_retrieve_response.rbi +1022 -0
  101. data/rbi/openlayer/models/inference_pipeline_update_params.rbi +67 -0
  102. data/rbi/openlayer/models/inference_pipeline_update_response.rbi +1018 -0
  103. data/rbi/openlayer/models/inference_pipelines/data_stream_params.rbi +750 -0
  104. data/rbi/openlayer/models/inference_pipelines/data_stream_response.rbi +73 -0
  105. data/rbi/openlayer/models/inference_pipelines/row_update_params.rbi +153 -0
  106. data/rbi/openlayer/models/inference_pipelines/row_update_response.rbi +73 -0
  107. data/rbi/openlayer/models/inference_pipelines/test_result_list_params.rbi +216 -0
  108. data/rbi/openlayer/models/inference_pipelines/test_result_list_response.rbi +1258 -0
  109. data/rbi/openlayer/models/project_create_params.rbi +99 -0
  110. data/rbi/openlayer/models/project_create_response.rbi +401 -0
  111. data/rbi/openlayer/models/project_list_params.rbi +121 -0
  112. data/rbi/openlayer/models/project_list_response.rbi +442 -0
  113. data/rbi/openlayer/models/projects/commit_create_params.rbi +125 -0
  114. data/rbi/openlayer/models/projects/commit_create_response.rbi +409 -0
  115. data/rbi/openlayer/models/projects/commit_list_params.rbi +62 -0
  116. data/rbi/openlayer/models/projects/commit_list_response.rbi +454 -0
  117. data/rbi/openlayer/models/projects/inference_pipeline_create_params.rbi +560 -0
  118. data/rbi/openlayer/models/projects/inference_pipeline_create_response.rbi +1027 -0
  119. data/rbi/openlayer/models/projects/inference_pipeline_list_params.rbi +73 -0
  120. data/rbi/openlayer/models/projects/inference_pipeline_list_response.rbi +1070 -0
  121. data/rbi/openlayer/models/projects/test_create_params.rbi +940 -0
  122. data/rbi/openlayer/models/projects/test_create_response.rbi +1026 -0
  123. data/rbi/openlayer/models/projects/test_list_params.rbi +165 -0
  124. data/rbi/openlayer/models/projects/test_list_response.rbi +1067 -0
  125. data/rbi/openlayer/models/projects/test_update_params.rbi +699 -0
  126. data/rbi/openlayer/models/projects/test_update_response.rbi +43 -0
  127. data/rbi/openlayer/models/storage/presigned_url_create_params.rbi +45 -0
  128. data/rbi/openlayer/models/storage/presigned_url_create_response.rbi +55 -0
  129. data/rbi/openlayer/models.rbi +26 -0
  130. data/rbi/openlayer/request_options.rbi +59 -0
  131. data/rbi/openlayer/resources/commits/test_results.rbi +45 -0
  132. data/rbi/openlayer/resources/commits.rbi +29 -0
  133. data/rbi/openlayer/resources/inference_pipelines/data.rbi +41 -0
  134. data/rbi/openlayer/resources/inference_pipelines/rows.rbi +40 -0
  135. data/rbi/openlayer/resources/inference_pipelines/test_results.rbi +46 -0
  136. data/rbi/openlayer/resources/inference_pipelines.rbi +79 -0
  137. data/rbi/openlayer/resources/projects/commits.rbi +60 -0
  138. data/rbi/openlayer/resources/projects/inference_pipelines.rbi +69 -0
  139. data/rbi/openlayer/resources/projects/tests.rbi +123 -0
  140. data/rbi/openlayer/resources/projects.rbi +64 -0
  141. data/rbi/openlayer/resources/storage/presigned_url.rbi +28 -0
  142. data/rbi/openlayer/resources/storage.rbi +15 -0
  143. data/rbi/openlayer/version.rbi +5 -0
  144. data/sig/openlayer/client.rbs +32 -0
  145. data/sig/openlayer/errors.rbs +117 -0
  146. data/sig/openlayer/file_part.rbs +21 -0
  147. data/sig/openlayer/internal/transport/base_client.rbs +131 -0
  148. data/sig/openlayer/internal/transport/pooled_net_requester.rbs +45 -0
  149. data/sig/openlayer/internal/type/array_of.rbs +48 -0
  150. data/sig/openlayer/internal/type/base_model.rbs +102 -0
  151. data/sig/openlayer/internal/type/base_page.rbs +24 -0
  152. data/sig/openlayer/internal/type/boolean.rbs +26 -0
  153. data/sig/openlayer/internal/type/converter.rbs +79 -0
  154. data/sig/openlayer/internal/type/enum.rbs +32 -0
  155. data/sig/openlayer/internal/type/file_input.rbs +25 -0
  156. data/sig/openlayer/internal/type/hash_of.rbs +48 -0
  157. data/sig/openlayer/internal/type/request_parameters.rbs +19 -0
  158. data/sig/openlayer/internal/type/union.rbs +52 -0
  159. data/sig/openlayer/internal/type/unknown.rbs +26 -0
  160. data/sig/openlayer/internal/util.rbs +185 -0
  161. data/sig/openlayer/internal.rbs +9 -0
  162. data/sig/openlayer/models/commit_retrieve_params.rbs +15 -0
  163. data/sig/openlayer/models/commit_retrieve_response.rbs +209 -0
  164. data/sig/openlayer/models/commits/test_result_list_params.rbs +91 -0
  165. data/sig/openlayer/models/commits/test_result_list_response.rbs +529 -0
  166. data/sig/openlayer/models/inference_pipeline_delete_params.rbs +15 -0
  167. data/sig/openlayer/models/inference_pipeline_retrieve_params.rbs +41 -0
  168. data/sig/openlayer/models/inference_pipeline_retrieve_response.rbs +493 -0
  169. data/sig/openlayer/models/inference_pipeline_update_params.rbs +34 -0
  170. data/sig/openlayer/models/inference_pipeline_update_response.rbs +493 -0
  171. data/sig/openlayer/models/inference_pipelines/data_stream_params.rbs +386 -0
  172. data/sig/openlayer/models/inference_pipelines/data_stream_response.rbs +32 -0
  173. data/sig/openlayer/models/inference_pipelines/row_update_params.rbs +75 -0
  174. data/sig/openlayer/models/inference_pipelines/row_update_response.rbs +32 -0
  175. data/sig/openlayer/models/inference_pipelines/test_result_list_params.rbs +84 -0
  176. data/sig/openlayer/models/inference_pipelines/test_result_list_response.rbs +529 -0
  177. data/sig/openlayer/models/project_create_params.rbs +53 -0
  178. data/sig/openlayer/models/project_create_response.rbs +210 -0
  179. data/sig/openlayer/models/project_list_params.rbs +68 -0
  180. data/sig/openlayer/models/project_list_response.rbs +225 -0
  181. data/sig/openlayer/models/projects/commit_create_params.rbs +82 -0
  182. data/sig/openlayer/models/projects/commit_create_response.rbs +211 -0
  183. data/sig/openlayer/models/projects/commit_list_params.rbs +34 -0
  184. data/sig/openlayer/models/projects/commit_list_response.rbs +228 -0
  185. data/sig/openlayer/models/projects/inference_pipeline_create_params.rbs +308 -0
  186. data/sig/openlayer/models/projects/inference_pipeline_create_response.rbs +495 -0
  187. data/sig/openlayer/models/projects/inference_pipeline_list_params.rbs +40 -0
  188. data/sig/openlayer/models/projects/inference_pipeline_list_response.rbs +512 -0
  189. data/sig/openlayer/models/projects/test_create_params.rbs +388 -0
  190. data/sig/openlayer/models/projects/test_create_response.rbs +427 -0
  191. data/sig/openlayer/models/projects/test_list_params.rbs +85 -0
  192. data/sig/openlayer/models/projects/test_list_response.rbs +442 -0
  193. data/sig/openlayer/models/projects/test_update_params.rbs +275 -0
  194. data/sig/openlayer/models/projects/test_update_response.rbs +25 -0
  195. data/sig/openlayer/models/storage/presigned_url_create_params.rbs +25 -0
  196. data/sig/openlayer/models/storage/presigned_url_create_response.rbs +22 -0
  197. data/sig/openlayer/models.rbs +21 -0
  198. data/sig/openlayer/request_options.rbs +34 -0
  199. data/sig/openlayer/resources/commits/test_results.rbs +19 -0
  200. data/sig/openlayer/resources/commits.rbs +14 -0
  201. data/sig/openlayer/resources/inference_pipelines/data.rbs +16 -0
  202. data/sig/openlayer/resources/inference_pipelines/rows.rbs +17 -0
  203. data/sig/openlayer/resources/inference_pipelines/test_results.rbs +18 -0
  204. data/sig/openlayer/resources/inference_pipelines.rbs +32 -0
  205. data/sig/openlayer/resources/projects/commits.rbs +25 -0
  206. data/sig/openlayer/resources/projects/inference_pipelines.rbs +26 -0
  207. data/sig/openlayer/resources/projects/tests.rbs +45 -0
  208. data/sig/openlayer/resources/projects.rbs +28 -0
  209. data/sig/openlayer/resources/storage/presigned_url.rbs +14 -0
  210. data/sig/openlayer/resources/storage.rbs +9 -0
  211. data/sig/openlayer/version.rbs +3 -0
  212. metadata +223 -91
  213. data/.env +0 -0
  214. data/.rspec +0 -3
  215. data/.rubocop.yml +0 -13
  216. data/LICENSE +0 -21
  217. data/Rakefile +0 -12
  218. data/examples/staging/.DS_Store +0 -0
  219. data/examples/staging/commit.yaml +0 -2
  220. data/examples/staging/model/model_config.yaml +0 -12
  221. data/examples/staging/validation/dataset_config.yaml +0 -12
  222. data/lib/openlayer/error.rb +0 -5
  223. data/lib/openlayer/inference_pipeline.rb +0 -36
  224. data/lib/openlayer/object.rb +0 -28
  225. data/lib/openlayer/objects/project.rb +0 -185
  226. data/lib/openlayer/objects/project_version.rb +0 -89
  227. data/lib/openlayer/services/s3_presigned_client.rb +0 -47
  228. data/lib/openlayer/services/tar_file_helper.rb +0 -55
  229. data/openlayer.gemspec +0 -45
  230. data/sig/openlayer.rbs +0 -4
@@ -1,185 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fileutils"
4
- require "find"
5
- require "yaml"
6
- require "pry"
7
-
8
- module Openlayer
9
- class Project < Object
10
- class Error < StandardError; end
11
- class NotFoundError < StandardError; end
12
- class TarFileNotFoundError < StandardError; end
13
-
14
- class CommitLengthError < StandardError
15
- def message
16
- "Commit message must be between 1 and 140 characters"
17
- end
18
- end
19
-
20
- attr_reader :client, :workspace_id,
21
- :data_tarfile_path, :s3_presigned_body,
22
- :commit_message, :project_path
23
-
24
- REQUIRED_TARFILE_STRUCTURE = [
25
- "staging/commit.yaml",
26
- "staging/validation/dataset_config.yaml",
27
- "staging/validation/dataset.csv",
28
- "staging/model/model_config.yaml"
29
- ].freeze
30
-
31
- COMMIT_LENGTH = (1..140).freeze
32
-
33
- def self.from_response(client, response)
34
- attributes_first_project = handle_response(response)&.dig("items")&.first
35
- raise NotFoundError if attributes_first_project.nil?
36
-
37
- new(client, attributes_first_project)
38
- end
39
-
40
- def initialize(client, attributes)
41
- @client = client
42
- super(attributes)
43
- @data_tarfile_path = "#{Dir.home}/.openlayer/#{id}_staging.tar"
44
- @project_path = "#{Dir.home}/.openlayer/#{id}"
45
- init_staging_directories
46
- end
47
-
48
- def add_dataset(file_path:, dataset_config: nil, dataset_config_file_path: nil)
49
- raise ArgumentError, "dataset config is required" if dataset_config.nil? && dataset_config_file_path.nil?
50
-
51
- copy_file(file_path, "staging/validation/dataset.csv")
52
- copy_or_create_config(dataset_config,
53
- dataset_config_file_path,
54
- "staging/validation/dataset_config.yaml")
55
- end
56
-
57
- def add_model(model_config: nil, model_config_file_path: nil)
58
- raise ArgumentError, "model config is required" if model_config.nil? && model_config_file_path.nil?
59
-
60
- copy_or_create_config(model_config,
61
- model_config_file_path,
62
- "staging/model/model_config.yaml")
63
- end
64
-
65
- def status
66
- puts "Staging Area:"
67
- Find.find(File.join(project_path, "/staging")) do |path|
68
- puts path if File.file?(path)
69
- end
70
- end
71
-
72
- def commit(message)
73
- raise CommitLengthError unless COMMIT_LENGTH.include? message.length
74
-
75
- @commit_message = message
76
- commit_hash = {
77
- "date": DateTime.now.strftime("%a %b %d %H:%M:%S %Y"),
78
- "message": message
79
- }
80
- write_hash_to_file(commit_hash, "staging/commit.yaml")
81
- end
82
-
83
- def push
84
- create_and_validate_tar_file
85
- s3_client = create_s3_client
86
- s3_client.post(s3_payload)
87
- client.load_project_version(id: id, payload: version_payload)
88
- end
89
-
90
- private
91
-
92
- def init_staging_directories
93
- FileUtils.mkdir_p(File.join(project_path, "staging"))
94
- FileUtils.mkdir_p(File.join(project_path, "staging/validation"))
95
- FileUtils.mkdir_p(File.join(project_path, "staging/model"))
96
- end
97
-
98
- def copy_or_create_config(config_hash, config_file_path, destination)
99
- if config_file_path.nil?
100
- write_hash_to_file(config_hash, destination)
101
- else
102
- copy_file(config_file_path, destination)
103
- end
104
- end
105
-
106
- def copy_file(file_path, destination)
107
- FileUtils.copy(file_path, File.join(project_path, destination))
108
- end
109
-
110
- def write_hash_to_file(hash, destination)
111
- File.open(File.join(project_path, destination), "w") do |file|
112
- file.write hash.to_yaml
113
- end
114
- end
115
-
116
- def create_s3_client
117
- @s3_presigned_body = client.presigned_url(workspace_id: workspace_id, object_name: "staging")
118
- S3PresignedClient.new(s3_presigned_body)
119
- end
120
-
121
- def create_and_validate_tar_file
122
- TarFileHelper.create_tar_from_folders([File.join(project_path, "staging")], data_tarfile_path)
123
- validate_tarfile(data_tarfile_path)
124
- end
125
-
126
- def validate_tarfile(file_path)
127
- raise TarFileNotFoundError unless File.exist?(file_path)
128
-
129
- TarFileHelper.validate_structure(file_path, REQUIRED_TARFILE_STRUCTURE)
130
- end
131
-
132
- def s3_payload
133
- {
134
- "file" => Faraday::Multipart::FilePart.new(data_tarfile_path, "application/x-tar")
135
- }
136
- end
137
-
138
- def version_payload
139
- {
140
- "storageUri": s3_presigned_body["storageUri"],
141
- "commit": { "message": commit_message }
142
- }
143
- end
144
-
145
- def self.handle_response(response)
146
- message = response.body["error"]
147
- case response.status
148
- when 200
149
- response.body
150
- when 401
151
- raise Error, message
152
- when 404
153
- raise Error, message
154
- when 422
155
- raise Error, message
156
- when 500
157
- raise Error, message
158
- when 200..299
159
- response.body
160
- else
161
- raise Error, message
162
- end
163
- end
164
-
165
- def handle_response(response)
166
- message = response.body["error"]
167
- case response.status
168
- when 200
169
- response.body
170
- when 401
171
- raise Error, message
172
- when 404
173
- raise Error, message
174
- when 422
175
- raise Error, message
176
- when 500
177
- raise Error, message
178
- when 200..299
179
- response.body
180
- else
181
- raise Error, message
182
- end
183
- end
184
- end
185
- end
@@ -1,89 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Openlayer
4
- class ProjectVersion < Object
5
- attr_reader :client, :project_version_id, :all_attributes_hash
6
-
7
- def self.from_response(client, response)
8
- attributes = handle_response(response)
9
- new(client, attributes)
10
- end
11
-
12
- def initialize(client, attributes)
13
- @client = client
14
- super(attributes)
15
- @project_version_id = commit.projectVersionId
16
- end
17
-
18
- def print_status_report
19
- puts "Status: #{status}"
20
- puts "Status Message: #{status_message}" unless status_message.nil?
21
- end
22
-
23
- def print_test_report
24
- puts "Failing Test Count: #{failing_test_count}"
25
- puts "Passing Test Count: #{passing_test_count}"
26
- puts "Total Test Count: #{total_test_count}"
27
- end
28
-
29
- def to_h
30
- @attributes.to_h
31
- end
32
-
33
- def wait_for_completion(timeout: 300, interval: 10)
34
- start_time = Time.now
35
- while Time.now - start_time < timeout
36
- refresh
37
- break if status == "completed" || status == "failed"
38
-
39
- sleep interval
40
- end
41
- end
42
-
43
- def refresh
44
- @attributes = OpenStruct.new handle_response client.connection.get("versions/#{project_version_id}")
45
- end
46
-
47
- private
48
-
49
- def self.handle_response(response)
50
- message = response.body["error"]
51
- case response.status
52
- when 200
53
- response.body
54
- when 401
55
- raise Error, message
56
- when 404
57
- raise Error, message
58
- when 422
59
- raise Error, message
60
- when 500
61
- raise Error, message
62
- when 200..299
63
- response.body
64
- else
65
- raise Error, message
66
- end
67
- end
68
-
69
- def handle_response(response)
70
- message = response.body["error"]
71
- case response.status
72
- when 200
73
- response.body
74
- when 401
75
- raise Error, message
76
- when 404
77
- raise Error, message
78
- when 422
79
- raise Error, message
80
- when 500
81
- raise Error, message
82
- when 200..299
83
- response.body
84
- else
85
- raise Error, message
86
- end
87
- end
88
- end
89
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Openlayer
4
- class S3PresignedClient
5
- attr_reader :presigned_url, :payload_fields, :s3_conn
6
-
7
- def initialize(presigned_url)
8
- @presigned_url = presigned_url
9
- @payload_fields = presigned_url["fields"]
10
- @s3_conn = Faraday.new(url: presigned_url["url"]) do |f|
11
- f.request :multipart
12
- f.adapter :net_http
13
- end
14
- end
15
-
16
- def post(data)
17
- handle_response @s3_conn.post("/", merge_fields(data))
18
- end
19
-
20
- private
21
-
22
- def merge_fields(data)
23
- payload_fields.merge!(data)
24
- end
25
-
26
- def handle_response(response)
27
- message = response.body["error"]
28
- case response.status
29
- when 200
30
- return response
31
- when 401
32
- raise Error, message
33
- when 404
34
- raise Error, message
35
- when 422
36
- raise Error, message
37
- when 500
38
- raise Error, message
39
- when 200..299
40
- return response
41
- else
42
- raise Error, message
43
- end
44
- response
45
- end
46
- end
47
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rubygems/package"
4
- require "fileutils"
5
- require "zlib"
6
- require "logger"
7
-
8
- module Openlayer
9
- class TarFileHelper
10
- LOGGER = Logger.new($stdout)
11
-
12
- def self.create_tar_from_folders(folders, tar_file_name)
13
- File.open(tar_file_name, "wb") do |file|
14
- Gem::Package::TarWriter.new(Zlib::GzipWriter.open(file)) do |tar|
15
- folders.each do |folder|
16
- base_name = File.basename(folder)
17
- add_directory_to_tar(tar, folder, base_name)
18
- end
19
- end
20
- end
21
- end
22
-
23
- def self.validate_structure(file_path, required_structure)
24
- tarfile_structure = []
25
- begin
26
- Gem::Package::TarReader.new(Zlib::GzipReader.open(file_path)).each do |entry|
27
- tarfile_structure << entry.full_name
28
- end
29
- rescue Zlib::GzipFile::Error => e
30
- stacktrace = e.backtrace.join("\n")
31
- LOGGER.error("ERROR: #{e.message}\n #{stacktrace}")
32
- return nil
33
- end
34
-
35
- required_structure.each do |required_file|
36
- raise Error, "Missing file: #{required_file}" unless tarfile_structure.include?(required_file)
37
- end
38
- end
39
-
40
- def self.add_directory_to_tar(tar, folder, base_name)
41
- Dir[File.join(folder, "**/*")].each do |file|
42
- mode = File.stat(file).mode
43
- relative_file = File.join(base_name, file.sub("#{folder}/", ""))
44
-
45
- if File.directory?(file)
46
- tar.mkdir(relative_file, mode)
47
- else
48
- tar.add_file_simple(relative_file, mode, File.size(file)) do |io|
49
- File.open(file, "rb") { |f| io.write(f.read) }
50
- end
51
- end
52
- end
53
- end
54
- end
55
- end
data/openlayer.gemspec DELETED
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/openlayer/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "openlayer"
7
- spec.version = Openlayer::VERSION
8
- spec.authors = ["Jose Fernando Davila"]
9
- spec.email = ["davila.jose23@gmail.com"]
10
-
11
- spec.summary = "Openlayer api wrapper"
12
- spec.description = "Openlayer api wrapper"
13
- spec.homepage = "https://github.com/TelosLabs/openlayer"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
16
-
17
- # spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
18
-
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = spec.homepage
21
- # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
22
-
23
- # Specify which files should be added to the gem when it is released.
24
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(__dir__) do
26
- `git ls-files -z`.split("\x0").reject do |f|
27
- (File.expand_path(f) == __FILE__) ||
28
- f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
29
- end
30
- end
31
- spec.bindir = "exe"
32
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
- spec.require_paths = ["lib"]
34
-
35
- # Uncomment to register a new dependency of your gem
36
- # spec.add_dependency "example-gem", "~> 1.0"
37
- spec.add_dependency "date"
38
- spec.add_dependency "faraday", "~> 2.9.0"
39
- spec.add_dependency "faraday-multipart"
40
- spec.add_dependency "yaml"
41
- spec.add_dependency "zlib"
42
-
43
- # For more information and examples about making a new gem, check out our
44
- # guide at: https://bundler.io/guides/creating_gem.html
45
- end
data/sig/openlayer.rbs DELETED
@@ -1,4 +0,0 @@
1
- module Openlayer
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end