simple_sdk_builder 1.0.2 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20f6b7c9b5bbde80d7ac611537e5ae9aa7053644
4
- data.tar.gz: 9b449d52f9c692409c1e96bc4770fc81f00c6a2f
3
+ metadata.gz: a9a594a981def92fb1b13a39bcbc20a5d8819a45
4
+ data.tar.gz: 2ee034552cfcc32325686115608355a35fd51a8d
5
5
  SHA512:
6
- metadata.gz: 88373f3abea40e9c3b3023272dee1b52ad94dcb2338cc4e77e255d2da615edf25d6584bfafd2cda688550ee7f16fb3e88d1d80c90850bd7f0c4073ecea2c2a6b
7
- data.tar.gz: 29aa3e0a09b702763f8d52b0717a3ca01f8c278dee2d5fa904425b0a059e468f8836b74189153850eec7e1f90e534eda8c296cd406c342b749454d26a22e89b6
6
+ metadata.gz: 54ce9c01786fa81d6faf31c869be975403672ee36fd3133cbbbfedba57ba2d219f537cc05f8869af1c942bee894fa334184cdf52e9eb21f3907f0b1b61a38905
7
+ data.tar.gz: 6bcf53df2d71e084bf5e6f827662848fae42c164b6c09c154da1fd1b2d2fa01c7d02e0ea6aaa4fe70a09b8c2d82216cdfc0372f38f5aa436a8dbf8db239a4830
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,8 @@
1
1
  = Simple SDK Builder
2
2
 
3
+ == Version 1.1.0
4
+ * Added polymorphic nested attributes. Requires "#{field_name}_type" to be set with name of class that attribute should be constructed with
5
+
3
6
  == Version 1.0.2
4
7
  * Fixed error handling - allowing custom error handlers for connection/timeout errors and wildcard (*) errors to access the response instead of just an error string.
5
8
 
@@ -48,8 +48,9 @@ module Resource
48
48
 
49
49
  def build_attribute(attr, value, options)
50
50
  options = {
51
- :class_name => nil,
52
- :nested => false
51
+ class_name: nil,
52
+ nested: false,
53
+ polymorphic: false
53
54
  }.merge(options)
54
55
 
55
56
  if options[:nested] && value.is_a?(Array)
@@ -61,7 +62,7 @@ module Resource
61
62
  end
62
63
  build_attribute(attr, arr, options)
63
64
  elsif options[:nested] && value.is_a?(Hash)
64
- class_name = options[:class_name] || guess_class_name(attr)
65
+ class_name = options[:class_name] || guess_class_name(attr, value, options[:polymorphic])
65
66
  nested_class = eval(class_name)
66
67
  nested_class.new(value)
67
68
  else
@@ -69,15 +70,20 @@ module Resource
69
70
  end
70
71
  end
71
72
 
72
- def guess_class_name(attr)
73
+ def guess_class_name(attr, value, polymorphic = false)
73
74
  namespace = ''
74
75
  class_name = self.class.name
75
76
  if class_name.rindex(':')
76
77
  namespace = class_name[0..class_name.rindex(':')]
77
78
  end
78
79
  attr.chomp!("_attributes")
79
- result = "#{namespace}#{attr.camelize.singularize}"
80
- result
80
+
81
+ if polymorphic
82
+ class_name = value.with_indifferent_access[:type]
83
+ "#{namespace}#{class_name}"
84
+ else
85
+ "#{namespace}#{attr.camelize.singularize}"
86
+ end
81
87
  end
82
88
 
83
89
  module ClassMethods
@@ -1,3 +1,3 @@
1
1
  module SimpleSDKBuilder
2
- VERSION = '1.0.2'
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_sdk_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Dawson
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  requirements: []
123
123
  rubyforge_project:
124
- rubygems_version: 2.4.5
124
+ rubygems_version: 2.2.2
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: Makes building SDKs for RESTful JSON services easy.