autorender 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 (152) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +41 -0
  4. data/README.md +266 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/autorender/client.rb +98 -0
  7. data/lib/autorender/errors.rb +228 -0
  8. data/lib/autorender/file_part.rb +58 -0
  9. data/lib/autorender/internal/page_pagination.rb +96 -0
  10. data/lib/autorender/internal/transport/base_client.rb +576 -0
  11. data/lib/autorender/internal/transport/pooled_net_requester.rb +210 -0
  12. data/lib/autorender/internal/type/array_of.rb +168 -0
  13. data/lib/autorender/internal/type/base_model.rb +531 -0
  14. data/lib/autorender/internal/type/base_page.rb +55 -0
  15. data/lib/autorender/internal/type/boolean.rb +77 -0
  16. data/lib/autorender/internal/type/converter.rb +327 -0
  17. data/lib/autorender/internal/type/enum.rb +131 -0
  18. data/lib/autorender/internal/type/file_input.rb +111 -0
  19. data/lib/autorender/internal/type/hash_of.rb +188 -0
  20. data/lib/autorender/internal/type/request_parameters.rb +42 -0
  21. data/lib/autorender/internal/type/union.rb +237 -0
  22. data/lib/autorender/internal/type/unknown.rb +81 -0
  23. data/lib/autorender/internal/util.rb +968 -0
  24. data/lib/autorender/internal.rb +20 -0
  25. data/lib/autorender/models/file_delete_params.rb +20 -0
  26. data/lib/autorender/models/file_list_params.rb +65 -0
  27. data/lib/autorender/models/file_list_response.rb +167 -0
  28. data/lib/autorender/models/file_rename_params.rb +29 -0
  29. data/lib/autorender/models/file_rename_response.rb +143 -0
  30. data/lib/autorender/models/file_retrieve_params.rb +20 -0
  31. data/lib/autorender/models/file_retrieve_response.rb +143 -0
  32. data/lib/autorender/models/folder_create_params.rb +30 -0
  33. data/lib/autorender/models/folder_create_response.rb +54 -0
  34. data/lib/autorender/models/folder_delete_params.rb +20 -0
  35. data/lib/autorender/models/folder_list_params.rb +49 -0
  36. data/lib/autorender/models/folder_list_response.rb +65 -0
  37. data/lib/autorender/models/folder_rename_params.rb +29 -0
  38. data/lib/autorender/models/folder_rename_response.rb +54 -0
  39. data/lib/autorender/models/multipart_upload_complete_params.rb +26 -0
  40. data/lib/autorender/models/multipart_upload_complete_response.rb +144 -0
  41. data/lib/autorender/models/multipart_upload_start_params.rb +82 -0
  42. data/lib/autorender/models/multipart_upload_start_response.rb +105 -0
  43. data/lib/autorender/models/upload_create_from_url_params.rb +76 -0
  44. data/lib/autorender/models/upload_create_from_url_response.rb +144 -0
  45. data/lib/autorender/models/upload_create_params.rb +86 -0
  46. data/lib/autorender/models/upload_create_response.rb +144 -0
  47. data/lib/autorender/models.rb +65 -0
  48. data/lib/autorender/request_options.rb +77 -0
  49. data/lib/autorender/resources/files.rb +108 -0
  50. data/lib/autorender/resources/folders.rb +109 -0
  51. data/lib/autorender/resources/multipart_uploads.rb +66 -0
  52. data/lib/autorender/resources/uploads.rb +90 -0
  53. data/lib/autorender/version.rb +5 -0
  54. data/lib/autorender.rb +82 -0
  55. data/manifest.yaml +17 -0
  56. data/rbi/autorender/client.rbi +62 -0
  57. data/rbi/autorender/errors.rbi +205 -0
  58. data/rbi/autorender/file_part.rbi +37 -0
  59. data/rbi/autorender/internal/page_pagination.rbi +28 -0
  60. data/rbi/autorender/internal/transport/base_client.rbi +300 -0
  61. data/rbi/autorender/internal/transport/pooled_net_requester.rbi +84 -0
  62. data/rbi/autorender/internal/type/array_of.rbi +104 -0
  63. data/rbi/autorender/internal/type/base_model.rbi +308 -0
  64. data/rbi/autorender/internal/type/base_page.rbi +42 -0
  65. data/rbi/autorender/internal/type/boolean.rbi +58 -0
  66. data/rbi/autorender/internal/type/converter.rbi +216 -0
  67. data/rbi/autorender/internal/type/enum.rbi +82 -0
  68. data/rbi/autorender/internal/type/file_input.rbi +59 -0
  69. data/rbi/autorender/internal/type/hash_of.rbi +104 -0
  70. data/rbi/autorender/internal/type/request_parameters.rbi +29 -0
  71. data/rbi/autorender/internal/type/union.rbi +128 -0
  72. data/rbi/autorender/internal/type/unknown.rbi +58 -0
  73. data/rbi/autorender/internal/util.rbi +515 -0
  74. data/rbi/autorender/internal.rbi +18 -0
  75. data/rbi/autorender/models/file_delete_params.rbi +35 -0
  76. data/rbi/autorender/models/file_list_params.rbi +116 -0
  77. data/rbi/autorender/models/file_list_response.rbi +227 -0
  78. data/rbi/autorender/models/file_rename_params.rbi +49 -0
  79. data/rbi/autorender/models/file_rename_response.rbi +205 -0
  80. data/rbi/autorender/models/file_retrieve_params.rbi +35 -0
  81. data/rbi/autorender/models/file_retrieve_response.rbi +209 -0
  82. data/rbi/autorender/models/folder_create_params.rbi +54 -0
  83. data/rbi/autorender/models/folder_create_response.rbi +75 -0
  84. data/rbi/autorender/models/folder_delete_params.rbi +35 -0
  85. data/rbi/autorender/models/folder_list_params.rbi +97 -0
  86. data/rbi/autorender/models/folder_list_response.rbi +105 -0
  87. data/rbi/autorender/models/folder_rename_params.rbi +49 -0
  88. data/rbi/autorender/models/folder_rename_response.rbi +75 -0
  89. data/rbi/autorender/models/multipart_upload_complete_params.rbi +49 -0
  90. data/rbi/autorender/models/multipart_upload_complete_response.rbi +174 -0
  91. data/rbi/autorender/models/multipart_upload_start_params.rbi +138 -0
  92. data/rbi/autorender/models/multipart_upload_start_response.rbi +146 -0
  93. data/rbi/autorender/models/upload_create_from_url_params.rbi +119 -0
  94. data/rbi/autorender/models/upload_create_from_url_response.rbi +174 -0
  95. data/rbi/autorender/models/upload_create_params.rbi +128 -0
  96. data/rbi/autorender/models/upload_create_response.rbi +174 -0
  97. data/rbi/autorender/models.rbi +28 -0
  98. data/rbi/autorender/request_options.rbi +59 -0
  99. data/rbi/autorender/resources/files.rbi +72 -0
  100. data/rbi/autorender/resources/folders.rbi +75 -0
  101. data/rbi/autorender/resources/multipart_uploads.rbi +53 -0
  102. data/rbi/autorender/resources/uploads.rbi +84 -0
  103. data/rbi/autorender/version.rbi +5 -0
  104. data/sig/autorender/client.rbs +32 -0
  105. data/sig/autorender/errors.rbs +117 -0
  106. data/sig/autorender/file_part.rbs +21 -0
  107. data/sig/autorender/internal/page_pagination.rbs +17 -0
  108. data/sig/autorender/internal/transport/base_client.rbs +133 -0
  109. data/sig/autorender/internal/transport/pooled_net_requester.rbs +48 -0
  110. data/sig/autorender/internal/type/array_of.rbs +48 -0
  111. data/sig/autorender/internal/type/base_model.rbs +102 -0
  112. data/sig/autorender/internal/type/base_page.rbs +24 -0
  113. data/sig/autorender/internal/type/boolean.rbs +26 -0
  114. data/sig/autorender/internal/type/converter.rbs +79 -0
  115. data/sig/autorender/internal/type/enum.rbs +32 -0
  116. data/sig/autorender/internal/type/file_input.rbs +25 -0
  117. data/sig/autorender/internal/type/hash_of.rbs +48 -0
  118. data/sig/autorender/internal/type/request_parameters.rbs +19 -0
  119. data/sig/autorender/internal/type/union.rbs +52 -0
  120. data/sig/autorender/internal/type/unknown.rbs +26 -0
  121. data/sig/autorender/internal/util.rbs +199 -0
  122. data/sig/autorender/internal.rbs +9 -0
  123. data/sig/autorender/models/file_delete_params.rbs +23 -0
  124. data/sig/autorender/models/file_list_params.rbs +79 -0
  125. data/sig/autorender/models/file_list_response.rbs +159 -0
  126. data/sig/autorender/models/file_rename_params.rbs +28 -0
  127. data/sig/autorender/models/file_rename_response.rbs +132 -0
  128. data/sig/autorender/models/file_retrieve_params.rbs +23 -0
  129. data/sig/autorender/models/file_retrieve_response.rbs +132 -0
  130. data/sig/autorender/models/folder_create_params.rbs +30 -0
  131. data/sig/autorender/models/folder_create_response.rbs +50 -0
  132. data/sig/autorender/models/folder_delete_params.rbs +23 -0
  133. data/sig/autorender/models/folder_list_params.rbs +57 -0
  134. data/sig/autorender/models/folder_list_response.rbs +65 -0
  135. data/sig/autorender/models/folder_rename_params.rbs +28 -0
  136. data/sig/autorender/models/folder_rename_response.rbs +50 -0
  137. data/sig/autorender/models/multipart_upload_complete_params.rbs +30 -0
  138. data/sig/autorender/models/multipart_upload_complete_response.rbs +131 -0
  139. data/sig/autorender/models/multipart_upload_start_params.rbs +90 -0
  140. data/sig/autorender/models/multipart_upload_start_response.rbs +92 -0
  141. data/sig/autorender/models/upload_create_from_url_params.rbs +75 -0
  142. data/sig/autorender/models/upload_create_from_url_response.rbs +131 -0
  143. data/sig/autorender/models/upload_create_params.rbs +80 -0
  144. data/sig/autorender/models/upload_create_response.rbs +131 -0
  145. data/sig/autorender/models.rbs +25 -0
  146. data/sig/autorender/request_options.rbs +36 -0
  147. data/sig/autorender/resources/files.rbs +32 -0
  148. data/sig/autorender/resources/folders.rbs +31 -0
  149. data/sig/autorender/resources/multipart_uploads.rbs +26 -0
  150. data/sig/autorender/resources/uploads.rbs +32 -0
  151. data/sig/autorender/version.rbs +3 -0
  152. metadata +223 -0
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Autorender
4
+ module Resources
5
+ # Folder management endpoints (API key required)
6
+ class Folders
7
+ # Create folder
8
+ #
9
+ # @overload create(name:, parent_folder_no: nil, request_options: {})
10
+ #
11
+ # @param name [String] Folder name without slashes
12
+ #
13
+ # @param parent_folder_no [String] Parent folder number
14
+ #
15
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
16
+ #
17
+ # @return [Autorender::Models::FolderCreateResponse]
18
+ #
19
+ # @see Autorender::Models::FolderCreateParams
20
+ def create(params)
21
+ parsed, options = Autorender::FolderCreateParams.dump_request(params)
22
+ @client.request(
23
+ method: :post,
24
+ path: "api/v1/folders",
25
+ body: parsed,
26
+ model: Autorender::Models::FolderCreateResponse,
27
+ options: options
28
+ )
29
+ end
30
+
31
+ # List folders
32
+ #
33
+ # @overload list(parent_folder_no: nil, search: nil, sort: nil, request_options: {})
34
+ #
35
+ # @param parent_folder_no [String] Filter by parent folder number
36
+ #
37
+ # @param search [String] Partial name match (case-insensitive)
38
+ #
39
+ # @param sort [Symbol, Autorender::Models::FolderListParams::Sort]
40
+ #
41
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
42
+ #
43
+ # @return [Autorender::Models::FolderListResponse]
44
+ #
45
+ # @see Autorender::Models::FolderListParams
46
+ def list(params = {})
47
+ parsed, options = Autorender::FolderListParams.dump_request(params)
48
+ query = Autorender::Internal::Util.encode_query_params(parsed)
49
+ @client.request(
50
+ method: :get,
51
+ path: "api/v1/folders",
52
+ query: query,
53
+ model: Autorender::Models::FolderListResponse,
54
+ options: options
55
+ )
56
+ end
57
+
58
+ # Delete folder
59
+ #
60
+ # @overload delete(folder_no, request_options: {})
61
+ #
62
+ # @param folder_no [String]
63
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
64
+ #
65
+ # @return [nil]
66
+ #
67
+ # @see Autorender::Models::FolderDeleteParams
68
+ def delete(folder_no, params = {})
69
+ @client.request(
70
+ method: :delete,
71
+ path: ["api/v1/folders/%1$s", folder_no],
72
+ model: NilClass,
73
+ options: params[:request_options]
74
+ )
75
+ end
76
+
77
+ # Rename folder
78
+ #
79
+ # @overload rename(folder_no, name:, request_options: {})
80
+ #
81
+ # @param folder_no [String]
82
+ #
83
+ # @param name [String] New folder name without slashes
84
+ #
85
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
86
+ #
87
+ # @return [Autorender::Models::FolderRenameResponse]
88
+ #
89
+ # @see Autorender::Models::FolderRenameParams
90
+ def rename(folder_no, params)
91
+ parsed, options = Autorender::FolderRenameParams.dump_request(params)
92
+ @client.request(
93
+ method: :post,
94
+ path: ["api/v1/folders/rename/%1$s", folder_no],
95
+ body: parsed,
96
+ model: Autorender::Models::FolderRenameResponse,
97
+ options: options
98
+ )
99
+ end
100
+
101
+ # @api private
102
+ #
103
+ # @param client [Autorender::Client]
104
+ def initialize(client:)
105
+ @client = client
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Autorender
4
+ module Resources
5
+ # Upload endpoints (API key required)
6
+ class MultipartUploads
7
+ # Finalise a multipart upload session and return the stored file record.
8
+ #
9
+ # @overload complete(session_id:, uuid: nil, request_options: {})
10
+ #
11
+ # @param session_id [String]
12
+ # @param uuid [String]
13
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
14
+ #
15
+ # @return [Autorender::Models::MultipartUploadCompleteResponse]
16
+ #
17
+ # @see Autorender::Models::MultipartUploadCompleteParams
18
+ def complete(params)
19
+ parsed, options = Autorender::MultipartUploadCompleteParams.dump_request(params)
20
+ @client.request(
21
+ method: :post,
22
+ path: "api/v1/multipart/complete",
23
+ body: parsed,
24
+ model: Autorender::Models::MultipartUploadCompleteResponse,
25
+ options: options
26
+ )
27
+ end
28
+
29
+ # Initialise a multipart upload session and receive pre-signed part URLs.
30
+ #
31
+ # @overload start(file_name:, format_:, size:, custom_id: nil, folder: nil, metadata: nil, random_prefix: nil, tags: nil, ttl_seconds: nil, request_options: {})
32
+ #
33
+ # @param file_name [String]
34
+ # @param format_ [String]
35
+ # @param size [Integer]
36
+ # @param custom_id [String]
37
+ # @param folder [String]
38
+ # @param metadata [Hash{Symbol=>Object}]
39
+ # @param random_prefix [Boolean]
40
+ # @param tags [Array<String>, String]
41
+ # @param ttl_seconds [Integer]
42
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
43
+ #
44
+ # @return [Autorender::Models::MultipartUploadStartResponse]
45
+ #
46
+ # @see Autorender::Models::MultipartUploadStartParams
47
+ def start(params)
48
+ parsed, options = Autorender::MultipartUploadStartParams.dump_request(params)
49
+ @client.request(
50
+ method: :post,
51
+ path: "api/v1/multipart/start",
52
+ body: parsed,
53
+ model: Autorender::Models::MultipartUploadStartResponse,
54
+ options: options
55
+ )
56
+ end
57
+
58
+ # @api private
59
+ #
60
+ # @param client [Autorender::Client]
61
+ def initialize(client:)
62
+ @client = client
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Autorender
4
+ module Resources
5
+ # Upload endpoints (API key required)
6
+ class Uploads
7
+ # Upload a file from your backend server using multipart/form-data.
8
+ #
9
+ # @overload create(file:, file_name:, custom_id: nil, folder: nil, metadata: nil, random_prefix: nil, tags: nil, transform: nil, webhook_url: nil, request_options: {})
10
+ #
11
+ # @param file [Pathname, StringIO, IO, String, Autorender::FilePart] File to upload.
12
+ #
13
+ # @param file_name [String] File name (e.g. product.jpg)
14
+ #
15
+ # @param custom_id [String] Custom identifier
16
+ #
17
+ # @param folder [String] Optional folder path
18
+ #
19
+ # @param metadata [String] JSON string of metadata
20
+ #
21
+ # @param random_prefix [String] true/false to append random suffix
22
+ #
23
+ # @param tags [String] Comma-separated tags
24
+ #
25
+ # @param transform [String] Transform string (w_300,h_300,c_crop,...)
26
+ #
27
+ # @param webhook_url [String] URL to notify on success
28
+ #
29
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
30
+ #
31
+ # @return [Autorender::Models::UploadCreateResponse]
32
+ #
33
+ # @see Autorender::Models::UploadCreateParams
34
+ def create(params)
35
+ parsed, options = Autorender::UploadCreateParams.dump_request(params)
36
+ @client.request(
37
+ method: :post,
38
+ path: "api/v1/uploads",
39
+ headers: {"content-type" => "multipart/form-data"},
40
+ body: parsed,
41
+ model: Autorender::Models::UploadCreateResponse,
42
+ options: options
43
+ )
44
+ end
45
+
46
+ # Download a file from a remote URL and store it in AutoRender.
47
+ #
48
+ # @overload create_from_url(remote_url:, custom_id: nil, file_name: nil, folder: nil, metadata: nil, random_prefix: nil, tags: nil, webhook_url: nil, request_options: {})
49
+ #
50
+ # @param remote_url [String] HTTP/HTTPS URL to fetch
51
+ #
52
+ # @param custom_id [String]
53
+ #
54
+ # @param file_name [String] Override file name
55
+ #
56
+ # @param folder [String] Destination folder path
57
+ #
58
+ # @param metadata [String] JSON string of metadata object
59
+ #
60
+ # @param random_prefix [String] true/false to append random suffix
61
+ #
62
+ # @param tags [String] Comma-separated tags
63
+ #
64
+ # @param webhook_url [String]
65
+ #
66
+ # @param request_options [Autorender::RequestOptions, Hash{Symbol=>Object}, nil]
67
+ #
68
+ # @return [Autorender::Models::UploadCreateFromURLResponse]
69
+ #
70
+ # @see Autorender::Models::UploadCreateFromURLParams
71
+ def create_from_url(params)
72
+ parsed, options = Autorender::UploadCreateFromURLParams.dump_request(params)
73
+ @client.request(
74
+ method: :post,
75
+ path: "api/v1/uploads/remote",
76
+ body: parsed,
77
+ model: Autorender::Models::UploadCreateFromURLResponse,
78
+ options: options
79
+ )
80
+ end
81
+
82
+ # @api private
83
+ #
84
+ # @param client [Autorender::Client]
85
+ def initialize(client:)
86
+ @client = client
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Autorender
4
+ VERSION = "0.1.0"
5
+ end
data/lib/autorender.rb ADDED
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
5
+ require "English"
6
+ require "base64"
7
+ require "cgi"
8
+ require "date"
9
+ require "erb"
10
+ require "etc"
11
+ require "json"
12
+ require "net/http"
13
+ require "openssl"
14
+ require "pathname"
15
+ require "rbconfig"
16
+ require "securerandom"
17
+ require "set"
18
+ require "stringio"
19
+ require "time"
20
+ require "uri"
21
+ # rubocop:enable Lint/RedundantRequireStatement
22
+
23
+ # We already ship the preferred sorbet manifests in the package itself.
24
+ # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
25
+ if Object.const_defined?(:Tapioca) &&
26
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
27
+ ARGV.none?(/dsl/)
28
+ return
29
+ end
30
+
31
+ # Gems.
32
+ require "connection_pool"
33
+
34
+ # Package files.
35
+ require_relative "autorender/version"
36
+ require_relative "autorender/internal/util"
37
+ require_relative "autorender/internal/type/converter"
38
+ require_relative "autorender/internal/type/unknown"
39
+ require_relative "autorender/internal/type/boolean"
40
+ require_relative "autorender/internal/type/file_input"
41
+ require_relative "autorender/internal/type/enum"
42
+ require_relative "autorender/internal/type/union"
43
+ require_relative "autorender/internal/type/array_of"
44
+ require_relative "autorender/internal/type/hash_of"
45
+ require_relative "autorender/internal/type/base_model"
46
+ require_relative "autorender/internal/type/base_page"
47
+ require_relative "autorender/internal/type/request_parameters"
48
+ require_relative "autorender/internal"
49
+ require_relative "autorender/request_options"
50
+ require_relative "autorender/file_part"
51
+ require_relative "autorender/errors"
52
+ require_relative "autorender/internal/transport/base_client"
53
+ require_relative "autorender/internal/transport/pooled_net_requester"
54
+ require_relative "autorender/client"
55
+ require_relative "autorender/internal/page_pagination"
56
+ require_relative "autorender/models/file_delete_params"
57
+ require_relative "autorender/models/file_list_params"
58
+ require_relative "autorender/models/file_list_response"
59
+ require_relative "autorender/models/file_rename_params"
60
+ require_relative "autorender/models/file_rename_response"
61
+ require_relative "autorender/models/file_retrieve_params"
62
+ require_relative "autorender/models/file_retrieve_response"
63
+ require_relative "autorender/models/folder_create_params"
64
+ require_relative "autorender/models/folder_create_response"
65
+ require_relative "autorender/models/folder_delete_params"
66
+ require_relative "autorender/models/folder_list_params"
67
+ require_relative "autorender/models/folder_list_response"
68
+ require_relative "autorender/models/folder_rename_params"
69
+ require_relative "autorender/models/folder_rename_response"
70
+ require_relative "autorender/models/multipart_upload_complete_params"
71
+ require_relative "autorender/models/multipart_upload_complete_response"
72
+ require_relative "autorender/models/multipart_upload_start_params"
73
+ require_relative "autorender/models/multipart_upload_start_response"
74
+ require_relative "autorender/models/upload_create_from_url_params"
75
+ require_relative "autorender/models/upload_create_from_url_response"
76
+ require_relative "autorender/models/upload_create_params"
77
+ require_relative "autorender/models/upload_create_response"
78
+ require_relative "autorender/models"
79
+ require_relative "autorender/resources/files"
80
+ require_relative "autorender/resources/folders"
81
+ require_relative "autorender/resources/multipart_uploads"
82
+ require_relative "autorender/resources/uploads"
data/manifest.yaml ADDED
@@ -0,0 +1,17 @@
1
+ dependencies:
2
+ - English
3
+ - base64
4
+ - cgi
5
+ - date
6
+ - erb
7
+ - etc
8
+ - json
9
+ - net/http
10
+ - openssl
11
+ - pathname
12
+ - rbconfig
13
+ - securerandom
14
+ - set
15
+ - stringio
16
+ - time
17
+ - uri
@@ -0,0 +1,62 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ class Client < Autorender::Internal::Transport::BaseClient
5
+ DEFAULT_MAX_RETRIES = 2
6
+
7
+ DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
8
+
9
+ DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
10
+
11
+ DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
+
13
+ sig { returns(T.nilable(String)) }
14
+ attr_reader :api_key
15
+
16
+ # Upload endpoints (API key required)
17
+ sig { returns(Autorender::Resources::Uploads) }
18
+ attr_reader :uploads
19
+
20
+ # File management endpoints (API key required)
21
+ sig { returns(Autorender::Resources::Files) }
22
+ attr_reader :files
23
+
24
+ # Folder management endpoints (API key required)
25
+ sig { returns(Autorender::Resources::Folders) }
26
+ attr_reader :folders
27
+
28
+ # Upload endpoints (API key required)
29
+ sig { returns(Autorender::Resources::MultipartUploads) }
30
+ attr_reader :multipart_uploads
31
+
32
+ # @api private
33
+ sig { override.returns(T::Hash[String, String]) }
34
+ private def auth_headers
35
+ end
36
+
37
+ # Creates and returns a new client for interacting with the API.
38
+ sig do
39
+ params(
40
+ api_key: T.nilable(String),
41
+ base_url: T.nilable(String),
42
+ max_retries: Integer,
43
+ timeout: Float,
44
+ initial_retry_delay: Float,
45
+ max_retry_delay: Float
46
+ ).returns(T.attached_class)
47
+ end
48
+ def self.new(
49
+ # Defaults to `ENV["AUTORENDER_API_KEY"]`
50
+ api_key: ENV["AUTORENDER_API_KEY"],
51
+ # Override the default base URL for the API, e.g.,
52
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["AUTORENDER_BASE_URL"]`
53
+ base_url: ENV["AUTORENDER_BASE_URL"],
54
+ # Max number of retries to attempt after a failed retryable request.
55
+ max_retries: Autorender::Client::DEFAULT_MAX_RETRIES,
56
+ timeout: Autorender::Client::DEFAULT_TIMEOUT_IN_SECONDS,
57
+ initial_retry_delay: Autorender::Client::DEFAULT_INITIAL_RETRY_DELAY,
58
+ max_retry_delay: Autorender::Client::DEFAULT_MAX_RETRY_DELAY
59
+ )
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,205 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ module Errors
5
+ class Error < StandardError
6
+ sig { returns(T.nilable(StandardError)) }
7
+ attr_accessor :cause
8
+ end
9
+
10
+ class ConversionError < Autorender::Errors::Error
11
+ sig { returns(T.nilable(StandardError)) }
12
+ def cause
13
+ end
14
+
15
+ # @api private
16
+ sig do
17
+ params(
18
+ on: T::Class[StandardError],
19
+ method: Symbol,
20
+ target: T.anything,
21
+ value: T.anything,
22
+ cause: T.nilable(StandardError)
23
+ ).returns(T.attached_class)
24
+ end
25
+ def self.new(on:, method:, target:, value:, cause: nil)
26
+ end
27
+ end
28
+
29
+ class APIError < Autorender::Errors::Error
30
+ sig { returns(URI::Generic) }
31
+ attr_accessor :url
32
+
33
+ sig { returns(T.nilable(Integer)) }
34
+ attr_accessor :status
35
+
36
+ sig { returns(T.nilable(T::Hash[String, String])) }
37
+ attr_accessor :headers
38
+
39
+ sig { returns(T.nilable(T.anything)) }
40
+ attr_accessor :body
41
+
42
+ # @api private
43
+ sig do
44
+ params(
45
+ url: URI::Generic,
46
+ status: T.nilable(Integer),
47
+ headers: T.nilable(T::Hash[String, String]),
48
+ body: T.nilable(Object),
49
+ request: NilClass,
50
+ response: NilClass,
51
+ message: T.nilable(String)
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ url:,
56
+ status: nil,
57
+ headers: nil,
58
+ body: nil,
59
+ request: nil,
60
+ response: nil,
61
+ message: nil
62
+ )
63
+ end
64
+ end
65
+
66
+ class APIConnectionError < Autorender::Errors::APIError
67
+ sig { returns(NilClass) }
68
+ attr_accessor :status
69
+
70
+ sig { returns(NilClass) }
71
+ attr_accessor :body
72
+
73
+ # @api private
74
+ sig do
75
+ params(
76
+ url: URI::Generic,
77
+ status: NilClass,
78
+ headers: T.nilable(T::Hash[String, String]),
79
+ body: NilClass,
80
+ request: NilClass,
81
+ response: NilClass,
82
+ message: T.nilable(String)
83
+ ).returns(T.attached_class)
84
+ end
85
+ def self.new(
86
+ url:,
87
+ status: nil,
88
+ headers: nil,
89
+ body: nil,
90
+ request: nil,
91
+ response: nil,
92
+ message: "Connection error."
93
+ )
94
+ end
95
+ end
96
+
97
+ class APITimeoutError < Autorender::Errors::APIConnectionError
98
+ # @api private
99
+ sig do
100
+ params(
101
+ url: URI::Generic,
102
+ status: NilClass,
103
+ headers: T.nilable(T::Hash[String, String]),
104
+ body: NilClass,
105
+ request: NilClass,
106
+ response: NilClass,
107
+ message: T.nilable(String)
108
+ ).returns(T.attached_class)
109
+ end
110
+ def self.new(
111
+ url:,
112
+ status: nil,
113
+ headers: nil,
114
+ body: nil,
115
+ request: nil,
116
+ response: nil,
117
+ message: "Request timed out."
118
+ )
119
+ end
120
+ end
121
+
122
+ class APIStatusError < Autorender::Errors::APIError
123
+ # @api private
124
+ sig do
125
+ params(
126
+ url: URI::Generic,
127
+ status: Integer,
128
+ headers: T.nilable(T::Hash[String, String]),
129
+ body: T.nilable(Object),
130
+ request: NilClass,
131
+ response: NilClass,
132
+ message: T.nilable(String)
133
+ ).returns(T.attached_class)
134
+ end
135
+ def self.for(
136
+ url:,
137
+ status:,
138
+ headers:,
139
+ body:,
140
+ request:,
141
+ response:,
142
+ message: nil
143
+ )
144
+ end
145
+
146
+ sig { returns(Integer) }
147
+ attr_accessor :status
148
+
149
+ # @api private
150
+ sig do
151
+ params(
152
+ url: URI::Generic,
153
+ status: Integer,
154
+ headers: T.nilable(T::Hash[String, String]),
155
+ body: T.nilable(Object),
156
+ request: NilClass,
157
+ response: NilClass,
158
+ message: T.nilable(String)
159
+ ).returns(T.attached_class)
160
+ end
161
+ def self.new(
162
+ url:,
163
+ status:,
164
+ headers:,
165
+ body:,
166
+ request:,
167
+ response:,
168
+ message: nil
169
+ )
170
+ end
171
+ end
172
+
173
+ class BadRequestError < Autorender::Errors::APIStatusError
174
+ HTTP_STATUS = 400
175
+ end
176
+
177
+ class AuthenticationError < Autorender::Errors::APIStatusError
178
+ HTTP_STATUS = 401
179
+ end
180
+
181
+ class PermissionDeniedError < Autorender::Errors::APIStatusError
182
+ HTTP_STATUS = 403
183
+ end
184
+
185
+ class NotFoundError < Autorender::Errors::APIStatusError
186
+ HTTP_STATUS = 404
187
+ end
188
+
189
+ class ConflictError < Autorender::Errors::APIStatusError
190
+ HTTP_STATUS = 409
191
+ end
192
+
193
+ class UnprocessableEntityError < Autorender::Errors::APIStatusError
194
+ HTTP_STATUS = 422
195
+ end
196
+
197
+ class RateLimitError < Autorender::Errors::APIStatusError
198
+ HTTP_STATUS = 429
199
+ end
200
+
201
+ class InternalServerError < Autorender::Errors::APIStatusError
202
+ HTTP_STATUS = T.let((500..), T::Range[Integer])
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,37 @@
1
+ # typed: strong
2
+
3
+ module Autorender
4
+ class FilePart
5
+ sig { returns(T.any(Pathname, StringIO, IO, String)) }
6
+ attr_reader :content
7
+
8
+ sig { returns(T.nilable(String)) }
9
+ attr_reader :content_type
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_reader :filename
13
+
14
+ # @api private
15
+ sig { returns(String) }
16
+ private def read
17
+ end
18
+
19
+ sig { params(a: T.anything).returns(String) }
20
+ def to_json(*a)
21
+ end
22
+
23
+ sig { params(a: T.anything).returns(String) }
24
+ def to_yaml(*a)
25
+ end
26
+
27
+ sig do
28
+ params(
29
+ content: T.any(Pathname, StringIO, IO, String),
30
+ filename: T.nilable(T.any(Pathname, String)),
31
+ content_type: T.nilable(String)
32
+ ).returns(T.attached_class)
33
+ end
34
+ def self.new(content, filename: nil, content_type: nil)
35
+ end
36
+ end
37
+ end