vern-sdk 0.0.1.pre.alpha.1
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 +10 -0
- data/README.md +205 -0
- data/SECURITY.md +23 -0
- data/lib/vern_sdk/client.rb +72 -0
- data/lib/vern_sdk/errors.rb +192 -0
- data/lib/vern_sdk/file_part.rb +55 -0
- data/lib/vern_sdk/internal/transport/base_client.rb +555 -0
- data/lib/vern_sdk/internal/transport/pooled_net_requester.rb +209 -0
- data/lib/vern_sdk/internal/type/array_of.rb +162 -0
- data/lib/vern_sdk/internal/type/base_model.rb +484 -0
- data/lib/vern_sdk/internal/type/base_page.rb +55 -0
- data/lib/vern_sdk/internal/type/boolean.rb +71 -0
- data/lib/vern_sdk/internal/type/converter.rb +292 -0
- data/lib/vern_sdk/internal/type/enum.rb +120 -0
- data/lib/vern_sdk/internal/type/file_input.rb +103 -0
- data/lib/vern_sdk/internal/type/hash_of.rb +182 -0
- data/lib/vern_sdk/internal/type/request_parameters.rb +42 -0
- data/lib/vern_sdk/internal/type/union.rb +227 -0
- data/lib/vern_sdk/internal/type/unknown.rb +75 -0
- data/lib/vern_sdk/internal/util.rb +915 -0
- data/lib/vern_sdk/internal.rb +20 -0
- data/lib/vern_sdk/models/run_create_params.rb +46 -0
- data/lib/vern_sdk/models/run_create_response.rb +33 -0
- data/lib/vern_sdk/models/run_retrieve_params.rb +14 -0
- data/lib/vern_sdk/models/run_retrieve_response.rb +88 -0
- data/lib/vern_sdk/models.rb +45 -0
- data/lib/vern_sdk/request_options.rb +77 -0
- data/lib/vern_sdk/resources/runs.rb +62 -0
- data/lib/vern_sdk/version.rb +5 -0
- data/lib/vern_sdk.rb +58 -0
- data/manifest.yaml +15 -0
- data/rbi/vern_sdk/client.rbi +49 -0
- data/rbi/vern_sdk/errors.rbi +162 -0
- data/rbi/vern_sdk/file_part.rbi +37 -0
- data/rbi/vern_sdk/internal/transport/base_client.rbi +293 -0
- data/rbi/vern_sdk/internal/transport/pooled_net_requester.rbi +79 -0
- data/rbi/vern_sdk/internal/type/array_of.rbi +104 -0
- data/rbi/vern_sdk/internal/type/base_model.rbi +302 -0
- data/rbi/vern_sdk/internal/type/base_page.rbi +42 -0
- data/rbi/vern_sdk/internal/type/boolean.rbi +56 -0
- data/rbi/vern_sdk/internal/type/converter.rbi +162 -0
- data/rbi/vern_sdk/internal/type/enum.rbi +82 -0
- data/rbi/vern_sdk/internal/type/file_input.rbi +59 -0
- data/rbi/vern_sdk/internal/type/hash_of.rbi +104 -0
- data/rbi/vern_sdk/internal/type/request_parameters.rbi +29 -0
- data/rbi/vern_sdk/internal/type/union.rbi +116 -0
- data/rbi/vern_sdk/internal/type/unknown.rbi +56 -0
- data/rbi/vern_sdk/internal/util.rbi +482 -0
- data/rbi/vern_sdk/internal.rbi +16 -0
- data/rbi/vern_sdk/models/run_create_params.rbi +76 -0
- data/rbi/vern_sdk/models/run_create_response.rbi +58 -0
- data/rbi/vern_sdk/models/run_retrieve_params.rbi +27 -0
- data/rbi/vern_sdk/models/run_retrieve_response.rbi +168 -0
- data/rbi/vern_sdk/models.rbi +7 -0
- data/rbi/vern_sdk/request_options.rbi +57 -0
- data/rbi/vern_sdk/resources/runs.rbi +49 -0
- data/rbi/vern_sdk/version.rbi +5 -0
- data/sig/vern_sdk/client.rbs +26 -0
- data/sig/vern_sdk/errors.rbs +101 -0
- data/sig/vern_sdk/file_part.rbs +21 -0
- data/sig/vern_sdk/internal/transport/base_client.rbs +131 -0
- data/sig/vern_sdk/internal/transport/pooled_net_requester.rbs +45 -0
- data/sig/vern_sdk/internal/type/array_of.rbs +48 -0
- data/sig/vern_sdk/internal/type/base_model.rbs +102 -0
- data/sig/vern_sdk/internal/type/base_page.rbs +24 -0
- data/sig/vern_sdk/internal/type/boolean.rbs +26 -0
- data/sig/vern_sdk/internal/type/converter.rbs +56 -0
- data/sig/vern_sdk/internal/type/enum.rbs +32 -0
- data/sig/vern_sdk/internal/type/file_input.rbs +25 -0
- data/sig/vern_sdk/internal/type/hash_of.rbs +48 -0
- data/sig/vern_sdk/internal/type/request_parameters.rbs +17 -0
- data/sig/vern_sdk/internal/type/union.rbs +52 -0
- data/sig/vern_sdk/internal/type/unknown.rbs +26 -0
- data/sig/vern_sdk/internal/util.rbs +185 -0
- data/sig/vern_sdk/internal.rbs +9 -0
- data/sig/vern_sdk/models/run_create_params.rbs +47 -0
- data/sig/vern_sdk/models/run_create_response.rbs +32 -0
- data/sig/vern_sdk/models/run_retrieve_params.rbs +15 -0
- data/sig/vern_sdk/models/run_retrieve_response.rbs +86 -0
- data/sig/vern_sdk/models.rbs +5 -0
- data/sig/vern_sdk/request_options.rbs +34 -0
- data/sig/vern_sdk/resources/runs.rbs +20 -0
- data/sig/vern_sdk/version.rbs +3 -0
- metadata +143 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Internal
|
5
|
+
extend VernSDK::Internal::Util::SorbetRuntimeSupport
|
6
|
+
|
7
|
+
OMIT =
|
8
|
+
Object.new.tap do
|
9
|
+
_1.define_singleton_method(:inspect) { "#<#{VernSDK::Internal}::OMIT>" }
|
10
|
+
end
|
11
|
+
.freeze
|
12
|
+
|
13
|
+
define_sorbet_constant!(:AnyHash) do
|
14
|
+
T.type_alias { T::Hash[Symbol, T.anything] }
|
15
|
+
end
|
16
|
+
define_sorbet_constant!(:FileInput) do
|
17
|
+
T.type_alias { T.any(Pathname, StringIO, IO, String, VernSDK::FilePart) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Models
|
5
|
+
# @see VernSDK::Resources::Runs#create
|
6
|
+
class RunCreateParams < VernSDK::Internal::Type::BaseModel
|
7
|
+
extend VernSDK::Internal::Type::RequestParameters::Converter
|
8
|
+
include VernSDK::Internal::Type::RequestParameters
|
9
|
+
|
10
|
+
# @!attribute task_id
|
11
|
+
# The ID of the task to execute
|
12
|
+
#
|
13
|
+
# @return [String]
|
14
|
+
required :task_id, String, api_name: :taskId
|
15
|
+
|
16
|
+
# @!attribute inputs
|
17
|
+
# The inputs required for the task
|
18
|
+
#
|
19
|
+
# @return [Hash{Symbol=>Object}, nil]
|
20
|
+
optional :inputs, VernSDK::Internal::Type::HashOf[VernSDK::Internal::Type::Unknown]
|
21
|
+
|
22
|
+
# @!attribute profile_id
|
23
|
+
# Optional user-specified UID for a profile linked via magic link
|
24
|
+
#
|
25
|
+
# @return [String, nil]
|
26
|
+
optional :profile_id, String, api_name: :profileId
|
27
|
+
|
28
|
+
# @!attribute url
|
29
|
+
# An optional URL to be processed by the task
|
30
|
+
#
|
31
|
+
# @return [String, nil]
|
32
|
+
optional :url, String
|
33
|
+
|
34
|
+
# @!method initialize(task_id:, inputs: nil, profile_id: nil, url: nil, request_options: {})
|
35
|
+
# @param task_id [String] The ID of the task to execute
|
36
|
+
#
|
37
|
+
# @param inputs [Hash{Symbol=>Object}] The inputs required for the task
|
38
|
+
#
|
39
|
+
# @param profile_id [String] Optional user-specified UID for a profile linked via magic link
|
40
|
+
#
|
41
|
+
# @param url [String] An optional URL to be processed by the task
|
42
|
+
#
|
43
|
+
# @param request_options [VernSDK::RequestOptions, Hash{Symbol=>Object}]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Models
|
5
|
+
# @see VernSDK::Resources::Runs#create
|
6
|
+
class RunCreateResponse < VernSDK::Internal::Type::BaseModel
|
7
|
+
# @!attribute id
|
8
|
+
# Unique identifier for the run
|
9
|
+
#
|
10
|
+
# @return [String, nil]
|
11
|
+
optional :id, String
|
12
|
+
|
13
|
+
# @!attribute inputs
|
14
|
+
# The inputs provided for the task
|
15
|
+
#
|
16
|
+
# @return [Hash{Symbol=>Object}, nil]
|
17
|
+
optional :inputs, VernSDK::Internal::Type::HashOf[VernSDK::Internal::Type::Unknown]
|
18
|
+
|
19
|
+
# @!attribute queued_at
|
20
|
+
# Timestamp when the run was queued
|
21
|
+
#
|
22
|
+
# @return [Time, nil]
|
23
|
+
optional :queued_at, Time
|
24
|
+
|
25
|
+
# @!method initialize(id: nil, inputs: nil, queued_at: nil)
|
26
|
+
# @param id [String] Unique identifier for the run
|
27
|
+
#
|
28
|
+
# @param inputs [Hash{Symbol=>Object}] The inputs provided for the task
|
29
|
+
#
|
30
|
+
# @param queued_at [Time] Timestamp when the run was queued
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Models
|
5
|
+
# @see VernSDK::Resources::Runs#retrieve
|
6
|
+
class RunRetrieveParams < VernSDK::Internal::Type::BaseModel
|
7
|
+
extend VernSDK::Internal::Type::RequestParameters::Converter
|
8
|
+
include VernSDK::Internal::Type::RequestParameters
|
9
|
+
|
10
|
+
# @!method initialize(request_options: {})
|
11
|
+
# @param request_options [VernSDK::RequestOptions, Hash{Symbol=>Object}]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Models
|
5
|
+
# @see VernSDK::Resources::Runs#retrieve
|
6
|
+
class RunRetrieveResponse < VernSDK::Internal::Type::BaseModel
|
7
|
+
# @!attribute id
|
8
|
+
# Unique identifier for the run
|
9
|
+
#
|
10
|
+
# @return [String, nil]
|
11
|
+
optional :id, String
|
12
|
+
|
13
|
+
# @!attribute completed_at
|
14
|
+
# Timestamp when the run completed
|
15
|
+
#
|
16
|
+
# @return [Time, nil]
|
17
|
+
optional :completed_at, Time
|
18
|
+
|
19
|
+
# @!attribute created_at
|
20
|
+
# Timestamp when the run was created
|
21
|
+
#
|
22
|
+
# @return [Time, nil]
|
23
|
+
optional :created_at, Time
|
24
|
+
|
25
|
+
# @!attribute inputs
|
26
|
+
# The inputs provided for the task
|
27
|
+
#
|
28
|
+
# @return [Hash{Symbol=>Object}, nil]
|
29
|
+
optional :inputs, VernSDK::Internal::Type::HashOf[VernSDK::Internal::Type::Unknown]
|
30
|
+
|
31
|
+
# @!attribute response
|
32
|
+
# The response data from the task execution
|
33
|
+
#
|
34
|
+
# @return [Hash{Symbol=>Object}, nil]
|
35
|
+
optional :response, VernSDK::Internal::Type::HashOf[VernSDK::Internal::Type::Unknown]
|
36
|
+
|
37
|
+
# @!attribute started_at
|
38
|
+
# Timestamp when the run started executing
|
39
|
+
#
|
40
|
+
# @return [Time, nil]
|
41
|
+
optional :started_at, Time
|
42
|
+
|
43
|
+
# @!attribute status
|
44
|
+
# The current status of the run
|
45
|
+
#
|
46
|
+
# @return [Symbol, VernSDK::Models::RunRetrieveResponse::Status, nil]
|
47
|
+
optional :status, enum: -> { VernSDK::Models::RunRetrieveResponse::Status }
|
48
|
+
|
49
|
+
# @!attribute task
|
50
|
+
# The name of the task that was executed
|
51
|
+
#
|
52
|
+
# @return [String, nil]
|
53
|
+
optional :task, String
|
54
|
+
|
55
|
+
# @!method initialize(id: nil, completed_at: nil, created_at: nil, inputs: nil, response: nil, started_at: nil, status: nil, task: nil)
|
56
|
+
# @param id [String] Unique identifier for the run
|
57
|
+
#
|
58
|
+
# @param completed_at [Time] Timestamp when the run completed
|
59
|
+
#
|
60
|
+
# @param created_at [Time] Timestamp when the run was created
|
61
|
+
#
|
62
|
+
# @param inputs [Hash{Symbol=>Object}] The inputs provided for the task
|
63
|
+
#
|
64
|
+
# @param response [Hash{Symbol=>Object}] The response data from the task execution
|
65
|
+
#
|
66
|
+
# @param started_at [Time] Timestamp when the run started executing
|
67
|
+
#
|
68
|
+
# @param status [Symbol, VernSDK::Models::RunRetrieveResponse::Status] The current status of the run
|
69
|
+
#
|
70
|
+
# @param task [String] The name of the task that was executed
|
71
|
+
|
72
|
+
# The current status of the run
|
73
|
+
#
|
74
|
+
# @see VernSDK::Models::RunRetrieveResponse#status
|
75
|
+
module Status
|
76
|
+
extend VernSDK::Internal::Type::Enum
|
77
|
+
|
78
|
+
QUEUED = :queued
|
79
|
+
RUNNING = :running
|
80
|
+
COMPLETE = :complete
|
81
|
+
FAILED = :failed
|
82
|
+
|
83
|
+
# @!method self.values
|
84
|
+
# @return [Array<Symbol>]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
[VernSDK::Internal::Type::BaseModel, *VernSDK::Internal::Type::BaseModel.subclasses].each do |cls|
|
5
|
+
cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, VernSDK::Internal::AnyHash) } }
|
6
|
+
end
|
7
|
+
|
8
|
+
VernSDK::Internal::Util.walk_namespaces(VernSDK::Models).each do |mod|
|
9
|
+
case mod
|
10
|
+
in VernSDK::Internal::Type::Enum | VernSDK::Internal::Type::Union
|
11
|
+
mod.constants.each do |name|
|
12
|
+
case mod.const_get(name)
|
13
|
+
in true | false
|
14
|
+
mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T.all(T::Boolean, mod) } }
|
15
|
+
mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
|
16
|
+
in Integer
|
17
|
+
mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { T.all(Integer, mod) } }
|
18
|
+
mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
|
19
|
+
in Float
|
20
|
+
mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { T.all(Float, mod) } }
|
21
|
+
mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
|
22
|
+
in Symbol
|
23
|
+
mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { T.all(Symbol, mod) } }
|
24
|
+
mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
|
25
|
+
else
|
26
|
+
end
|
27
|
+
end
|
28
|
+
else
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
VernSDK::Internal::Util.walk_namespaces(VernSDK::Models)
|
33
|
+
.lazy
|
34
|
+
.grep(VernSDK::Internal::Type::Union)
|
35
|
+
.each do |mod|
|
36
|
+
const = :Variants
|
37
|
+
next if mod.sorbet_constant_defined?(const)
|
38
|
+
|
39
|
+
mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
|
40
|
+
end
|
41
|
+
|
42
|
+
RunCreateParams = VernSDK::Models::RunCreateParams
|
43
|
+
|
44
|
+
RunRetrieveParams = VernSDK::Models::RunRetrieveParams
|
45
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
# Specify HTTP behaviour to use for a specific request. These options supplement
|
5
|
+
# or override those provided at the client level.
|
6
|
+
#
|
7
|
+
# When making a request, you can pass an actual {RequestOptions} instance, or
|
8
|
+
# simply pass a Hash with symbol keys matching the attributes on this class.
|
9
|
+
class RequestOptions < VernSDK::Internal::Type::BaseModel
|
10
|
+
# @api private
|
11
|
+
#
|
12
|
+
# @param opts [VernSDK::RequestOptions, Hash{Symbol=>Object}]
|
13
|
+
#
|
14
|
+
# @raise [ArgumentError]
|
15
|
+
def self.validate!(opts)
|
16
|
+
case opts
|
17
|
+
in VernSDK::RequestOptions | Hash
|
18
|
+
opts.to_h.each_key do |k|
|
19
|
+
unless fields.include?(k)
|
20
|
+
raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
else
|
24
|
+
raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# @!attribute idempotency_key
|
29
|
+
# Idempotency key to send with request and all associated retries. Will only be
|
30
|
+
# sent for write requests.
|
31
|
+
#
|
32
|
+
# @return [String, nil]
|
33
|
+
optional :idempotency_key, String
|
34
|
+
|
35
|
+
# @!attribute extra_query
|
36
|
+
# Extra query params to send with the request. These are `.merge`’d into any
|
37
|
+
# `query` given at the client level.
|
38
|
+
#
|
39
|
+
# @return [Hash{String=>Array<String>, String, nil}, nil]
|
40
|
+
optional :extra_query, VernSDK::Internal::Type::HashOf[VernSDK::Internal::Type::ArrayOf[String]]
|
41
|
+
|
42
|
+
# @!attribute extra_headers
|
43
|
+
# Extra headers to send with the request. These are `.merged`’d into any
|
44
|
+
# `extra_headers` given at the client level.
|
45
|
+
#
|
46
|
+
# @return [Hash{String=>String, nil}, nil]
|
47
|
+
optional :extra_headers, VernSDK::Internal::Type::HashOf[String, nil?: true]
|
48
|
+
|
49
|
+
# @!attribute extra_body
|
50
|
+
# Extra data to send with the request. These are deep merged into any data
|
51
|
+
# generated as part of the normal request.
|
52
|
+
#
|
53
|
+
# @return [Object, nil]
|
54
|
+
optional :extra_body, VernSDK::Internal::Type::HashOf[VernSDK::Internal::Type::Unknown]
|
55
|
+
|
56
|
+
# @!attribute max_retries
|
57
|
+
# Maximum number of retries to attempt after a failed initial request.
|
58
|
+
#
|
59
|
+
# @return [Integer, nil]
|
60
|
+
optional :max_retries, Integer
|
61
|
+
|
62
|
+
# @!attribute timeout
|
63
|
+
# Request timeout in seconds.
|
64
|
+
#
|
65
|
+
# @return [Float, nil]
|
66
|
+
optional :timeout, Float
|
67
|
+
|
68
|
+
# @!method initialize(values = {})
|
69
|
+
# Returns a new instance of RequestOptions.
|
70
|
+
#
|
71
|
+
# @param values [Hash{Symbol=>Object}]
|
72
|
+
|
73
|
+
define_sorbet_constant!(:OrHash) do
|
74
|
+
T.type_alias { T.any(VernSDK::RequestOptions, VernSDK::Internal::AnyHash) }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Resources
|
5
|
+
class Runs
|
6
|
+
# Executes a task with the provided inputs
|
7
|
+
#
|
8
|
+
# @overload create(task_id:, inputs: nil, profile_id: nil, url: nil, request_options: {})
|
9
|
+
#
|
10
|
+
# @param task_id [String] The ID of the task to execute
|
11
|
+
#
|
12
|
+
# @param inputs [Hash{Symbol=>Object}] The inputs required for the task
|
13
|
+
#
|
14
|
+
# @param profile_id [String] Optional user-specified UID for a profile linked via magic link
|
15
|
+
#
|
16
|
+
# @param url [String] An optional URL to be processed by the task
|
17
|
+
#
|
18
|
+
# @param request_options [VernSDK::RequestOptions, Hash{Symbol=>Object}, nil]
|
19
|
+
#
|
20
|
+
# @return [VernSDK::Models::RunCreateResponse]
|
21
|
+
#
|
22
|
+
# @see VernSDK::Models::RunCreateParams
|
23
|
+
def create(params)
|
24
|
+
parsed, options = VernSDK::RunCreateParams.dump_request(params)
|
25
|
+
@client.request(
|
26
|
+
method: :post,
|
27
|
+
path: "runs",
|
28
|
+
body: parsed,
|
29
|
+
model: VernSDK::Models::RunCreateResponse,
|
30
|
+
options: options
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Retrieves the details of a specific task run
|
35
|
+
#
|
36
|
+
# @overload retrieve(id, request_options: {})
|
37
|
+
#
|
38
|
+
# @param id [String] The ID of the run to retrieve
|
39
|
+
#
|
40
|
+
# @param request_options [VernSDK::RequestOptions, Hash{Symbol=>Object}, nil]
|
41
|
+
#
|
42
|
+
# @return [VernSDK::Models::RunRetrieveResponse]
|
43
|
+
#
|
44
|
+
# @see VernSDK::Models::RunRetrieveParams
|
45
|
+
def retrieve(id, params = {})
|
46
|
+
@client.request(
|
47
|
+
method: :get,
|
48
|
+
path: ["runs/%1$s", id],
|
49
|
+
model: VernSDK::Models::RunRetrieveResponse,
|
50
|
+
options: params[:request_options]
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @api private
|
55
|
+
#
|
56
|
+
# @param client [VernSDK::Client]
|
57
|
+
def initialize(client:)
|
58
|
+
@client = client
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/vern_sdk.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Standard libraries.
|
4
|
+
# rubocop:disable Lint/RedundantRequireStatement
|
5
|
+
require "English"
|
6
|
+
require "cgi"
|
7
|
+
require "date"
|
8
|
+
require "erb"
|
9
|
+
require "etc"
|
10
|
+
require "json"
|
11
|
+
require "net/http"
|
12
|
+
require "pathname"
|
13
|
+
require "rbconfig"
|
14
|
+
require "securerandom"
|
15
|
+
require "set"
|
16
|
+
require "stringio"
|
17
|
+
require "time"
|
18
|
+
require "uri"
|
19
|
+
# rubocop:enable Lint/RedundantRequireStatement
|
20
|
+
|
21
|
+
# We already ship the preferred sorbet manifests in the package itself.
|
22
|
+
# `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
|
23
|
+
if Object.const_defined?(:Tapioca) &&
|
24
|
+
caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
|
25
|
+
ARGV.none?(/dsl/)
|
26
|
+
return
|
27
|
+
end
|
28
|
+
|
29
|
+
# Gems.
|
30
|
+
require "connection_pool"
|
31
|
+
|
32
|
+
# Package files.
|
33
|
+
require_relative "vern_sdk/version"
|
34
|
+
require_relative "vern_sdk/internal/util"
|
35
|
+
require_relative "vern_sdk/internal/type/converter"
|
36
|
+
require_relative "vern_sdk/internal/type/unknown"
|
37
|
+
require_relative "vern_sdk/internal/type/boolean"
|
38
|
+
require_relative "vern_sdk/internal/type/file_input"
|
39
|
+
require_relative "vern_sdk/internal/type/enum"
|
40
|
+
require_relative "vern_sdk/internal/type/union"
|
41
|
+
require_relative "vern_sdk/internal/type/array_of"
|
42
|
+
require_relative "vern_sdk/internal/type/hash_of"
|
43
|
+
require_relative "vern_sdk/internal/type/base_model"
|
44
|
+
require_relative "vern_sdk/internal/type/base_page"
|
45
|
+
require_relative "vern_sdk/internal/type/request_parameters"
|
46
|
+
require_relative "vern_sdk/internal"
|
47
|
+
require_relative "vern_sdk/request_options"
|
48
|
+
require_relative "vern_sdk/file_part"
|
49
|
+
require_relative "vern_sdk/errors"
|
50
|
+
require_relative "vern_sdk/internal/transport/base_client"
|
51
|
+
require_relative "vern_sdk/internal/transport/pooled_net_requester"
|
52
|
+
require_relative "vern_sdk/client"
|
53
|
+
require_relative "vern_sdk/models/run_create_params"
|
54
|
+
require_relative "vern_sdk/models/run_create_response"
|
55
|
+
require_relative "vern_sdk/models/run_retrieve_params"
|
56
|
+
require_relative "vern_sdk/models/run_retrieve_response"
|
57
|
+
require_relative "vern_sdk/models"
|
58
|
+
require_relative "vern_sdk/resources/runs"
|
data/manifest.yaml
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
class Client < VernSDK::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(String) }
|
14
|
+
attr_reader :api_key
|
15
|
+
|
16
|
+
sig { returns(VernSDK::Resources::Runs) }
|
17
|
+
attr_reader :runs
|
18
|
+
|
19
|
+
# @api private
|
20
|
+
sig { override.returns(T::Hash[String, String]) }
|
21
|
+
private def auth_headers
|
22
|
+
end
|
23
|
+
|
24
|
+
# Creates and returns a new client for interacting with the API.
|
25
|
+
sig do
|
26
|
+
params(
|
27
|
+
api_key: T.nilable(String),
|
28
|
+
base_url: T.nilable(String),
|
29
|
+
max_retries: Integer,
|
30
|
+
timeout: Float,
|
31
|
+
initial_retry_delay: Float,
|
32
|
+
max_retry_delay: Float
|
33
|
+
).returns(T.attached_class)
|
34
|
+
end
|
35
|
+
def self.new(
|
36
|
+
# Defaults to `ENV["VERN_SDK_API_KEY"]`
|
37
|
+
api_key: ENV["VERN_SDK_API_KEY"],
|
38
|
+
# Override the default base URL for the API, e.g.,
|
39
|
+
# `"https://api.example.com/v2/"`. Defaults to `ENV["VERN_BASE_URL"]`
|
40
|
+
base_url: ENV["VERN_BASE_URL"],
|
41
|
+
# Max number of retries to attempt after a failed retryable request.
|
42
|
+
max_retries: VernSDK::Client::DEFAULT_MAX_RETRIES,
|
43
|
+
timeout: VernSDK::Client::DEFAULT_TIMEOUT_IN_SECONDS,
|
44
|
+
initial_retry_delay: VernSDK::Client::DEFAULT_INITIAL_RETRY_DELAY,
|
45
|
+
max_retry_delay: VernSDK::Client::DEFAULT_MAX_RETRY_DELAY
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module VernSDK
|
4
|
+
module Errors
|
5
|
+
class Error < StandardError
|
6
|
+
sig { returns(T.nilable(StandardError)) }
|
7
|
+
attr_accessor :cause
|
8
|
+
end
|
9
|
+
|
10
|
+
class ConversionError < VernSDK::Errors::Error
|
11
|
+
end
|
12
|
+
|
13
|
+
class APIError < VernSDK::Errors::Error
|
14
|
+
sig { returns(URI::Generic) }
|
15
|
+
attr_accessor :url
|
16
|
+
|
17
|
+
sig { returns(T.nilable(Integer)) }
|
18
|
+
attr_accessor :status
|
19
|
+
|
20
|
+
sig { returns(T.nilable(T.anything)) }
|
21
|
+
attr_accessor :body
|
22
|
+
|
23
|
+
# @api private
|
24
|
+
sig do
|
25
|
+
params(
|
26
|
+
url: URI::Generic,
|
27
|
+
status: T.nilable(Integer),
|
28
|
+
body: T.nilable(Object),
|
29
|
+
request: NilClass,
|
30
|
+
response: NilClass,
|
31
|
+
message: T.nilable(String)
|
32
|
+
).returns(T.attached_class)
|
33
|
+
end
|
34
|
+
def self.new(
|
35
|
+
url:,
|
36
|
+
status: nil,
|
37
|
+
body: nil,
|
38
|
+
request: nil,
|
39
|
+
response: nil,
|
40
|
+
message: nil
|
41
|
+
)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class APIConnectionError < VernSDK::Errors::APIError
|
46
|
+
sig { void }
|
47
|
+
attr_accessor :status
|
48
|
+
|
49
|
+
sig { void }
|
50
|
+
attr_accessor :body
|
51
|
+
|
52
|
+
# @api private
|
53
|
+
sig do
|
54
|
+
params(
|
55
|
+
url: URI::Generic,
|
56
|
+
status: NilClass,
|
57
|
+
body: NilClass,
|
58
|
+
request: NilClass,
|
59
|
+
response: NilClass,
|
60
|
+
message: T.nilable(String)
|
61
|
+
).returns(T.attached_class)
|
62
|
+
end
|
63
|
+
def self.new(
|
64
|
+
url:,
|
65
|
+
status: nil,
|
66
|
+
body: nil,
|
67
|
+
request: nil,
|
68
|
+
response: nil,
|
69
|
+
message: "Connection error."
|
70
|
+
)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class APITimeoutError < VernSDK::Errors::APIConnectionError
|
75
|
+
# @api private
|
76
|
+
sig do
|
77
|
+
params(
|
78
|
+
url: URI::Generic,
|
79
|
+
status: NilClass,
|
80
|
+
body: NilClass,
|
81
|
+
request: NilClass,
|
82
|
+
response: NilClass,
|
83
|
+
message: T.nilable(String)
|
84
|
+
).returns(T.attached_class)
|
85
|
+
end
|
86
|
+
def self.new(
|
87
|
+
url:,
|
88
|
+
status: nil,
|
89
|
+
body: nil,
|
90
|
+
request: nil,
|
91
|
+
response: nil,
|
92
|
+
message: "Request timed out."
|
93
|
+
)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
class APIStatusError < VernSDK::Errors::APIError
|
98
|
+
# @api private
|
99
|
+
sig do
|
100
|
+
params(
|
101
|
+
url: URI::Generic,
|
102
|
+
status: Integer,
|
103
|
+
body: T.nilable(Object),
|
104
|
+
request: NilClass,
|
105
|
+
response: NilClass,
|
106
|
+
message: T.nilable(String)
|
107
|
+
).returns(T.attached_class)
|
108
|
+
end
|
109
|
+
def self.for(url:, status:, body:, request:, response:, message: nil)
|
110
|
+
end
|
111
|
+
|
112
|
+
sig { returns(Integer) }
|
113
|
+
attr_accessor :status
|
114
|
+
|
115
|
+
# @api private
|
116
|
+
sig do
|
117
|
+
params(
|
118
|
+
url: URI::Generic,
|
119
|
+
status: Integer,
|
120
|
+
body: T.nilable(Object),
|
121
|
+
request: NilClass,
|
122
|
+
response: NilClass,
|
123
|
+
message: T.nilable(String)
|
124
|
+
).returns(T.attached_class)
|
125
|
+
end
|
126
|
+
def self.new(url:, status:, body:, request:, response:, message: nil)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
class BadRequestError < VernSDK::Errors::APIStatusError
|
131
|
+
HTTP_STATUS = 400
|
132
|
+
end
|
133
|
+
|
134
|
+
class AuthenticationError < VernSDK::Errors::APIStatusError
|
135
|
+
HTTP_STATUS = 401
|
136
|
+
end
|
137
|
+
|
138
|
+
class PermissionDeniedError < VernSDK::Errors::APIStatusError
|
139
|
+
HTTP_STATUS = 403
|
140
|
+
end
|
141
|
+
|
142
|
+
class NotFoundError < VernSDK::Errors::APIStatusError
|
143
|
+
HTTP_STATUS = 404
|
144
|
+
end
|
145
|
+
|
146
|
+
class ConflictError < VernSDK::Errors::APIStatusError
|
147
|
+
HTTP_STATUS = 409
|
148
|
+
end
|
149
|
+
|
150
|
+
class UnprocessableEntityError < VernSDK::Errors::APIStatusError
|
151
|
+
HTTP_STATUS = 422
|
152
|
+
end
|
153
|
+
|
154
|
+
class RateLimitError < VernSDK::Errors::APIStatusError
|
155
|
+
HTTP_STATUS = 429
|
156
|
+
end
|
157
|
+
|
158
|
+
class InternalServerError < VernSDK::Errors::APIStatusError
|
159
|
+
HTTP_STATUS = T.let((500..), T::Range[Integer])
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|