acfs 0.22.2.b196 → 0.22.2

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjNkYThhNTU4ZGM5MWFiOWQyNDRlY2MxYmU2ZGRmMzIxYzhjZDQ1Zg==
5
- data.tar.gz: !binary |-
6
- MDFmNGVlYzg1YThiMzljMDMwZGE5MmQzZDc3ZDhlOTgxMDhmZDVlZA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MjViYjlhZmIwYjUxOTZjZTc2NTgxNmQwMDNhOTczZWVkMGFlMzgyZTEyM2Ni
10
- OTNiODg3NDA1NmE3MjNiNDViNGYzOTcxZTQ5NDc5Y2I5NTk5YWVkMTZhNGJh
11
- ODM1NGNlNGNhNDEyMTBmMTlhZjJkNzY1N2Y3YTYyMmY2YWMxMjg=
12
- data.tar.gz: !binary |-
13
- OTllM2RlYThiNjUzYzNlYTIwYTJmZDcwNDQ1MzI4MTQyMWJmNTY1ZWQ0ZjM1
14
- MDdiMWQ0YzZhMzlmMmUyZDQ4MDk2ZWRiMTBiOTQ1YTVmNTE1OTA4YzcwNmM3
15
- MTRlZjE1MDMyZmMzNGRmODdjOGU0YmVlNzY4MDIzN2Y5ZjY2Zjk=
2
+ SHA1:
3
+ metadata.gz: 3c1129b462fe2105edbb850cfd19d2f1e9702e94
4
+ data.tar.gz: 4aa5d1819e9be688eaba32d37d88c489a88e7888
5
+ SHA512:
6
+ metadata.gz: 611d2c58fec55d1c71c843a6381d9923f59c7efa03cbee128663456a8698e7cb6454cb0f0787dddfd1d8c66c8e057b19384e89426ae834524bbb581020cfffa9
7
+ data.tar.gz: 1e960def103264283e2be8e4fac3e59139713ec24aaeb15463ec472351ea116aba837ecaf1bd9442b23b3dd5fdb34129643cf97eca2946d4622aac89cca6f616
@@ -86,20 +86,5 @@ module Acfs
86
86
  end
87
87
  end
88
88
 
89
- # Gets raised if ressource type is no valid subclass of
90
- # parent resource. Check if the type is set to the correct
91
- # Acfs::Resource Name
92
- class RessourceTypeError < Error
93
- attr_reader :base_class
94
- attr_reader :type_name
95
-
96
- def initialize(opts = {})
97
- @base_class = opts.delete :base_class
98
- @type_name = opts.delete :type_name
99
- opts[:message] = "Recieved ressource type #{type_name} is no subclass of #{base_class}"
100
- super
101
- end
102
- end
103
-
104
89
  class RealRequestsNotAllowedError < StandardError; end
105
90
  end
@@ -125,11 +125,11 @@ module Acfs::Model
125
125
  # @raise [ ArgumentError ] If no attribute with given name is defined.
126
126
  #
127
127
  def write_attribute(name, value, opts = {})
128
- if (attr = self.class.defined_attributes[name.to_s]).nil?
128
+ if (type = self.class.attribute_types[name.to_sym]).nil?
129
129
  raise ArgumentError.new "Unknown attribute `#{name}`."
130
130
  end
131
131
 
132
- write_raw_attribute name, attr.cast(value), opts
132
+ write_raw_attribute name, value.nil? ? nil : type.cast(value), opts
133
133
  end
134
134
 
135
135
  # @api private
@@ -187,15 +187,7 @@ module Acfs::Model
187
187
  # @return [ Hash{ String => Object, Proc } ] Attributes with default values.
188
188
  #
189
189
  def attributes
190
- Hash.new.tap do |attrs|
191
- defined_attributes.each do |key, attr|
192
- attrs[key] = attr.default_value
193
- end
194
- end
195
- end
196
-
197
- def defined_attributes
198
- @attributes ||= {}.merge superclass.respond_to?(:defined_attributes) ? superclass.defined_attributes : {}
190
+ @attributes ||= {}.merge superclass.respond_to?(:attributes) ? superclass.attributes : {}
199
191
  end
