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.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +205 -0
  5. data/SECURITY.md +23 -0
  6. data/lib/vern_sdk/client.rb +72 -0
  7. data/lib/vern_sdk/errors.rb +192 -0
  8. data/lib/vern_sdk/file_part.rb +55 -0
  9. data/lib/vern_sdk/internal/transport/base_client.rb +555 -0
  10. data/lib/vern_sdk/internal/transport/pooled_net_requester.rb +209 -0
  11. data/lib/vern_sdk/internal/type/array_of.rb +162 -0
  12. data/lib/vern_sdk/internal/type/base_model.rb +484 -0
  13. data/lib/vern_sdk/internal/type/base_page.rb +55 -0
  14. data/lib/vern_sdk/internal/type/boolean.rb +71 -0
  15. data/lib/vern_sdk/internal/type/converter.rb +292 -0
  16. data/lib/vern_sdk/internal/type/enum.rb +120 -0
  17. data/lib/vern_sdk/internal/type/file_input.rb +103 -0
  18. data/lib/vern_sdk/internal/type/hash_of.rb +182 -0
  19. data/lib/vern_sdk/internal/type/request_parameters.rb +42 -0
  20. data/lib/vern_sdk/internal/type/union.rb +227 -0
  21. data/lib/vern_sdk/internal/type/unknown.rb +75 -0
  22. data/lib/vern_sdk/internal/util.rb +915 -0
  23. data/lib/vern_sdk/internal.rb +20 -0
  24. data/lib/vern_sdk/models/run_create_params.rb +46 -0
  25. data/lib/vern_sdk/models/run_create_response.rb +33 -0
  26. data/lib/vern_sdk/models/run_retrieve_params.rb +14 -0
  27. data/lib/vern_sdk/models/run_retrieve_response.rb +88 -0
  28. data/lib/vern_sdk/models.rb +45 -0
  29. data/lib/vern_sdk/request_options.rb +77 -0
  30. data/lib/vern_sdk/resources/runs.rb +62 -0
  31. data/lib/vern_sdk/version.rb +5 -0
  32. data/lib/vern_sdk.rb +58 -0
  33. data/manifest.yaml +15 -0
  34. data/rbi/vern_sdk/client.rbi +49 -0
  35. data/rbi/vern_sdk/errors.rbi +162 -0
  36. data/rbi/vern_sdk/file_part.rbi +37 -0
  37. data/rbi/vern_sdk/internal/transport/base_client.rbi +293 -0
  38. data/rbi/vern_sdk/internal/transport/pooled_net_requester.rbi +79 -0
  39. data/rbi/vern_sdk/internal/type/array_of.rbi +104 -0
  40. data/rbi/vern_sdk/internal/type/base_model.rbi +302 -0
  41. data/rbi/vern_sdk/internal/type/base_page.rbi +42 -0
  42. data/rbi/vern_sdk/internal/type/boolean.rbi +56 -0
  43. data/rbi/vern_sdk/internal/type/converter.rbi +162 -0
  44. data/rbi/vern_sdk/internal/type/enum.rbi +82 -0
  45. data/rbi/vern_sdk/internal/type/file_input.rbi +59 -0
  46. data/rbi/vern_sdk/internal/type/hash_of.rbi +104 -0
  47. data/rbi/vern_sdk/internal/type/request_parameters.rbi +29 -0
  48. data/rbi/vern_sdk/internal/type/union.rbi +116 -0
  49. data/rbi/vern_sdk/internal/type/unknown.rbi +56 -0
  50. data/rbi/vern_sdk/internal/util.rbi +482 -0
  51. data/rbi/vern_sdk/internal.rbi +16 -0
  52. data/rbi/vern_sdk/models/run_create_params.rbi +76 -0
  53. data/rbi/vern_sdk/models/run_create_response.rbi +58 -0
  54. data/rbi/vern_sdk/models/run_retrieve_params.rbi +27 -0
  55. data/rbi/vern_sdk/models/run_retrieve_response.rbi +168 -0
  56. data/rbi/vern_sdk/models.rbi +7 -0
  57. data/rbi/vern_sdk/request_options.rbi +57 -0
  58. data/rbi/vern_sdk/resources/runs.rbi +49 -0
  59. data/rbi/vern_sdk/version.rbi +5 -0
  60. data/sig/vern_sdk/client.rbs +26 -0
  61. data/sig/vern_sdk/errors.rbs +101 -0
  62. data/sig/vern_sdk/file_part.rbs +21 -0
  63. data/sig/vern_sdk/internal/transport/base_client.rbs +131 -0
  64. data/sig/vern_sdk/internal/transport/pooled_net_requester.rbs +45 -0
  65. data/sig/vern_sdk/internal/type/array_of.rbs +48 -0
  66. data/sig/vern_sdk/internal/type/base_model.rbs +102 -0
  67. data/sig/vern_sdk/internal/type/base_page.rbs +24 -0
  68. data/sig/vern_sdk/internal/type/boolean.rbs +26 -0
  69. data/sig/vern_sdk/internal/type/converter.rbs +56 -0
  70. data/sig/vern_sdk/internal/type/enum.rbs +32 -0
  71. data/sig/vern_sdk/internal/type/file_input.rbs +25 -0
  72. data/sig/vern_sdk/internal/type/hash_of.rbs +48 -0
  73. data/sig/vern_sdk/internal/type/request_parameters.rbs +17 -0
  74. data/sig/vern_sdk/internal/type/union.rbs +52 -0
  75. data/sig/vern_sdk/internal/type/unknown.rbs +26 -0
  76. data/sig/vern_sdk/internal/util.rbs +185 -0
  77. data/sig/vern_sdk/internal.rbs +9 -0
  78. data/sig/vern_sdk/models/run_create_params.rbs +47 -0
  79. data/sig/vern_sdk/models/run_create_response.rbs +32 -0
  80. data/sig/vern_sdk/models/run_retrieve_params.rbs +15 -0
  81. data/sig/vern_sdk/models/run_retrieve_response.rbs +86 -0
  82. data/sig/vern_sdk/models.rbs +5 -0
  83. data/sig/vern_sdk/request_options.rbs +34 -0
  84. data/sig/vern_sdk/resources/runs.rbs +20 -0
  85. data/sig/vern_sdk/version.rbs +3 -0
  86. 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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VernSDK
4
+ VERSION = "0.0.1.pre.alpha.1"
5
+ 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,15 @@
1
+ dependencies:
2
+ - English
3
+ - cgi
4
+ - date
5
+ - erb
6
+ - etc
7
+ - json
8
+ - net/http
9
+ - pathname
10
+ - rbconfig
11
+ - securerandom
12
+ - set
13
+ - stringio
14
+ - time
15
+ - uri
@@ -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