algolia 3.3.0 → 3.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,108 +0,0 @@
1
- # Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
2
-
3
- require "date"
4
- require "time"
5
-
6
- module Algolia
7
- module Usage
8
- module StatisticValue
9
- class << self
10
- # List of class defined in oneOf (OpenAPI v3)
11
- def openapi_one_of
12
- [
13
- :"Hash<String, Integer>",
14
- :"Integer"
15
- ]
16
- end
17
-
18
- # Builds the object
19
- # @param [Mixed] Data to be matched against the list of oneOf items
20
- # @return [Object] Returns the model or the data itself
21
- def build(data)
22
- # Go through the list of oneOf items and attempt to identify the appropriate one.
23
- # Note:
24
- # - We do not attempt to check whether exactly one item matches.
25
- # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
26
- # due to the way the deserialization is made in the base_object template (it just casts without verifying).
27
- # - TODO: scalar values are de facto behaving as if they were nullable.
28
- # - TODO: logging when debugging is set.
29
- openapi_one_of.each do |klass|
30
- begin
31
- # "nullable: true"
32
- next if klass == :AnyType
33
- typed_data = find_and_cast_into_type(klass, data)
34
- return typed_data if typed_data
35
- # rescue all errors so we keep iterating even if the current item lookup raises
36
- rescue
37
- end
38
- end
39
-
40
- openapi_one_of.include?(:AnyType) ? data : nil
41
- end
42
-
43
- private
44
-
45
- SchemaMismatchError = Class.new(StandardError)
46
-
47
- # Note: 'File' is missing here because in the regular case we get the data _after_ a call to JSON.parse.
48
- def find_and_cast_into_type(klass, data)
49
- return if data.nil?
50
-
51
- case klass.to_s
52
- when "Boolean"
53
- return data if data.instance_of?(TrueClass) || data.instance_of?(FalseClass)
54
- when "Float"
55
- return data if data.instance_of?(Float)
56
- when "Integer"
57
- return data if data.instance_of?(Integer)
58
- when "Time"
59
- return Time.parse(data)
60
- when "Date"
61
- return Date.parse(data)
62
- when "String"
63
- return data if data.instance_of?(String)
64
- # "type: object"
65
- when "Object"
66
- return data if data.instance_of?(Hash)
67
- # "type: array"
68
- when /\AArray<(?<sub_type>.+)>\z/
69
- if data.instance_of?(Array)
70
- sub_type = Regexp.last_match[:sub_type]
71
- return data.map { |item| find_and_cast_into_type(sub_type, item) }
72
- end
73
- # "type: object" with "additionalProperties: { ... }"
74
- when /\AHash<String, (?<sub_type>.+)>\z/
75
- if data.instance_of?(Hash) && data.keys.all? { |k| k.instance_of?(Symbol) || k.instance_of?(String) }
76
- sub_type = Regexp.last_match[:sub_type]
77
- return data.each_with_object({}) { |(k, v), hsh| hsh[k] = find_and_cast_into_type(sub_type, v) }
78
- end
79
- # model
80
- else
81
- const = Algolia::Usage.const_get(klass)
82
- if const
83
- if const.respond_to?(:openapi_one_of)
84
- # nested oneOf model
85
- model = const.build(data)
86
- elsif const.respond_to?(:acceptable_attributes)
87
- # raise if data contains keys that are not known to the model
88
- raise unless (data.keys - const.acceptable_attributes).empty?
89
- model = const.build_from_hash(data)
90
- else
91
- # maybe it's an enum
92
- model = const.build_from_hash(data)
93
- end
94
-
95
- return model if model
96
- end
97
- end
98
-
99
- # if no match by now, raise
100
- raise
101
- rescue
102
- raise SchemaMismatchError, "#{data} doesn't match the #{klass} type"
103
- end
104
- end
105
- end
106
-
107
- end
108
- end