200
192
 
201
193
  # @api public
@@ -219,9 +211,11 @@ module Acfs::Model
219
211
  private
220
212
  def define_attribute(name, type, opts = {})
221
213
  name = name.to_s
222
- attribute = type.new opts
214
+ default_value = opts.has_key?(:default) ? opts[:default] : nil
215
+ default_value = type.cast default_value unless default_value.is_a? Proc or default_value.nil?
223
216
 
224
- defined_attributes[name] = attribute
217
+ attributes[name] = default_value
218
+ attribute_types[name.to_sym] = type
225
219
  define_attribute_method name
226
220
 
227
221
  self.send :define_method, name do
@@ -16,7 +16,7 @@ module Acfs::Model
16
16
  #
17
17
  # true, on, yes
18
18
  #
19
- class Boolean < Base
19
+ module Boolean
20
20
 
21
21
  TRUE_VALUES = %w(true on yes)
22
22
 
@@ -27,7 +27,7 @@ module Acfs::Model
27
27
  # @param [Object] obj Object to cast.
28
28
  # @return [TrueClass, FalseClass] Casted boolean.
29
29
  #
30
- def cast_type(obj)
30
+ def self.cast(obj)
31
31
  return true if obj.is_a? TrueClass
32
32
  return false if obj.is_a? FalseClass
33
33
 
@@ -1,30 +1,31 @@
1
- module Acfs::Model::Attributes
2
-
3
- # @api public
4
- #
5
- # DateTime attribute type. Use it in your model as an attribute type:
6
- #
7
- # @example
8
- # class User
9
- # include Acfs::Model
10
- # attribute :name, :date_time
11
- # end
12
- #
13
- class DateTime < Base
1
+ module Acfs::Model
2
+ module Attributes
14
3
 
15
4
  # @api public
16
5
  #
17
- # Cast given object to DateTime.
18
- # Expect
6
+ # DateTime attribute type. Use it in your model as an attribute type:
19
7
  #
20
- # @param [Object] obj Object to cast.
21
- # @return [DateTime] Casted object as DateTime.
8
+ # @example
9
+ # class User
10
+ # include Acfs::Model
11
+ # attribute :name, :date_time
12
+ # end
22
13
  #
23
- def cast_type(obj)
24
- return nil if nil_allowed? and obj.blank?
25
- return obj if obj.is_a? ::DateTime
26
- return ::DateTime.iso8601(obj.iso8601) if obj.is_a? Time or obj.is_a? Date
27
- return ::DateTime.iso8601(obj)
14
+ module DateTime
15
+
16
+ # @api public
17
+ #
18
+ # Cast given object to DateTime.
19
+ # Expect
20
+ #
21
+ # @param [Object] obj Object to cast.
22
+ # @return [DateTime] Casted object as DateTime.
23
+ #
24
+ def self.cast(obj)
25
+ return obj if obj.is_a? ::DateTime
26
+ return ::DateTime.iso8601(obj.iso8601) if obj.is_a? Time or obj.is_a? Date
27
+ return ::DateTime.iso8601(obj)
28
+ end
28
29
  end
29
30
  end
30
31
  end
@@ -1,26 +1,28 @@
1
- module Acfs::Model::Attributes
2
-
3
- # @api public
4
- #
5
- # Float attribute type. Use it in your model as an attribute type:
6
- #
7
- # @example
8
- # class User
9
- # include Acfs::Model
10
- # attribute :name, :float
11
- # end
12
- #
13
- class Float < Base
1
+ module Acfs::Model
2
+ module Attributes
14
3
 
15
4
  # @api public
16
5
  #
17
- # Cast given object to float.
6
+ # Float attribute type. Use it in your model as an attribute type:
18
7
  #
19
- # @param [Object] obj Object to cast.
20
- # @return [Float] Casted object as float.
8
+ # @example
9
+ # class User
10
+ # include Acfs::Model
11
+ # attribute :name, :float
12
+ # end
21
13
  #
