Method: Clever::ApiClient#convert_to_type
- Defined in:
- lib/clever-ruby/api_client.rb
#convert_to_type(data, return_type) ⇒ Mixed
Convert data to the given return type.
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
# File 'lib/clever-ruby/api_client.rb', line 181 def convert_to_type(data, return_type) return nil if data.nil? case return_type when 'String' data.to_s when 'Integer' data.to_i when 'Float' data.to_f when 'BOOLEAN' data == true when 'DateTime' # parse date time (expecting ISO 8601 format) DateTime.parse data when 'Date' # parse date time (expecting ISO 8601 format) Date.parse data when 'Object' # generic object (usually a Hash), return directly data when /\AArray<(.+)>\z/ # e.g. Array<Pet> sub_type = $1 data.map {|item| convert_to_type(item, sub_type) } when /\AHash\<String, (.+)\>\z/ # e.g. Hash<String, Integer> sub_type = $1 {}.tap do |hash| data.each {|k, v| hash[k] = convert_to_type(v, sub_type) } end when 'EventsResponse' Clever.const_get(return_type).new.tap do |model| resp = model.build_from_hash data resps = [] data[:data].each do |eventResponse| singleResp = parse_event_response(eventResponse[:data]) resps.push(singleResp) end resp.data = resps return resp end when 'EventResponse' parse_event_response data[:data] else # models, e.g. Pet Clever.const_get(return_type).new.tap do |model| model.build_from_hash data end end end |