brand.dev 0.0.1.pre.alpha.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/README.md +229 -0
- data/SECURITY.md +23 -0
- data/lib/brand_dev/client.rb +74 -0
- data/lib/brand_dev/errors.rb +192 -0
- data/lib/brand_dev/file_part.rb +55 -0
- data/lib/brand_dev/internal/transport/base_client.rb +555 -0
- data/lib/brand_dev/internal/transport/pooled_net_requester.rb +209 -0
- data/lib/brand_dev/internal/type/array_of.rb +162 -0
- data/lib/brand_dev/internal/type/base_model.rb +484 -0
- data/lib/brand_dev/internal/type/base_page.rb +55 -0
- data/lib/brand_dev/internal/type/boolean.rb +71 -0
- data/lib/brand_dev/internal/type/converter.rb +292 -0
- data/lib/brand_dev/internal/type/enum.rb +120 -0
- data/lib/brand_dev/internal/type/file_input.rb +103 -0
- data/lib/brand_dev/internal/type/hash_of.rb +182 -0
- data/lib/brand_dev/internal/type/request_parameters.rb +42 -0
- data/lib/brand_dev/internal/type/union.rb +227 -0
- data/lib/brand_dev/internal/type/unknown.rb +75 -0
- data/lib/brand_dev/internal/util.rb +915 -0
- data/lib/brand_dev/internal.rb +20 -0
- data/lib/brand_dev/models/brand_identify_from_transaction_params.rb +22 -0
- data/lib/brand_dev/models/brand_identify_from_transaction_response.rb +435 -0
- data/lib/brand_dev/models/brand_retrieve_by_ticker_params.rb +22 -0
- data/lib/brand_dev/models/brand_retrieve_by_ticker_response.rb +432 -0
- data/lib/brand_dev/models/brand_retrieve_naics_params.rb +27 -0
- data/lib/brand_dev/models/brand_retrieve_naics_response.rb +61 -0
- data/lib/brand_dev/models/brand_retrieve_params.rb +91 -0
- data/lib/brand_dev/models/brand_retrieve_response.rb +432 -0
- data/lib/brand_dev/models/brand_search_params.rb +22 -0
- data/lib/brand_dev/models/brand_search_response.rb +35 -0
- data/lib/brand_dev/models.rb +51 -0
- data/lib/brand_dev/request_options.rb +77 -0
- data/lib/brand_dev/resources/brand.rb +130 -0
- data/lib/brand_dev/version.rb +5 -0
- data/lib/brand_dev.rb +64 -0
- data/manifest.yaml +15 -0
- data/rbi/brand_dev/client.rbi +49 -0
- data/rbi/brand_dev/errors.rbi +162 -0
- data/rbi/brand_dev/file_part.rbi +37 -0
- data/rbi/brand_dev/internal/transport/base_client.rbi +293 -0
- data/rbi/brand_dev/internal/transport/pooled_net_requester.rbi +79 -0
- data/rbi/brand_dev/internal/type/array_of.rbi +104 -0
- data/rbi/brand_dev/internal/type/base_model.rbi +302 -0
- data/rbi/brand_dev/internal/type/base_page.rbi +42 -0
- data/rbi/brand_dev/internal/type/boolean.rbi +56 -0
- data/rbi/brand_dev/internal/type/converter.rbi +162 -0
- data/rbi/brand_dev/internal/type/enum.rbi +82 -0
- data/rbi/brand_dev/internal/type/file_input.rbi +59 -0
- data/rbi/brand_dev/internal/type/hash_of.rbi +104 -0
- data/rbi/brand_dev/internal/type/request_parameters.rbi +29 -0
- data/rbi/brand_dev/internal/type/union.rbi +116 -0
- data/rbi/brand_dev/internal/type/unknown.rbi +56 -0
- data/rbi/brand_dev/internal/util.rbi +485 -0
- data/rbi/brand_dev/internal.rbi +16 -0
- data/rbi/brand_dev/models/brand_identify_from_transaction_params.rbi +46 -0
- data/rbi/brand_dev/models/brand_identify_from_transaction_response.rbi +981 -0
- data/rbi/brand_dev/models/brand_retrieve_by_ticker_params.rbi +43 -0
- data/rbi/brand_dev/models/brand_retrieve_by_ticker_response.rbi +976 -0
- data/rbi/brand_dev/models/brand_retrieve_naics_params.rbi +44 -0
- data/rbi/brand_dev/models/brand_retrieve_naics_response.rbi +127 -0
- data/rbi/brand_dev/models/brand_retrieve_params.rbi +344 -0
- data/rbi/brand_dev/models/brand_retrieve_response.rbi +949 -0
- data/rbi/brand_dev/models/brand_search_params.rbi +40 -0
- data/rbi/brand_dev/models/brand_search_response.rbi +63 -0
- data/rbi/brand_dev/models.rbi +14 -0
- data/rbi/brand_dev/request_options.rbi +59 -0
- data/rbi/brand_dev/resources/brand.rbi +89 -0
- data/rbi/brand_dev/version.rbi +5 -0
- data/sig/brand_dev/client.rbs +26 -0
- data/sig/brand_dev/errors.rbs +101 -0
- data/sig/brand_dev/file_part.rbs +21 -0
- data/sig/brand_dev/internal/transport/base_client.rbs +131 -0
- data/sig/brand_dev/internal/transport/pooled_net_requester.rbs +45 -0
- data/sig/brand_dev/internal/type/array_of.rbs +48 -0
- data/sig/brand_dev/internal/type/base_model.rbs +102 -0
- data/sig/brand_dev/internal/type/base_page.rbs +24 -0
- data/sig/brand_dev/internal/type/boolean.rbs +26 -0
- data/sig/brand_dev/internal/type/converter.rbs +56 -0
- data/sig/brand_dev/internal/type/enum.rbs +32 -0
- data/sig/brand_dev/internal/type/file_input.rbs +25 -0
- data/sig/brand_dev/internal/type/hash_of.rbs +48 -0
- data/sig/brand_dev/internal/type/request_parameters.rbs +17 -0
- data/sig/brand_dev/internal/type/union.rbs +52 -0
- data/sig/brand_dev/internal/type/unknown.rbs +26 -0
- data/sig/brand_dev/internal/util.rbs +185 -0
- data/sig/brand_dev/internal.rbs +9 -0
- data/sig/brand_dev/models/brand_identify_from_transaction_params.rbs +24 -0
- data/sig/brand_dev/models/brand_identify_from_transaction_response.rbs +418 -0
- data/sig/brand_dev/models/brand_retrieve_by_ticker_params.rbs +23 -0
- data/sig/brand_dev/models/brand_retrieve_by_ticker_response.rbs +418 -0
- data/sig/brand_dev/models/brand_retrieve_naics_params.rbs +23 -0
- data/sig/brand_dev/models/brand_retrieve_naics_response.rbs +61 -0
- data/sig/brand_dev/models/brand_retrieve_params.rbs +148 -0
- data/sig/brand_dev/models/brand_retrieve_response.rbs +418 -0
- data/sig/brand_dev/models/brand_search_params.rbs +23 -0
- data/sig/brand_dev/models/brand_search_response.rbs +29 -0
- data/sig/brand_dev/models.rbs +11 -0
- data/sig/brand_dev/request_options.rbs +34 -0
- data/sig/brand_dev/resources/brand.rbs +33 -0
- data/sig/brand_dev/version.rbs +3 -0
- metadata +160 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BrandDev
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
module RequestParameters
|
8
|
+
# @!attribute request_options
|
9
|
+
# Options to specify HTTP behaviour for this request.
|
10
|
+
#
|
11
|
+
# @return [BrandDev::RequestOptions, Hash{Symbol=>Object}]
|
12
|
+
|
13
|
+
# @param mod [Module]
|
14
|
+
def self.included(mod)
|
15
|
+
raise ArgumentError.new(mod) unless mod <= BrandDev::Internal::Type::BaseModel
|
16
|
+
|
17
|
+
mod.optional(:request_options, BrandDev::RequestOptions)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @api private
|
21
|
+
module Converter
|
22
|
+
# @api private
|
23
|
+
#
|
24
|
+
# @param params [Object]
|
25
|
+
#
|
26
|
+
# @return [Array(Object, Hash{Symbol=>Object})]
|
27
|
+
def dump_request(params)
|
28
|
+
state = {can_retry: true}
|
29
|
+
case (dumped = dump(params, state: state))
|
30
|
+
in Hash
|
31
|
+
options = BrandDev::Internal::Util.coerce_hash!(dumped[:request_options]).to_h
|
32
|
+
request_options = state.fetch(:can_retry) ? options : {**options, max_retries: 0}
|
33
|
+
[dumped.except(:request_options), request_options]
|
34
|
+
else
|
35
|
+
[dumped, nil]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,227 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BrandDev
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
module Union
|
8
|
+
include BrandDev::Internal::Type::Converter
|
9
|
+
include BrandDev::Internal::Util::SorbetRuntimeSupport
|
10
|
+
|
11
|
+
# @api private
|
12
|
+
#
|
13
|
+
# All of the specified variant info for this union.
|
14
|
+
#
|
15
|
+
# @return [Array<Array(Symbol, Proc)>]
|
16
|
+
private def known_variants = (@known_variants ||= [])
|
17
|
+
|
18
|
+
# @api private
|
19
|
+
#
|
20
|
+
# @return [Array<Array(Symbol, Object)>]
|
21
|
+
protected def derefed_variants
|
22
|
+
known_variants.map { |key, variant_fn| [key, variant_fn.call] }
|
23
|
+
end
|
24
|
+
|
25
|
+
# All of the specified variants for this union.
|
26
|
+
#
|
27
|
+
# @return [Array<Object>]
|
28
|
+
def variants = derefed_variants.map(&:last)
|
29
|
+
|
30
|
+
# @api private
|
31
|
+
#
|
32
|
+
# @param property [Symbol]
|
33
|
+
private def discriminator(property)
|
34
|
+
case property
|
35
|
+
in Symbol
|
36
|
+
@discriminator = property
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# @api private
|
41
|
+
#
|
42
|
+
# @param key [Symbol, Hash{Symbol=>Object}, Proc, BrandDev::Internal::Type::Converter, Class]
|
43
|
+
#
|
44
|
+
# @param spec [Hash{Symbol=>Object}, Proc, BrandDev::Internal::Type::Converter, Class] .
|
45
|
+
#
|
46
|
+
# @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
|
47
|
+
#
|
48
|
+
# @option spec [Proc] :enum
|
49
|
+
#
|
50
|
+
# @option spec [Proc] :union
|
51
|
+
#
|
52
|
+
# @option spec [Boolean] :"nil?"
|
53
|
+
private def variant(key, spec = nil)
|
54
|
+
variant_info =
|
55
|
+
case key
|
56
|
+
in Symbol
|
57
|
+
[key, BrandDev::Internal::Type::Converter.type_info(spec)]
|
58
|
+
in Proc | BrandDev::Internal::Type::Converter | Class | Hash
|
59
|
+
[nil, BrandDev::Internal::Type::Converter.type_info(key)]
|
60
|
+
end
|
61
|
+
|
62
|
+
known_variants << variant_info
|
63
|
+
end
|
64
|
+
|
65
|
+
# @api private
|
66
|
+
#
|
67
|
+
# @param value [Object]
|
68
|
+
#
|
69
|
+
# @return [BrandDev::Internal::Type::Converter, Class, nil]
|
70
|
+
private def resolve_variant(value)
|
71
|
+
case [@discriminator, value]
|
72
|
+
in [_, BrandDev::Internal::Type::BaseModel]
|
73
|
+
value.class
|
74
|
+
in [Symbol, Hash]
|
75
|
+
key = value.fetch(@discriminator) do
|
76
|
+
value.fetch(@discriminator.to_s, BrandDev::Internal::OMIT)
|
77
|
+
end
|
78
|
+
|
79
|
+
return nil if key == BrandDev::Internal::OMIT
|
80
|
+
|
81
|
+
key = key.to_sym if key.is_a?(String)
|
82
|
+
known_variants.find { |k,| k == key }&.last&.call
|
83
|
+
else
|
84
|
+
nil
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# rubocop:disable Style/HashEachMethods
|
89
|
+
# rubocop:disable Style/CaseEquality
|
90
|
+
|
91
|
+
# @api public
|
92
|
+
#
|
93
|
+
# @param other [Object]
|
94
|
+
#
|
95
|
+
# @return [Boolean]
|
96
|
+
def ===(other)
|
97
|
+
known_variants.any? do |_, variant_fn|
|
98
|
+
variant_fn.call === other
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# @api public
|
103
|
+
#
|
104
|
+
# @param other [Object]
|
105
|
+
#
|
106
|
+
# @return [Boolean]
|
107
|
+
def ==(other)
|
108
|
+
BrandDev::Internal::Type::Union === other && other.derefed_variants == derefed_variants
|
109
|
+
end
|
110
|
+
|
111
|
+
# @api public
|
112
|
+
#
|
113
|
+
# @return [Integer]
|
114
|
+
def hash = variants.hash
|
115
|
+
|
116
|
+
# @api private
|
117
|
+
#
|
118
|
+
# @param value [Object]
|
119
|
+
#
|
120
|
+
# @param state [Hash{Symbol=>Object}] .
|
121
|
+
#
|
122
|
+
# @option state [Boolean, :strong] :strictness
|
123
|
+
#
|
124
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
125
|
+
#
|
126
|
+
# @option state [Integer] :branched
|
127
|
+
#
|
128
|
+
# @return [Object]
|
129
|
+
def coerce(value, state:)
|
130
|
+
if (target = resolve_variant(value))
|
131
|
+
return BrandDev::Internal::Type::Converter.coerce(target, value, state: state)
|
132
|
+
end
|
133
|
+
|
134
|
+
strictness = state.fetch(:strictness)
|
135
|
+
exactness = state.fetch(:exactness)
|
136
|
+
state[:strictness] = strictness == :strong ? true : strictness
|
137
|
+
|
138
|
+
alternatives = []
|
139
|
+
known_variants.each do |_, variant_fn|
|
140
|
+
target = variant_fn.call
|
141
|
+
exact = state[:exactness] = {yes: 0, no: 0, maybe: 0}
|
142
|
+
state[:branched] += 1
|
143
|
+
|
144
|
+
coerced = BrandDev::Internal::Type::Converter.coerce(target, value, state: state)
|
145
|
+
yes, no, maybe = exact.values
|
146
|
+
if (no + maybe).zero? || (!strictness && yes.positive?)
|
147
|
+
exact.each { exactness[_1] += _2 }
|
148
|
+
state[:exactness] = exactness
|
149
|
+
return coerced
|
150
|
+
elsif maybe.positive?
|
151
|
+
alternatives << [[-yes, -maybe, no], exact, coerced]
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
case alternatives.sort_by(&:first)
|
156
|
+
in []
|
157
|
+
exactness[:no] += 1
|
158
|
+
if strictness == :strong
|
159
|
+
message = "no possible conversion of #{value.class} into a variant of #{target.inspect}"
|
160
|
+
raise ArgumentError.new(message)
|
161
|
+
end
|
162
|
+
value
|
163
|
+
in [[_, exact, coerced], *]
|
164
|
+
exact.each { exactness[_1] += _2 }
|
165
|
+
coerced
|
166
|
+
end
|
167
|
+
.tap { state[:exactness] = exactness }
|
168
|
+
ensure
|
169
|
+
state[:strictness] = strictness
|
170
|
+
end
|
171
|
+
|
172
|
+
# @api private
|
173
|
+
#
|
174
|
+
# @param value [Object]
|
175
|
+
#
|
176
|
+
# @param state [Hash{Symbol=>Object}] .
|
177
|
+
#
|
178
|
+
# @option state [Boolean] :can_retry
|
179
|
+
#
|
180
|
+
# @return [Object]
|
181
|
+
def dump(value, state:)
|
182
|
+
if (target = resolve_variant(value))
|
183
|
+
return BrandDev::Internal::Type::Converter.dump(target, value, state: state)
|
184
|
+
end
|
185
|
+
|
186
|
+
known_variants.each do
|
187
|
+
target = _2.call
|
188
|
+
return BrandDev::Internal::Type::Converter.dump(target, value, state: state) if target === value
|
189
|
+
end
|
190
|
+
|
191
|
+
super
|
192
|
+
end
|
193
|
+
|
194
|
+
# @api private
|
195
|
+
#
|
196
|
+
# @return [Object]
|
197
|
+
def to_sorbet_type
|
198
|
+
case (v = variants)
|
199
|
+
in []
|
200
|
+
T.noreturn
|
201
|
+
else
|
202
|
+
T.any(*v.map { BrandDev::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) })
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
# rubocop:enable Style/CaseEquality
|
207
|
+
# rubocop:enable Style/HashEachMethods
|
208
|
+
|
209
|
+
# @api private
|
210
|
+
#
|
211
|
+
# @param depth [Integer]
|
212
|
+
#
|
213
|
+
# @return [String]
|
214
|
+
def inspect(depth: 0)
|
215
|
+
if depth.positive?
|
216
|
+
return is_a?(Module) ? super() : self.class.name
|
217
|
+
end
|
218
|
+
|
219
|
+
members = variants.map { BrandDev::Internal::Type::Converter.inspect(_1, depth: depth.succ) }
|
220
|
+
prefix = is_a?(Module) ? name : self.class.name
|
221
|
+
|
222
|
+
"#{prefix}[#{members.join(' | ')}]"
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BrandDev
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
#
|
8
|
+
# @abstract
|
9
|
+
#
|
10
|
+
# When we don't know what to expect for the value.
|
11
|
+
class Unknown
|
12
|
+
extend BrandDev::Internal::Type::Converter
|
13
|
+
extend BrandDev::Internal::Util::SorbetRuntimeSupport
|
14
|
+
|
15
|
+
# rubocop:disable Lint/UnusedMethodArgument
|
16
|
+
|
17
|
+
private_class_method :new
|
18
|
+
|
19
|
+
# @api public
|
20
|
+
#
|
21
|
+
# @param other [Object]
|
22
|
+
#
|
23
|
+
# @return [Boolean]
|
24
|
+
def self.===(other) = true
|
25
|
+
|
26
|
+
# @api public
|
27
|
+
#
|
28
|
+
# @param other [Object]
|
29
|
+
#
|
30
|
+
# @return [Boolean]
|
31
|
+
def self.==(other) = other.is_a?(Class) && other <= BrandDev::Internal::Type::Unknown
|
32
|
+
|
33
|
+
class << self
|
34
|
+
# @api private
|
35
|
+
#
|
36
|
+
# @param value [Object]
|
37
|
+
#
|
38
|
+
# @param state [Hash{Symbol=>Object}] .
|
39
|
+
#
|
40
|
+
# @option state [Boolean, :strong] :strictness
|
41
|
+
#
|
42
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
43
|
+
#
|
44
|
+
# @option state [Integer] :branched
|
45
|
+
#
|
46
|
+
# @return [Object]
|
47
|
+
def coerce(value, state:)
|
48
|
+
state.fetch(:exactness)[:yes] += 1
|
49
|
+
value
|
50
|
+
end
|
51
|
+
|
52
|
+
# @!method dump(value, state:)
|
53
|
+
# @api private
|
54
|
+
#
|
55
|
+
# @param value [Object]
|
56
|
+
#
|
57
|
+
# @param state [Hash{Symbol=>Object}] .
|
58
|
+
#
|
59
|
+
# @option state [Boolean] :can_retry
|
60
|
+
#
|
61
|
+
# @return [Object]
|
62
|
+
|
63
|
+
# @api private
|
64
|
+
#
|
65
|
+
# @return [Object]
|
66
|
+
def to_sorbet_type
|
67
|
+
T.anything
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# rubocop:enable Lint/UnusedMethodArgument
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|