22
- def cast_type(obj)
23
- obj.to_f
14
+ module Float
15
+
16
+ # @api public
17
+ #
18
+ # Cast given object to float.
19
+ #
20
+ # @param [Object] obj Object to cast.
21
+ # @return [Float] Casted object as float.
22
+ #
23
+ def self.cast(obj)
24
+ obj.to_f
25
+ end
24
26
  end
25
27
  end
26
28
  end
@@ -1,26 +1,28 @@
1
- module Acfs::Model::Attributes
2
-
3
- # @api public
4
- #
5
- # Integer attribute type. Use it in your model as an attribute type:
6
- #
7
- # @example
8
- # class User
9
- # include Acfs::Model
10
- # attribute :name, :integer
11
- # end
12
- #
13
- class Integer < Base
1
+ module Acfs::Model
2
+ module Attributes
14
3
 
15
4
  # @api public
16
5
  #
17
- # Cast given object to integer.
6
+ # Integer attribute type. Use it in your model as an attribute type:
18
7
  #
19
- # @param [Object] obj Object to cast.
20
- # @return [Fixnum] Casted object as fixnum.
8
+ # @example
9
+ # class User
10
+ # include Acfs::Model
11
+ # attribute :name, :integer
12
+ # end
21
13
  #
22
- def cast_type(obj)
23
- obj.to_i
14
+ module Integer
15
+
16
+ # @api public
17
+ #
18
+ # Cast given object to integer.
19
+ #
20
+ # @param [Object] obj Object to cast.
21
+ # @return [Fixnum] Casted object as fixnum.
22
+ #
23
+ def self.cast(obj)
24
+ obj.to_i
25
+ end
24
26
  end
25
27
  end
26
28
  end
@@ -1,28 +1,30 @@
1
- module Acfs::Model::Attributes
2
-
3
- # @api public
4
- #
5
- # List attribute type. Use it in your model as an attribute type:
6
- #
7
- # @example
8
- # class User
9
- # include Acfs::Model
10
- # attribute :name, :list
11
- # end
12
- #
13
- class List < Base
1
+ module Acfs::Model
2
+ module Attributes
14
3
 
15
4
  # @api public
16
5
  #
17
- # Cast given object to a list.
6
+ # List attribute type. Use it in your model as an attribute type:
18
7
  #
19
- # @param [Object] obj Object to cast.
20
- # @return [Fixnum] Casted object as list.
21
- # @raise [TypeError] If object cannot be casted to a list.
8
+ # @example
9
+ # class User
10
+ # include Acfs::Model
11
+ # attribute :name, :list
12
+ # end
22
13
  #
23
- def cast_type(obj)
24
- return obj.to_a if obj.respond_to? :to_a
25
- raise TypeError.new "Cannot cast #{obj.inspect} to array."
14
+ module List
15
+
16
+ # @api public
17
+ #
18
+ # Cast given object to a list.
19
+ #
20
+ # @param [Object] obj Object to cast.
21
+ # @return [Fixnum] Casted object as list.
22
+ # @raise [TypeError] If object cannot be casted to a list.
23
+ #
24
+ def self.cast(obj)
25
+ return obj.to_a if obj.respond_to? :to_a
26
+ raise TypeError.new "Cannot cast #{obj.inspect} to array."
27
+ end
26
28
  end
27
29
  end
28
30
  end
@@ -1,26 +1,28 @@
1
- module Acfs::Model::Attributes
2
-
3
- # @api public
4
- #
5
- # String attribute type. Use it in your model as an attribute type:
6
- #
7
- # @example
8
- # class User
9
- # include Acfs::Model
10
- # attribute :name, :string
11
- # end
12
- #
13
- class String < Base
1
+ module Acfs::Model
2
+ module Attributes
14
3
 
15
4
  # @api public
16
5
  #
17
- # Cast given object to string.
6
+ # String attribute type. Use it in your model as an attribute type:
18
7
  #
