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.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +229 -0
  3. data/SECURITY.md +23 -0
  4. data/lib/brand_dev/client.rb +74 -0
  5. data/lib/brand_dev/errors.rb +192 -0
  6. data/lib/brand_dev/file_part.rb +55 -0
  7. data/lib/brand_dev/internal/transport/base_client.rb +555 -0
  8. data/lib/brand_dev/internal/transport/pooled_net_requester.rb +209 -0
  9. data/lib/brand_dev/internal/type/array_of.rb +162 -0
  10. data/lib/brand_dev/internal/type/base_model.rb +484 -0
  11. data/lib/brand_dev/internal/type/base_page.rb +55 -0
  12. data/lib/brand_dev/internal/type/boolean.rb +71 -0
  13. data/lib/brand_dev/internal/type/converter.rb +292 -0
  14. data/lib/brand_dev/internal/type/enum.rb +120 -0
  15. data/lib/brand_dev/internal/type/file_input.rb +103 -0
  16. data/lib/brand_dev/internal/type/hash_of.rb +182 -0
  17. data/lib/brand_dev/internal/type/request_parameters.rb +42 -0
  18. data/lib/brand_dev/internal/type/union.rb +227 -0
  19. data/lib/brand_dev/internal/type/unknown.rb +75 -0
  20. data/lib/brand_dev/internal/util.rb +915 -0
  21. data/lib/brand_dev/internal.rb +20 -0
  22. data/lib/brand_dev/models/brand_identify_from_transaction_params.rb +22 -0
  23. data/lib/brand_dev/models/brand_identify_from_transaction_response.rb +435 -0
  24. data/lib/brand_dev/models/brand_retrieve_by_ticker_params.rb +22 -0
  25. data/lib/brand_dev/models/brand_retrieve_by_ticker_response.rb +432 -0
  26. data/lib/brand_dev/models/brand_retrieve_naics_params.rb +27 -0
  27. data/lib/brand_dev/models/brand_retrieve_naics_response.rb +61 -0
  28. data/lib/brand_dev/models/brand_retrieve_params.rb +91 -0
  29. data/lib/brand_dev/models/brand_retrieve_response.rb +432 -0
  30. data/lib/brand_dev/models/brand_search_params.rb +22 -0
  31. data/lib/brand_dev/models/brand_search_response.rb +35 -0
  32. data/lib/brand_dev/models.rb +51 -0
  33. data/lib/brand_dev/request_options.rb +77 -0
  34. data/lib/brand_dev/resources/brand.rb +130 -0
  35. data/lib/brand_dev/version.rb +5 -0
  36. data/lib/brand_dev.rb +64 -0
  37. data/manifest.yaml +15 -0
  38. data/rbi/brand_dev/client.rbi +49 -0
  39. data/rbi/brand_dev/errors.rbi +162 -0
  40. data/rbi/brand_dev/file_part.rbi +37 -0
  41. data/rbi/brand_dev/internal/transport/base_client.rbi +293 -0
  42. data/rbi/brand_dev/internal/transport/pooled_net_requester.rbi +79 -0
  43. data/rbi/brand_dev/internal/type/array_of.rbi +104 -0
  44. data/rbi/brand_dev/internal/type/base_model.rbi +302 -0
  45. data/rbi/brand_dev/internal/type/base_page.rbi +42 -0
  46. data/rbi/brand_dev/internal/type/boolean.rbi +56 -0
  47. data/rbi/brand_dev/internal/type/converter.rbi +162 -0
  48. data/rbi/brand_dev/internal/type/enum.rbi +82 -0
  49. data/rbi/brand_dev/internal/type/file_input.rbi +59 -0
  50. data/rbi/brand_dev/internal/type/hash_of.rbi +104 -0
  51. data/rbi/brand_dev/internal/type/request_parameters.rbi +29 -0
  52. data/rbi/brand_dev/internal/type/union.rbi +116 -0
  53. data/rbi/brand_dev/internal/type/unknown.rbi +56 -0
  54. data/rbi/brand_dev/internal/util.rbi +485 -0
  55. data/rbi/brand_dev/internal.rbi +16 -0
  56. data/rbi/brand_dev/models/brand_identify_from_transaction_params.rbi +46 -0
  57. data/rbi/brand_dev/models/brand_identify_from_transaction_response.rbi +981 -0
  58. data/rbi/brand_dev/models/brand_retrieve_by_ticker_params.rbi +43 -0
  59. data/rbi/brand_dev/models/brand_retrieve_by_ticker_response.rbi +976 -0
  60. data/rbi/brand_dev/models/brand_retrieve_naics_params.rbi +44 -0
  61. data/rbi/brand_dev/models/brand_retrieve_naics_response.rbi +127 -0
  62. data/rbi/brand_dev/models/brand_retrieve_params.rbi +344 -0
  63. data/rbi/brand_dev/models/brand_retrieve_response.rbi +949 -0
  64. data/rbi/brand_dev/models/brand_search_params.rbi +40 -0
  65. data/rbi/brand_dev/models/brand_search_response.rbi +63 -0
  66. data/rbi/brand_dev/models.rbi +14 -0
  67. data/rbi/brand_dev/request_options.rbi +59 -0
  68. data/rbi/brand_dev/resources/brand.rbi +89 -0
  69. data/rbi/brand_dev/version.rbi +5 -0
  70. data/sig/brand_dev/client.rbs +26 -0
  71. data/sig/brand_dev/errors.rbs +101 -0
  72. data/sig/brand_dev/file_part.rbs +21 -0
  73. data/sig/brand_dev/internal/transport/base_client.rbs +131 -0
  74. data/sig/brand_dev/internal/transport/pooled_net_requester.rbs +45 -0
  75. data/sig/brand_dev/internal/type/array_of.rbs +48 -0
  76. data/sig/brand_dev/internal/type/base_model.rbs +102 -0
  77. data/sig/brand_dev/internal/type/base_page.rbs +24 -0
  78. data/sig/brand_dev/internal/type/boolean.rbs +26 -0
  79. data/sig/brand_dev/internal/type/converter.rbs +56 -0
  80. data/sig/brand_dev/internal/type/enum.rbs +32 -0
  81. data/sig/brand_dev/internal/type/file_input.rbs +25 -0
  82. data/sig/brand_dev/internal/type/hash_of.rbs +48 -0
  83. data/sig/brand_dev/internal/type/request_parameters.rbs +17 -0
  84. data/sig/brand_dev/internal/type/union.rbs +52 -0
  85. data/sig/brand_dev/internal/type/unknown.rbs +26 -0
  86. data/sig/brand_dev/internal/util.rbs +185 -0
  87. data/sig/brand_dev/internal.rbs +9 -0
  88. data/sig/brand_dev/models/brand_identify_from_transaction_params.rbs +24 -0
  89. data/sig/brand_dev/models/brand_identify_from_transaction_response.rbs +418 -0
  90. data/sig/brand_dev/models/brand_retrieve_by_ticker_params.rbs +23 -0
  91. data/sig/brand_dev/models/brand_retrieve_by_ticker_response.rbs +418 -0
  92. data/sig/brand_dev/models/brand_retrieve_naics_params.rbs +23 -0
  93. data/sig/brand_dev/models/brand_retrieve_naics_response.rbs +61 -0
  94. data/sig/brand_dev/models/brand_retrieve_params.rbs +148 -0
  95. data/sig/brand_dev/models/brand_retrieve_response.rbs +418 -0
  96. data/sig/brand_dev/models/brand_search_params.rbs +23 -0
  97. data/sig/brand_dev/models/brand_search_response.rbs +29 -0
  98. data/sig/brand_dev/models.rbs +11 -0
  99. data/sig/brand_dev/request_options.rbs +34 -0
  100. data/sig/brand_dev/resources/brand.rbs +33 -0
  101. data/sig/brand_dev/version.rbs +3 -0
  102. 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