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.
- checksums.yaml +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +41 -0
- data/README.md +266 -0
- data/SECURITY.md +27 -0
- data/lib/autorender/client.rb +98 -0
- data/lib/autorender/errors.rb +228 -0
- data/lib/autorender/file_part.rb +58 -0
- data/lib/autorender/internal/page_pagination.rb +96 -0
- data/lib/autorender/internal/transport/base_client.rb +576 -0
- data/lib/autorender/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/autorender/internal/type/array_of.rb +168 -0
- data/lib/autorender/internal/type/base_model.rb +531 -0
- data/lib/autorender/internal/type/base_page.rb +55 -0
- data/lib/autorender/internal/type/boolean.rb +77 -0
- data/lib/autorender/internal/type/converter.rb +327 -0
- data/lib/autorender/internal/type/enum.rb +131 -0
- data/lib/autorender/internal/type/file_input.rb +111 -0
- data/lib/autorender/internal/type/hash_of.rb +188 -0
- data/lib/autorender/internal/type/request_parameters.rb +42 -0
- data/lib/autorender/internal/type/union.rb +237 -0
- data/lib/autorender/internal/type/unknown.rb +81 -0
- data/lib/autorender/internal/util.rb +968 -0
- data/lib/autorender/internal.rb +20 -0
- data/lib/autorender/models/file_delete_params.rb +20 -0
- data/lib/autorender/models/file_list_params.rb +65 -0
- data/lib/autorender/models/file_list_response.rb +167 -0
- data/lib/autorender/models/file_rename_params.rb +29 -0
- data/lib/autorender/models/file_rename_response.rb +143 -0
- data/lib/autorender/models/file_retrieve_params.rb +20 -0
- data/lib/autorender/models/file_retrieve_response.rb +143 -0
- data/lib/autorender/models/folder_create_params.rb +30 -0
- data/lib/autorender/models/folder_create_response.rb +54 -0
- data/lib/autorender/models/folder_delete_params.rb +20 -0
- data/lib/autorender/models/folder_list_params.rb +49 -0
- data/lib/autorender/models/folder_list_response.rb +65 -0
- data/lib/autorender/models/folder_rename_params.rb +29 -0
- data/lib/autorender/models/folder_rename_response.rb +54 -0
- data/lib/autorender/models/multipart_upload_complete_params.rb +26 -0
- data/lib/autorender/models/multipart_upload_complete_response.rb +144 -0
- data/lib/autorender/models/multipart_upload_start_params.rb +82 -0
- data/lib/autorender/models/multipart_upload_start_response.rb +105 -0
- data/lib/autorender/models/upload_create_from_url_params.rb +76 -0
- data/lib/autorender/models/upload_create_from_url_response.rb +144 -0
- data/lib/autorender/models/upload_create_params.rb +86 -0
- data/lib/autorender/models/upload_create_response.rb +144 -0
- data/lib/autorender/models.rb +65 -0
- data/lib/autorender/request_options.rb +77 -0
- data/lib/autorender/resources/files.rb +108 -0
- data/lib/autorender/resources/folders.rb +109 -0
- data/lib/autorender/resources/multipart_uploads.rb +66 -0
- data/lib/autorender/resources/uploads.rb +90 -0
- data/lib/autorender/version.rb +5 -0
- data/lib/autorender.rb +82 -0
- data/manifest.yaml +17 -0
- data/rbi/autorender/client.rbi +62 -0
- data/rbi/autorender/errors.rbi +205 -0
- data/rbi/autorender/file_part.rbi +37 -0
- data/rbi/autorender/internal/page_pagination.rbi +28 -0
- data/rbi/autorender/internal/transport/base_client.rbi +300 -0
- data/rbi/autorender/internal/transport/pooled_net_requester.rbi +84 -0
- data/rbi/autorender/internal/type/array_of.rbi +104 -0
- data/rbi/autorender/internal/type/base_model.rbi +308 -0
- data/rbi/autorender/internal/type/base_page.rbi +42 -0
- data/rbi/autorender/internal/type/boolean.rbi +58 -0
- data/rbi/autorender/internal/type/converter.rbi +216 -0
- data/rbi/autorender/internal/type/enum.rbi +82 -0
- data/rbi/autorender/internal/type/file_input.rbi +59 -0
- data/rbi/autorender/internal/type/hash_of.rbi +104 -0
- data/rbi/autorender/internal/type/request_parameters.rbi +29 -0
- data/rbi/autorender/internal/type/union.rbi +128 -0
- data/rbi/autorender/internal/type/unknown.rbi +58 -0
- data/rbi/autorender/internal/util.rbi +515 -0
- data/rbi/autorender/internal.rbi +18 -0
- data/rbi/autorender/models/file_delete_params.rbi +35 -0
- data/rbi/autorender/models/file_list_params.rbi +116 -0
- data/rbi/autorender/models/file_list_response.rbi +227 -0
- data/rbi/autorender/models/file_rename_params.rbi +49 -0
- data/rbi/autorender/models/file_rename_response.rbi +205 -0
- data/rbi/autorender/models/file_retrieve_params.rbi +35 -0
- data/rbi/autorender/models/file_retrieve_response.rbi +209 -0
- data/rbi/autorender/models/folder_create_params.rbi +54 -0
- data/rbi/autorender/models/folder_create_response.rbi +75 -0
- data/rbi/autorender/models/folder_delete_params.rbi +35 -0
- data/rbi/autorender/models/folder_list_params.rbi +97 -0
- data/rbi/autorender/models/folder_list_response.rbi +105 -0
- data/rbi/autorender/models/folder_rename_params.rbi +49 -0
- data/rbi/autorender/models/folder_rename_response.rbi +75 -0
- data/rbi/autorender/models/multipart_upload_complete_params.rbi +49 -0
- data/rbi/autorender/models/multipart_upload_complete_response.rbi +174 -0
- data/rbi/autorender/models/multipart_upload_start_params.rbi +138 -0
- data/rbi/autorender/models/multipart_upload_start_response.rbi +146 -0
- data/rbi/autorender/models/upload_create_from_url_params.rbi +119 -0
- data/rbi/autorender/models/upload_create_from_url_response.rbi +174 -0
- data/rbi/autorender/models/upload_create_params.rbi +128 -0
- data/rbi/autorender/models/upload_create_response.rbi +174 -0
- data/rbi/autorender/models.rbi +28 -0
- data/rbi/autorender/request_options.rbi +59 -0
- data/rbi/autorender/resources/files.rbi +72 -0
- data/rbi/autorender/resources/folders.rbi +75 -0
- data/rbi/autorender/resources/multipart_uploads.rbi +53 -0
- data/rbi/autorender/resources/uploads.rbi +84 -0
- data/rbi/autorender/version.rbi +5 -0
- data/sig/autorender/client.rbs +32 -0
- data/sig/autorender/errors.rbs +117 -0
- data/sig/autorender/file_part.rbs +21 -0
- data/sig/autorender/internal/page_pagination.rbs +17 -0
- data/sig/autorender/internal/transport/base_client.rbs +133 -0
- data/sig/autorender/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/autorender/internal/type/array_of.rbs +48 -0
- data/sig/autorender/internal/type/base_model.rbs +102 -0
- data/sig/autorender/internal/type/base_page.rbs +24 -0
- data/sig/autorender/internal/type/boolean.rbs +26 -0
- data/sig/autorender/internal/type/converter.rbs +79 -0
- data/sig/autorender/internal/type/enum.rbs +32 -0
- data/sig/autorender/internal/type/file_input.rbs +25 -0
- data/sig/autorender/internal/type/hash_of.rbs +48 -0
- data/sig/autorender/internal/type/request_parameters.rbs +19 -0
- data/sig/autorender/internal/type/union.rbs +52 -0
- data/sig/autorender/internal/type/unknown.rbs +26 -0
- data/sig/autorender/internal/util.rbs +199 -0
- data/sig/autorender/internal.rbs +9 -0
- data/sig/autorender/models/file_delete_params.rbs +23 -0
- data/sig/autorender/models/file_list_params.rbs +79 -0
- data/sig/autorender/models/file_list_response.rbs +159 -0
- data/sig/autorender/models/file_rename_params.rbs +28 -0
- data/sig/autorender/models/file_rename_response.rbs +132 -0
- data/sig/autorender/models/file_retrieve_params.rbs +23 -0
- data/sig/autorender/models/file_retrieve_response.rbs +132 -0
- data/sig/autorender/models/folder_create_params.rbs +30 -0
- data/sig/autorender/models/folder_create_response.rbs +50 -0
- data/sig/autorender/models/folder_delete_params.rbs +23 -0
- data/sig/autorender/models/folder_list_params.rbs +57 -0
- data/sig/autorender/models/folder_list_response.rbs +65 -0
- data/sig/autorender/models/folder_rename_params.rbs +28 -0
- data/sig/autorender/models/folder_rename_response.rbs +50 -0
- data/sig/autorender/models/multipart_upload_complete_params.rbs +30 -0
- data/sig/autorender/models/multipart_upload_complete_response.rbs +131 -0
- data/sig/autorender/models/multipart_upload_start_params.rbs +90 -0
- data/sig/autorender/models/multipart_upload_start_response.rbs +92 -0
- data/sig/autorender/models/upload_create_from_url_params.rbs +75 -0
- data/sig/autorender/models/upload_create_from_url_response.rbs +131 -0
- data/sig/autorender/models/upload_create_params.rbs +80 -0
- data/sig/autorender/models/upload_create_response.rbs +131 -0
- data/sig/autorender/models.rbs +25 -0
- data/sig/autorender/request_options.rbs +36 -0
- data/sig/autorender/resources/files.rbs +32 -0
- data/sig/autorender/resources/folders.rbs +31 -0
- data/sig/autorender/resources/multipart_uploads.rbs +26 -0
- data/sig/autorender/resources/uploads.rbs +32 -0
- data/sig/autorender/version.rbs +3 -0
- 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
|
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,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
|