19
- # @param [Object] obj Object to cast.
20
- # @return [String] Casted string.
8
+ # @example
9
+ # class User
10
+ # include Acfs::Model
11
+ # attribute :name, :string
12
+ # end
21
13
  #
22
- def cast_type(obj)
23
- obj.to_s
14
+ module String
15
+
16
+ # @api public
17
+ #
18
+ # Cast given object to string.
19
+ #
20
+ # @param [Object] obj Object to cast.
21
+ # @return [String] Casted string.
22
+ #
23
+ def self.cast(obj)
24
+ obj.to_s
25
+ end
24
26
  end
25
27
  end
26
28
  end
@@ -76,7 +76,10 @@ module Acfs::Model
76
76
 
77
77
  operation :list, params: params do |data|
78
78
  data.each do |obj|
79
- collection << create_resource(obj)
79
+ collection << self.new.tap do |m|
80
+ m.attributes = obj
81
+ m.loaded!
82
+ end
80
83
  end
81
84
  collection.loaded!
82
85
  block.call collection unless block.nil?
@@ -88,13 +91,14 @@ module Acfs::Model
88
91
 
89
92
  private
90
93
  def find_single(id, opts, &block)
91
- model = SimpleDelegator.new self.new
94
+ model = self.new
92
95
 
93
96
  opts[:params] ||= {}
94
97
  opts[:params].merge!({ id: id })
95
98
 
96
99
  operation :read, opts do |data|
97
- model.__setobj__ create_resource data, origin: model.__getobj__
100
+ model.attributes = data
101
+ model.loaded!
98
102
  block.call model unless block.nil?
99
103
  end
100
104
 
@@ -115,23 +119,6 @@ module Acfs::Model
115
119
  end
116
120
  end
117
121
  end
118
-
119
- def create_resource(data, opts = {})
120
- type = data.delete 'type'
121
- klass = resource_class_lookup(type)
122
- (opts[:origin].is_a?(klass) ? opts[:origin] : klass.new).tap do |m|
123
- m.attributes = data
124
- m.loaded!
125
- end
126
- end
127
-
128
- def resource_class_lookup(type)
129
- return self if type.nil?
130
- klass = type.camelize.constantize
131
- raise Acfs::RessourceTypeError, type_name: type, base_class: self unless klass <= self
132
- klass
133
- end
134
-
135
122
  end
136
123
  end
137
124
  end
@@ -2,54 +2,44 @@ require 'spec_helper'
2
2
 
3
3
  describe Acfs::Model::Attributes::DateTime do
4
4
  let(:model) { Class.new.tap { |c| c.send :include, Acfs::Model }}
5
- let(:params) { {} }
6
- subject { Acfs::Model::Attributes::DateTime.new params }
7
5
 
8
6
  describe 'cast' do
9
7
  it 'should return same object, if obj is already of DateTime class' do
10
8
  date_time = DateTime.now
11
- retval = subject.cast(date_time)
9
+ retval = Acfs::Model::Attributes::DateTime.cast(date_time)
12
10
  expect(retval).to be == date_time
13
11
  end
14
12
 
15
13
  it 'should return parsed object, if obj is of Time class' do
16
14
  time = Time.now
17
- retval = subject.cast(time)
15
+ retval = Acfs::Model::Attributes::DateTime.cast(time)
18
16
  expect(retval).to be == DateTime.iso8601(time.iso8601)
19
17
  end
20
18
 
21
19
  it 'should return parsed object, if obj is of Date class' do
22
20
  date = Date.today
23
- retval = subject.cast(date)
21
+ retval = Acfs::Model::Attributes::DateTime.cast(date)
24
22
  expect(retval).to be == DateTime.iso8601(date.iso8601)
25
23
  end
26
24
 
27
25
  it 'should return parsed object, if obj is of String class in ISO-8601 format' do
28
26
  date_time_string = DateTime.now.iso8601
29
- retval = subject.cast(date_time_string)
27
+ retval = Acfs::Model::Attributes::DateTime.cast(date_time_string)
30
28
  expect(retval).to be == DateTime.iso8601(date_time_string)
