kelredd-resourceful 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,6 +12,8 @@ module Resourceful
12
12
  self.get_collection("#{findable_index}.#{format}", opts, findable_search, force)
13
13
  when :first
14
14
  self.get_collection("#{findable_index}.#{format}", opts, findable_search, force).first
15
+ when :last
16
+ self.get_collection("#{findable_index}.#{format}", opts, findable_search, force).last
15
17
  else
16
18
  self.get("#{findable_index}/#{id}.#{format}", opts, findable_search, force)
17
19
  end
@@ -23,6 +25,9 @@ module Resourceful
23
25
  def first
24
26
  find(:first)
25
27
  end
28
+ def last
29
+ find(:last)
30
+ end
26
31
 
27
32
  def findable_index
28
33
  raise NotImplementedError, "Findable expects a public class method 'findable_index'"
@@ -37,6 +42,54 @@ module Resourceful
37
42
 
38
43
  module InstanceMethods
39
44
 
45
+ def save
46
+ super do |attribute_hash|
47
+ if new_record?
48
+ self.push_data('post', \
49
+ "#{self.class.findable_index}.#{self.class.format}", \
50
+ {:params => self.class.findable_default_opts.merge(push_data_params)}, \
51
+ nested_attr_hash(attribute_hash), \
52
+ self.class.findable_search \
53
+ )
54
+ else
55
+ self.push_data('put', \
56
+ "#{self.class.findable_index}/#{self.id}.#{self.class.format}", \
57
+ {:params => self.class.findable_default_opts.merge(push_data_params)}, \
58
+ nested_attr_hash(attribute_hash), \
59
+ self.class.findable_search \
60
+ )
61
+ end
62
+ end
63
+ end
64
+
65
+ def destroy
66
+ super do |attribute_hash|
67
+ unless new_record?
68
+ self.push_data('delete', \
69
+ "#{self.class.findable_index}/#{self.id}.#{self.class.format}", \
70
+ {:params => self.class.findable_default_opts.merge(push_data_params)}, \
71
+ {} \
72
+ )
73
+ end
74
+ end
75
+ end
76
+
77
+ def push_data_params
78
+ # override to customize save url params
79
+ {}
80
+ end
81
+
82
+ def push_data_nesting
83
+ # default, override to customize, set to nil for push data hash style nesting
84
+ self.class.name.demodulize.underscore
85
+ end
86
+
87
+ private
88
+
89
+ def nested_attr_hash(attr_hash)
90
+ push_data_nesting ? {push_data_nesting => attr_hash} : attr_hash
91
+ end
92
+
40
93
  end
41
94
 
42
95
  def self.included(receiver)
@@ -35,6 +35,10 @@ module Resourceful
35
35
 
36
36
  protected
37
37
 
38
+ def push_data(verb, path, opts, data, search=nil)
39
+ self.class.get_result_data(super(verb, path, opts, data), search)
40
+ end
41
+
38
42
  def self.get_result_data(result, search)
39
43
  hsh_keys = search.kind_of?(String) ? search.split(/\s+/) : nil
40
44
  result_data = !hsh_keys.nil? && !hsh_keys.empty? && result.respond_to?(:get_value) ? result.get_value(hsh_keys) || result : result
@@ -36,6 +36,11 @@ module Resourceful
36
36
 
37
37
  protected
38
38
 
39
+ def push_data(verb, path, opts, data, search="")
40
+ result = super(verb, path, opts, data)
41
+ result.search(search) || result
42
+ end
43
+
39
44
  def self.format
40
45
  Resourceful::Resource::Xml.to_s
41
46
  end
@@ -22,6 +22,7 @@ module Resourceful
22
22
 
23
23
  def should_be_findable(index)
24
24
  should_have_class_methods :find
25
+ should_have_instance_methods :save, :destroy
25
26
  klass = described_type
26
27
  should "have '#{index}' as a findable index" do
27
28
  assert_equal index, klass.findable_index, "#{klass} findable index is not '#{index}'"
@@ -3,7 +3,7 @@ module Resourceful
3
3
 
4
4
  MAJOR = 0
5
5
  MINOR = 7
6
- TINY = 4
6
+ TINY = 5
7
7
 
8
8
  def self.to_s # :nodoc:
9
9
  [MAJOR, MINOR, TINY].join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kelredd-resourceful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Redding