typecast-ruby 0.1.0 → 0.1.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 +4 -4
- data/lib/typecast/client.rb +24 -6
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1694bfd6415ffc2b46d014e34add996248c255c68ce5927c76e213bcf3fa86da
|
|
4
|
+
data.tar.gz: afeef1970ae7e132bcd1438b942a25c834b5fe397f789e460c9dbf117bc6ab3f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f45bc9e47497cb6b7cd8d01a9d3ceaf767568b515e1ab6254ebf0d135d7c82cb4a743bb523dcf1bb227faa87963a0ab8a732ea36024e4deec70c53c307ae2c6f
|
|
7
|
+
data.tar.gz: '0388fe2ac016617905bd89af4dfff027210705866a47012d0c544a822d3dd5dca43fb6dd6fe70cb45c05a90130a4f4f440b453e647423c162c8ec2a08eb8247f'
|
data/lib/typecast/client.rb
CHANGED
|
@@ -14,8 +14,9 @@ module Typecast
|
|
|
14
14
|
attr_reader :api_key, :base_url
|
|
15
15
|
|
|
16
16
|
def initialize(api_key: ENV["TYPECAST_API_KEY"], base_url: ENV["TYPECAST_API_HOST"] || DEFAULT_BASE_URL, open_timeout: 10, read_timeout: 30)
|
|
17
|
-
@api_key = api_key.to_s
|
|
17
|
+
@api_key = api_key.to_s.strip
|
|
18
18
|
@base_url = normalize_base_url(base_url)
|
|
19
|
+
validate_api_key!
|
|
19
20
|
@open_timeout = open_timeout
|
|
20
21
|
@read_timeout = read_timeout
|
|
21
22
|
end
|
|
@@ -81,11 +82,11 @@ module Typecast
|
|
|
81
82
|
private
|
|
82
83
|
|
|
83
84
|
def request_json(method, path, body = nil, query = nil)
|
|
84
|
-
headers =
|
|
85
|
+
headers = auth_headers.merge("Content-Type" => "application/json")
|
|
85
86
|
request_raw(method, path, body.nil? ? nil : JSON.generate(body), headers, query)
|
|
86
87
|
end
|
|
87
88
|
|
|
88
|
-
def request_raw(method, path, body = nil, headers =
|
|
89
|
+
def request_raw(method, path, body = nil, headers = auth_headers, query = nil)
|
|
89
90
|
uri = build_uri(path, query)
|
|
90
91
|
request = request_for(method, uri)
|
|
91
92
|
headers.each { |key, value| request[key] = value }
|
|
@@ -121,13 +122,26 @@ module Typecast
|
|
|
121
122
|
:post,
|
|
122
123
|
path,
|
|
123
124
|
body,
|
|
124
|
-
|
|
125
|
-
"X-API-KEY" => api_key,
|
|
125
|
+
auth_headers.merge(
|
|
126
126
|
"Content-Type" => "multipart/form-data; boundary=#{boundary}"
|
|
127
|
-
|
|
127
|
+
)
|
|
128
128
|
)
|
|
129
129
|
end
|
|
130
130
|
|
|
131
|
+
def auth_headers
|
|
132
|
+
api_key.empty? ? {} : { "X-API-KEY" => api_key }
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def validate_api_key!
|
|
136
|
+
return unless api_key.empty? && default_base_url?
|
|
137
|
+
|
|
138
|
+
raise ArgumentError, "api_key is required for the default Typecast API host"
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def default_base_url?
|
|
142
|
+
normalized_base_url(base_url).casecmp?(normalized_base_url(DEFAULT_BASE_URL))
|
|
143
|
+
end
|
|
144
|
+
|
|
131
145
|
def validate_clone_inputs(audio, name)
|
|
132
146
|
raise ArgumentError, "audio must be 25MB or smaller" if audio.bytesize > Models::CLONING_MAX_FILE_SIZE
|
|
133
147
|
raise ArgumentError, "name must be 1-#{Models::CLONING_NAME_MAX_LENGTH} chars" if name.empty? || name.length > Models::CLONING_NAME_MAX_LENGTH
|
|
@@ -145,6 +159,10 @@ module Typecast
|
|
|
145
159
|
raise ArgumentError, "base_url must be a valid URL"
|
|
146
160
|
end
|
|
147
161
|
|
|
162
|
+
def normalized_base_url(value)
|
|
163
|
+
value.to_s.strip.sub(%r{/+\z}, "")
|
|
164
|
+
end
|
|
165
|
+
|
|
148
166
|
def local_uri?(uri)
|
|
149
167
|
uri.scheme == "http" && ["localhost", "127.0.0.1", "::1"].include?(uri.hostname)
|
|
150
168
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: typecast-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Neosapience
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-06-
|
|
11
|
+
date: 2026-06-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|