31
29
  end
32
30
 
33
31
  it 'should raise an error if obj is of String class not in valid ISO-8601 format' do
34
32
  malformed_string = 'qwe123'
35
33
  expect {
36
- subject.cast(malformed_string)
34
+ Acfs::Model::Attributes::DateTime.cast(malformed_string)
37
35
  }.to raise_error ArgumentError
38
36
  end
39
37
 
40
38
  it 'should raise an error if obj is of wrong class (Fixnum)' do
41
39
  fixnum = 12
42
40
  expect {
43
- subject.cast(fixnum)
41
+ Acfs::Model::Attributes::DateTime.cast(fixnum)
44
42
  }.to raise_error TypeError
45
43
  end
46
-
47
- context 'with allow_nil option' do
48
- let(:params) { {allow_nil: true} }
49
-
50
- it 'should accept empty string as nil' do
51
- expect(subject.cast('')).to eq nil
52
- end
53
- end
54
44
  end
55
45
  end
@@ -2,19 +2,21 @@ require 'spec_helper'
2
2
 
3
3
  describe Acfs::Model::Attributes::Float do
4
4
  let(:model) { Class.new.tap { |c| c.send :include, Acfs::Model }}
5
- subject { Acfs::Model::Attributes::Float.new }
6
5
 
7
6
  describe 'cast' do
8
7
  it 'should return same object, if obj is already of float class' do
9
- expect(subject.cast(1.3)).to be == 1.3
8
+ retval = Acfs::Model::Attributes::Float.cast(1.3)
9
+ expect(retval).to be == 1.3
10
10
  end
11
11
 
12
12
  it 'should return parsed object, if obj is of Fixnum class' do
13
- expect(subject.cast(7)).to be == 7.0
13
+ retval = Acfs::Model::Attributes::Float.cast(7)
14
+ expect(retval).to be == 7.0
14
15
  end
15
16
 
16
17
  it 'should return parsed object, if obj is of String class containing a float' do
17
- expect(subject.cast('1.7')).to be == 1.7
18
+ retval = Acfs::Model::Attributes::Float.cast('1.7')
19
+ expect(retval).to be == 1.7
18
20
  end
19
21
  end
20
22
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Acfs::Model::Attributes::List do
4
4
  let(:model) { Class.new.tap { |c| c.send :include, Acfs::Model }}
5
- subject { Acfs::Model::Attributes::List.new }
5
+ subject { Acfs::Model::Attributes::List }
6
6
 
7
7
  describe '.cast' do
8
8
  context 'with array' do
@@ -115,42 +115,29 @@ describe Acfs::Model::Attributes do
115
115
  end
116
116
  end
117
117
 
118
- describe 'class' do
119
- describe '#attribute' do
120
- it 'should add an attribute to model attribute list' do
121
- model.send :attribute, :name, :string
118
+ describe '.attribute' do
119
+ it 'should add an attribute to model attribute list' do
120
+ model.send :attribute, :name, :string
122
121
 
123
- expect(model.attributes).to be == { :name => nil }.stringify_keys
124
- end
125
-
126
- it 'should accept a default value' do
127
- model.send :attribute, :name, :string, default: 'John'
128
-
129
- expect(model.attributes).to be == { :name => 'John' }.stringify_keys
130
- end
122
+ expect(model.attributes).to be == { :name => nil }.stringify_keys
123
+ end
131
124
 
132
- it 'should accept an symbolic type' do
133
- model.send :attribute, :age, :integer, default: '12'
125
+ it 'should accept a default value' do
126
+ model.send :attribute, :name, :string, default: 'John'
134
127
 
135
- expect(model.attributes).to be == { :age => 12 }.stringify_keys
136
- end
128
+ expect(model.attributes).to be == { :name => 'John' }.stringify_keys
129
+ end
137
130
 
138
- it 'should accept an class type' do
139
- model.send :attribute, :age, Acfs::Model::Attributes::Integer, default: '12'
131
+ it 'should accept an symbolic type' do
132
+ model.send :attribute, :age, :integer, default: '12'
140
133
 
141
- expect(model.attributes).to be == { :age => 12 }.stringify_keys
142
- end
134
+ expect(model.attributes).to be == { :age => 12 }.stringify_keys
135
+ end
143
136
 
144
- context 'allow nil option' do
145
- it 'should allow nil as value' do
146
- model.send :attribute, :updated_at, Acfs::Model::Attributes::DateTime, default: DateTime.new, allow_nil: true
147
- resource = model.new
148
- expect(resource.updated_at).to eq DateTime.new
137
+ it 'should accept an class type' do
138
+ model.send :attribute, :age, Acfs::Model::Attributes::Integer, default: '12'
149
139
 
150
- resource.updated_at = ''
151
- expect(resource.updated_at).to eq nil
152
- end
153
- end
140
+ expect(model.attributes).to be == { :age => 12 }.stringify_keys
154
141
  end
155
142
  end
156
143
  end
@@ -113,7 +113,7 @@ describe Acfs::Model::Persistence do
113
113
 
114
114
  it 'should be frozen after DELETE' do
115
115
  model.delete!
116
- expect(model.__getobj__).to be_frozen
116
+ expect(model).to be_frozen
117
117
  end
118
118
  end
119
119
 
@@ -127,12 +127,12 @@ describe Acfs::Model::Persistence do
127
127
  end
128
128
 
129
129
  it 'should save resource' do
130
- expect(model.__getobj__).to receive(:save).with({})
130
+ expect(model).to receive(:save).with({})
131
131
  model.update_attributes name: 'Idefix'
132
132
  end
133
133
 
134
134
  it 'should pass second hash to save' do
135
- expect(model.__getobj__).to receive(:save).with({ bla: 'blub' })
135
+ expect(model).to receive(:save).with({ bla: 'blub' })
136
136
  model.update_attributes({ name: 'Idefix' }, { bla: 'blub' })
137
137
  end
138
138
  end
@@ -147,12 +147,12 @@ describe Acfs::Model::Persistence do
147
147
  end
148
148
 
149
149
  it 'should save resource' do
150
- expect(model.__getobj__).to receive(:save!).with({})
150
+ expect(model).to receive(:save!).with({})
151
151
  model.update_attributes! name: 'Idefix'
152
152
  end
153
153
 
154
154
  it 'should pass second hash to save' do
155
- expect(model.__getobj__).to receive(:save!).with({ bla: 'blub' })
155
+ expect(model).to receive(:save!).with({ bla: 'blub' })
156
156
  model.update_attributes!({ name: 'Idefix' }, { bla: 'blub' })
157
157
  end
158
158
  end
@@ -20,7 +20,7 @@ describe Acfs::Model::QueryMethods do
20
20
  it 'should invoke callback after model is loaded' do
21
21
  proc = Proc.new { }
22
22
  proc.should_receive(:call) do |user|
23
- expect(user.__getobj__).to equal @user.__getobj__
23
+ expect(user).to be === @user
24
24
  expect(user).to be_loaded
25
25
  end
26
26
 
@@ -100,40 +100,4 @@ describe Acfs::Model::QueryMethods do
100
100
  end
101
101
  end
102
102
  end
103
-
104
- describe '.all' do
105
- let(:computer) { Computer }
106
- let(:pc) { PC }
107
- let(:mac) { Mac }
108
- before do
109
- stub_request(:get, 'http://computers.example.org/computers').to_return response([{ id: 1, type: 'PC' }, { id: 2, type: 'Computer' }, { id: 3, type: 'Mac' }])
110
- end
111
-
112
- context 'with resource type inheritance' do
113
- it 'should create appropriate subclass resources' do
114
- @computers = Computer.all
115
-
116
- expect(@computers).to_not be_loaded
117
-
118
- Acfs.run
119
-
120
- expect(@computers).to be_loaded
121
- expect(@computers).to have(3).items
122
- expect(@computers[0]).to be_a PC
123
- expect(@computers[1]).to be_a Computer
124
- expect(@computers[2]).to be_a Mac
125
- end
126
-
127
- context 'with invalid type set' do
128
- before do
129
- stub_request(:get, 'http://computers.example.org/computers').to_return response([{ id: 1, type: 'MyUser' }, { id: 2, type: 'Computer' }, { id: 3, type: 'Mac' }])
130
- end
131
-
132
- it 'should raise error if type is no subclass' do
133
- Computer.all
134
- expect { Acfs.run }.to raise_error(Acfs::RessourceTypeError)
135
- end
136
- end
137
- end
138
- end
139
103
  end
@@ -1,7 +1,6 @@
1
1
 
2
2
  Acfs.configure do
3
3
  locate :user_service, 'http://users.example.org'
4
- locate :computer_service, 'http://computers.example.org'
5
4
  locate :comments, 'http://comments.example.org'
6
5
  end
7
6
 
@@ -48,26 +47,6 @@ class Comment < Acfs::Resource
48
47
  attribute :text, :string
49
48
  end
50
49
 
51
- class ComputerService < Acfs::Service
52
- use Acfs::Middleware::MessagePackDecoder
53
- use Acfs::Middleware::JsonDecoder
54
- use Acfs::Middleware::JsonEncoder
55
- end
56
-
57
- class Computer < Acfs::Resource
58
- service ComputerService, path: 'computers'
59
-
60
- attribute :id, :integer
61
- end
62
-
63
- class PC < Computer
64
-
65
- end
66
-
67
- class Mac < Computer
68
-
69
- end
70
-
71
50
  # DRAFT: Singular resource
72
51
  #class Singular < Acfs::Resource
73
52
  # service UserService, singular: true
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.2.b196
4
+ version: 0.22.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-26 00:00:00.000000000 Z
11
+ date: 2013-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: actionpack
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: multi_json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: typhoeus
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rack
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
@@ -145,7 +145,6 @@ files:
145
145
  - lib/acfs/middleware/print.rb
146
146
  - lib/acfs/model.rb
147
147
  - lib/acfs/model/attributes.rb
148
- - lib/acfs/model/attributes/base.rb
149
148
  - lib/acfs/model/attributes/boolean.rb
150
149
  - lib/acfs/model/attributes/date_time.rb
151
150
  - lib/acfs/model/attributes/float.rb
@@ -212,14 +211,14 @@ require_paths:
212
211
  - lib
213
212
  required_ruby_version: !ruby/object:Gem::Requirement
214
213
  requirements:
215
- - - ! '>='
214
+ - - '>='
216
215
  - !ruby/object:Gem::Version
217
216
  version: '0'
218
217
  required_rubygems_version: !ruby/object:Gem::Requirement
219
218
  requirements:
220
- - - ! '>'
219
+ - - '>='
221
220
  - !ruby/object:Gem::Version
222
- version: 1.3.1
221
+ version: '0'
223
222
  requirements: []
224
223
  rubyforge_project:
225
224
  rubygems_version: 2.0.3
@@ -253,3 +252,4 @@ test_files:
253
252
  - spec/spec_helper.rb
254
253
  - spec/support/response.rb
255
254
  - spec/support/service.rb
255
+ has_rdoc:
@@ -1,28 +0,0 @@
1
- module Acfs::Model::Attributes
2
-
3
- class Base
4
- attr_reader :options
5
-
6
- def initialize(opts = {})
7
- @options = opts
8
- @options.reverse_merge! allow_nil: true
9
- end
10
-
11
- def nil_allowed?
12
- !!options[:allow_nil]
13
- end
14
-
15
- def default_value
16
- options[:default].is_a?(Proc) ? options[:default] : cast(options[:default])
17
- end
18
-
19
- def cast(obj)
20
- return nil if obj.nil? && nil_allowed?
21
- cast_type obj
22
- end
23
-
24
- def cast_type(obj)
25
- raise NotImplementedError
26
- end
27
- end
28
- end