resto 0.0.7 → 0.0.8

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.
data/lib/resto.rb CHANGED
@@ -63,7 +63,7 @@ module Resto
63
63
 
64
64
  @#{name} ||= {}
65
65
 
66
- @#{name}[params] ||= #{class_name.capitalize}.
66
+ @#{name}[params] ||= #{class_name.to_s.capitalize}.
67
67
  all({#{params}}.update(params), {#{relation}})
68
68
  end
69
69
  }
@@ -76,9 +76,9 @@ module Resto
76
76
  method_definition = %Q{
77
77
  def #{name}(reload = false)
78
78
  if reload
79
- @#{name} = #{name.capitalize}.get(#{name}_id)
79
+ @#{name} = #{name.to_s.capitalize}.get(#{name}_id)
80
80
  else
81
- @#{name} ||= #{name.capitalize}.get(#{name}_id)
81
+ @#{name} ||= #{name.to_s.capitalize}.get(#{name}_id)
82
82
  end
83
83
  end
84
84
  }
@@ -9,10 +9,10 @@ module Resto
9
9
 
10
10
  def add(property)
11
11
  @properties_with_indifferent_access.store(property.remote_key, property)
12
- @properties_with_indifferent_access
13
- .store(property.attribute_key, property)
14
- @properties_with_indifferent_access
15
- .store(property.attribute_key_as_string, property)
12
+ @properties_with_indifferent_access.
13
+ store(property.attribute_key, property)
14
+ @properties_with_indifferent_access.
15
+ store(property.attribute_key_as_string, property)
16
16
 
17
17
  @properties.store(property.attribute_key, property)
18
18
  end
@@ -14,6 +14,8 @@ module Resto
14
14
 
15
15
  def initialize(name, options={})
16
16
  @key = (name.to_s + "_time").to_sym
17
+ @format = options[:format]
18
+ @delimiter = @format.to_s.match(/(\W)/) { |m| m[0] }
17
19
  super
18
20
  end
19
21
 
@@ -22,22 +24,66 @@ module Resto
22
24
 
23
25
  formatted_value = value.to_s.strip
24
26
  if formatted_value.gsub(/([a-z|A-Z]{1,5}\Z)/, '') =~ /[^T\d\-:\+\/\s]/
25
- formatted_value = "invalid"
27
+ errors.store(@key, ":#{attribute_key} is not a valid time format.")
28
+ formatted_value = ""
26
29
  end
27
30
 
28
31
  number_of_digits = formatted_value.gsub(/\D/, '').length
29
- if (1..10).include?(number_of_digits)
30
- formatted_value = "invalid"
32
+ if (1..9).include?(number_of_digits)
33
+ errors.store(@key, ":#{attribute_key} is not a valid time format.")
34
+ formatted_value = ""
31
35
  end
32
36
 
33
37
  begin
34
- formatted_value.empty? ? nil : ::Time.parse(formatted_value)
35
- rescue ArgumentError
36
- nil.tap do
37
- errors.store(@key, ":#{attribute_key} is not a valid time format.")
38
+ if formatted_value.empty?
39
+ nil
40
+ else
41
+ ::Time.parse(from_format(formatted_value))
38
42
  end
43
+ rescue ArgumentError, TypeError, NoMethodError
44
+ errors.store(@key, ":#{attribute_key} is not a valid time format.")
45
+ nil
39
46
  end
40
47
  end
48
+
49
+ private
50
+
51
+ def from_format(value)
52
+ if @format
53
+ first_date_part = value.split("#{@delimiter}")
54
+
55
+ reminder = first_date_part.delete_at(2)
56
+ last = reminder.gsub(/\A(\d+)/) { $1 + "SPLIT" }.split("SPLIT")
57
+ last_date_part = last[0]
58
+
59
+ time_and_zone = last[1]
60
+ date = first_date_part << last_date_part
61
+ "#{date.at(year)}-#{date.at(month)}-#{date.at(day)}#{time_and_zone}"
62
+ else
63
+ value
64
+ end
65
+ end
66
+
67
+ def to_format
68
+
69
+ end
70
+
71
+ def day
72
+ split_format.index('dd')
73
+ end
74
+
75
+ def month
76
+ split_format.index('mm')
77
+ end
78
+
79
+ def year
80
+ split_format.index('yyyy')
81
+ end
82
+
83
+ def split_format
84
+ @split_format ||= @format.split("#{@delimiter}")
85
+ end
86
+
41
87
  end
42
88
  end
43
89
  end
@@ -100,8 +100,8 @@ module Resto
100
100
  tap { options.store(:open_timeout, time)}
101
101
  end
102
102
 
103
- # Number of seconds to wait for one block to be read (via one read(2) call).
104
- # If the HTTP object cannot read data in this many seconds,
103
+ # Number of seconds to wait for one block to be read (via one read(2)
104
+ # call). If the HTTP object cannot read data in this many seconds,
105
105
  # it raises a TimeoutError exception.
106
106
  def read_timeout(time)#
107
107
  tap { options.store(:read_timeout, time)}
data/lib/resto/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Resto
4
- VERSION = "0.0.7"
4
+ VERSION = "0.0.8"
5
5
  end
data/resto.gemspec CHANGED
@@ -20,8 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.add_runtime_dependency "yajl-ruby", "0.8.2"
21
21
  s.add_runtime_dependency "nokogiri", ">=1.4.4"
22
22
  # s.add_dependency "activesupport", "3.0.0" ???
23
- s.add_development_dependency "bundler", ">= 1.0.11"
24
- s.add_development_dependency "rspec", ">= 2.5.0"
23
+ s.add_development_dependency "bundler", ">= 1.0.13"
24
+ s.add_development_dependency "rspec", ">= 2.6.0"
25
25
  s.add_development_dependency "fuubar", ">= 0.0.4"
26
26
  s.add_development_dependency "webmock", ">= 1.6.2"
27
27
  s.add_development_dependency "code-cleaner", ">= 0.8.2"
@@ -5,17 +5,17 @@ require 'resto/extra/copy'
5
5
  describe Resto::Extra::Copy do
6
6
  describe ".request_base" do
7
7
  before do
8
- @request_base = Resto::Request::Base.new.port(40)
9
- .url('http://www.aftonbladet.se:92/customers')
10
- .query('q=adam')
11
- .path('contacts')
12
-
13
- @new_request_base = Resto::Extra::Copy.request_base(@request_base)
14
- .url('http://new.se:99/other')
15
- .query('q=not-same')
16
- .path('other-contacts/')
17
- .headers({ "accept"=> "other", "user-agent"=> "Ruby" })
18
- .append_path(2)
8
+ @request_base = Resto::Request::Base.new.port(40).
9
+ url('http://www.aftonbladet.se:92/customers').
10
+ query('q=adam').
11
+ path('contacts')
12
+
13
+ @new_request_base = Resto::Extra::Copy.request_base(@request_base).
14
+ url('http://new.se:99/other').
15
+ query('q=not-same').
16
+ path('other-contacts/').
17
+ headers({ "accept"=> "other", "user-agent"=> "Ruby" }).
18
+ append_path(2)
19
19
  end
20
20
 
21
21
  it { @new_request_base.object_id.should_not == @request_base.object_id }
@@ -47,8 +47,8 @@ describe Resto::Extra::Copy do
47
47
  describe ".response_base" do
48
48
  before do
49
49
  @response_base = Resto::Response::Base.new.format(:json)
50
- @new_response_base = Resto::Extra::Copy.response_base(@response_base)
51
- .http_response('response')
50
+ @new_response_base = Resto::Extra::Copy.response_base(@response_base).
51
+ http_response('response')
52
52
  end
53
53
 
54
54
  it { @response_base.instance_eval { @response }.should == nil }
@@ -16,13 +16,13 @@ describe Resto::Extra::HashArgs do
16
16
  end
17
17
 
18
18
  it "returns the value found by the key" do
19
- BasicAuthication.new({'username' => 'anders', :password => 'secret'})
20
- .fetch(:password) { 'other' }.should == 'secret'
19
+ BasicAuthication.new({'username' => 'anders', :password => 'secret'}).
20
+ fetch(:password) { 'other' }.should == 'secret'
21
21
  end
22
22
 
23
23
  it "the key is translated to its symbol" do
24
- BasicAuthication.new({'username' => 'anders', :password => 'secret'})
25
- .fetch(:username) { 'other' }.should == 'anders'
24
+ BasicAuthication.new({'username' => 'anders', :password => 'secret'}).
25
+ fetch(:username) { 'other' }.should == 'anders'
26
26
  end
27
27
  end
28
28
 
@@ -38,34 +38,34 @@ describe Resto::Extra::HashArgs do
38
38
  if RUBY_VERSION < '1.9'
39
39
 
40
40
  it "raises IndexError when no value and no block" do
41
- expect { FormatExt.new({}).fetch(:extension) }
42
- .to raise_error(IndexError, 'key not found')
41
+ expect { FormatExt.new({}).fetch(:extension) }.
42
+ to raise_error(IndexError, 'key not found')
43
43
  end
44
44
 
45
45
  else
46
46
 
47
47
  it "raises KeyError when no value and no block" do
48
- lambda { FormatExt.new({}).fetch(:extension) }
49
- .should raise_error(KeyError, 'key not found: :extension')
48
+ lambda { FormatExt.new({}).fetch(:extension) }.
49
+ should raise_error(KeyError, 'key not found: :extension')
50
50
  end
51
51
 
52
52
  end
53
53
 
54
54
  it "raises" do
55
- expect { FormatExt.new({:username => "anders"}) }
56
- .to raise_error(ArgumentError, /The key 'username'/)
55
+ expect { FormatExt.new({:username => "anders"}) }.
56
+ to raise_error(ArgumentError, /The key 'username'/)
57
57
 
58
- expect { FormatExt.new("string") }
59
- .to raise_error(ArgumentError, "'string' must be a Hash")
58
+ expect { FormatExt.new("string") }.
59
+ to raise_error(ArgumentError, "'string' must be a Hash")
60
60
 
61
- expect { FormatExt.new(:extension => 'value', 'extension' => 'value') }
62
- .to raise_error(ArgumentError, "duplicated keys: extension, extension")
61
+ expect { FormatExt.new(:extension => 'value', 'extension' => 'value') }.
62
+ to raise_error(ArgumentError, "duplicated keys: extension, extension")
63
63
 
64
- expect { FormatExt.new({:invalid_key => 'invalid' }) }
65
- .to raise_error(ArgumentError, /The key 'invalid_key' is not valid/)
64
+ expect { FormatExt.new({:invalid_key => 'invalid' }) }.
65
+ to raise_error(ArgumentError, /The key 'invalid_key' is not valid/)
66
66
 
67
- expect { FormatExt.new({:extension => 'value' }).fetch(:invalid_key) }
68
- .to raise_error(ArgumentError, /The key 'invalid_key' is not valid/)
67
+ expect { FormatExt.new({:extension => 'value' }).fetch(:invalid_key) }.
68
+ to raise_error(ArgumentError, /The key 'invalid_key' is not valid/)
69
69
  end
70
70
  end
71
71
  end
@@ -47,8 +47,8 @@ describe Resto::Property::Handler do
47
47
  it { article.errors.fetch(:title_presence, false).should == nil }
48
48
 
49
49
  it do
50
- article.errors.fetch(:empty_title_presence, false)
51
- .should == ":empty_title can’t be blank"
50
+ article.errors.fetch(:empty_title_presence, false).
51
+ should == ":empty_title can’t be blank"
52
52
  end
53
53
  end
54
54
  end
@@ -12,10 +12,12 @@ describe Resto::Property::Time do
12
12
  let(:iso_8601_cet_winter) { "2011-01-01T14:46:00+01:00" } #GMT +1, UTC +1
13
13
 
14
14
  let(:errors) { {} }
15
- subject { Resto::Property::Time.new(:date_of_birth) }
15
+
16
16
 
17
17
  describe ".cast(time_string, errors)" do
18
- context "local time is 2010-10-25T12:00:00 PST" do
18
+ subject { Resto::Property::Time.new(:date_of_birth) }
19
+
20
+ context "local time is 2010-10-25T12:00:00 PST", :ruby => 1.9 do
19
21
  it "returns a time object parsed from the string" do
20
22
  at_time("2010-10-25T12:00:00 PST", '-08:00') do #UTC -8
21
23
  time = subject.cast(iso_8601_plus, errors)
@@ -74,7 +76,7 @@ describe Resto::Property::Time do
74
76
  end
75
77
 
76
78
  context ".cast('q', errors)" do
77
- it("returns nil and sets errors[:date_of_birth_time]") do
79
+ it("returns nil and sets errors[:date_of_birth_time]", :ruby => 1.9) do
78
80
  subject.cast('q', errors).should == nil
79
81
  errors.fetch(:date_of_birth_time, false).should ==
80
82
  ':date_of_birth is not a valid time format.'
@@ -113,7 +115,7 @@ describe Resto::Property::Time do
113
115
  end
114
116
  end
115
117
 
116
- context ".cast('22/02/2010 00:00:00 UTC', errors)" do
118
+ context ".cast('22/02/2010 00:00:00 UTC', errors)", :ruby => 1.9 do
117
119
  it("returns a time object parsed from the string") do
118
120
  time = subject.cast('22/02/2010 00:00:00 UTC', errors)
119
121
  time.utc.iso8601.should == '2010-02-22T00:00:00Z'
@@ -121,4 +123,23 @@ describe Resto::Property::Time do
121
123
  end
122
124
  end
123
125
  end
126
+
127
+ context ":format => 'mm/dd/yyyy'" do
128
+ subject do
129
+ Resto::Property::Time.new(:date_of_birth, :format => 'mm/dd/yyyy')
130
+ end
131
+
132
+ it("returns a time object parsed from the string") do
133
+ time = subject.cast('02/22/2010 00:00:00 UTC', errors)
134
+ time.utc.iso8601.should == '2010-02-22T00:00:00Z'
135
+ errors.fetch(:date_of_birth_time, false).should == nil
136
+ end
137
+
138
+ it("returns nil and sets errors") do
139
+ subject.cast('ddd', errors).should == nil
140
+ errors.fetch(:date_of_birth_time, false).should ==
141
+ ':date_of_birth is not a valid time format.'
142
+ end
143
+ end
144
+
124
145
  end
@@ -50,8 +50,8 @@ describe Resto::Property do
50
50
  before { subject.validate(article, :empty_title) }
51
51
 
52
52
  it {
53
- article.errors[:empty_title_presence]
54
- .should == ":empty_title can’t be blank"
53
+ article.errors[:empty_title_presence].
54
+ should == ":empty_title can’t be blank"
55
55
  }
56
56
  end
57
57
  end
@@ -20,8 +20,8 @@ describe Resto::Request::Base do
20
20
 
21
21
  describe "@request" do
22
22
  it do
23
- subject.instance_eval { @request }
24
- .should be_instance_of(Resto::Request::Factory)
23
+ subject.instance_eval { @request }.
24
+ should be_instance_of(Resto::Request::Factory)
25
25
  end
26
26
  end
27
27
  end
@@ -39,8 +39,8 @@ describe Resto::Request::Base do
39
39
  context "#content_type('text/html').headers({'content-type' => 'text/plain',
40
40
  'User-agent' => 'Ruby' })" do
41
41
  before do
42
- subject.content_type('text/html')
43
- .headers({'content-type' => 'text/plain', 'user-agent' => 'Ruby' })
42
+ subject.content_type('text/html').
43
+ headers({'content-type' => 'text/plain', 'user-agent' => 'Ruby' })
44
44
  end
45
45
 
46
46
  its(:composed_headers) do
@@ -54,8 +54,8 @@ describe Resto::Request::Base do
54
54
  .content_type('text/html')" do
55
55
 
56
56
  before do
57
- subject.basic_auth('username' => "developer", "password" => "secret")
58
- .content_type('text/html')
57
+ subject.basic_auth('username' => "developer", "password" => "secret").
58
+ content_type('text/html')
59
59
  end
60
60
 
61
61
  its(:composed_headers) do
@@ -112,9 +112,9 @@ describe Resto::Request::Base do
112
112
  .params('longUrl' => 'http://betaworks.com', 'short' => 'htt')" do
113
113
 
114
114
  before do
115
- subject.url('http://www.aftonbladet.se:92/customers')
116
- .query('q=adam')
117
- .params('longUrl' => 'http://betaworks.com', 'short' => 'htt')
115
+ subject.url('http://www.aftonbladet.se:92/customers').
116
+ query('q=adam').
117
+ params('longUrl' => 'http://betaworks.com', 'short' => 'htt')
118
118
  end
119
119
 
120
120
  its(:read_host) { should == 'www.aftonbladet.se' }
@@ -130,10 +130,10 @@ describe Resto::Request::Base do
130
130
  .path('contacts')" do
131
131
 
132
132
  before do
133
- subject.port(40)
134
- .url('http://www.aftonbladet.se:92/customers')
135
- .query('q=adam')
136
- .path('contacts')
133
+ subject.port(40).
134
+ url('http://www.aftonbladet.se:92/customers').
135
+ query('q=adam').
136
+ path('contacts')
137
137
  end
138
138
 
139
139
  its(:read_host) { should == 'www.aftonbladet.se' }
@@ -154,8 +154,8 @@ describe Resto::Request::Base do
154
154
  .append_path(1)" do
155
155
 
156
156
  before do
157
- subject.url('http://www.aftonbladet.se:92/customers/?q=adam')
158
- .append_path(1)
157
+ subject.url('http://www.aftonbladet.se:92/customers/?q=adam').
158
+ append_path(1)
159
159
  end
160
160
 
161
161
  its(:read_host) { should == 'www.aftonbladet.se' }
@@ -167,8 +167,8 @@ describe Resto::Request::Base do
167
167
  .query('q=take presendent')" do
168
168
 
169
169
  before do
170
- subject.url('http://www.aftonbladet.se:92/customers/?q=adam')
171
- .query("q=take presendent")
170
+ subject.url('http://www.aftonbladet.se:92/customers/?q=adam').
171
+ query("q=take presendent")
172
172
  end
173
173
 
174
174
  its(:read_host) { should == 'www.aftonbladet.se' }
@@ -181,9 +181,9 @@ describe Resto::Request::Base do
181
181
  .query('q=take presendent')" do
182
182
 
183
183
  before do
184
- subject.host('www.take-presedent.se')
185
- .url('http://www.aftonbladet.se:92/customers/?q=adam')
186
- .query('q=take presendent')
184
+ subject.host('www.take-presedent.se').
185
+ url('http://www.aftonbladet.se:92/customers/?q=adam').
186
+ query('q=take presendent')
187
187
  end
188
188
 
189
189
  its(:read_host) { should == 'www.take-presedent.se' }
@@ -207,8 +207,8 @@ describe Resto::Request::Base do
207
207
 
208
208
  context "when formatter is Resto::Format::Json" do
209
209
  before do
210
- subject.format(:json)
211
- .body( { :foo => 12425125, :bar => "some string" } )
210
+ subject.format(:json).
211
+ body( { :foo => 12425125, :bar => "some string" } )
212
212
  end
213
213
 
214
214
  its(:read_body) do
@@ -9,19 +9,19 @@ describe Resto::Request::Factory do
9
9
  let(:base) { Resto::Request::Base.new }
10
10
 
11
11
  subject do
12
- factory.new(base
13
- .host('sr.se')
14
- .port(8080)
15
- .headers('content-type' => 'text/html')
16
- .body('Anders')
17
- .path('/dashboard'))
12
+ factory.new(base.
13
+ host('sr.se').
14
+ port(8080).
15
+ headers('content-type' => 'text/html').
16
+ body('Anders').
17
+ path('/dashboard'))
18
18
  end
19
19
 
20
20
  describe "#head" do
21
21
  before do
22
- stub_request(:head, "sr.se:8080/dashboard")
23
- .with(:headers => headers("content-type" => "text/html"))
24
- .to_return(:status => 200)
22
+ stub_request(:head, "sr.se:8080/dashboard").
23
+ with(:headers => headers("content-type" => "text/html")).
24
+ to_return(:status => 200)
25
25
  end
26
26
 
27
27
  it { subject.head.code.should == "200" }
@@ -29,9 +29,9 @@ describe Resto::Request::Factory do
29
29
 
30
30
  describe "#get" do
31
31
  before do
32
- stub_request(:get, "sr.se:8080/dashboard")
33
- .with(:headers => headers("content-type" => "text/html"))
34
- .to_return(:status => 200)
32
+ stub_request(:get, "sr.se:8080/dashboard").
33
+ with(:headers => headers("content-type" => "text/html")).
34
+ to_return(:status => 200)
35
35
  end
36
36
 
37
37
  it { subject.get.code.should == "200" }
@@ -39,10 +39,10 @@ describe Resto::Request::Factory do
39
39
 
40
40
  describe "#post" do
41
41
  before do
42
- stub_request(:post, "sr.se:8080/dashboard")
43
- .with(:headers => headers("content-type" => "text/html"),
44
- :body => 'Anders')
45
- .to_return(:status => 200)
42
+ stub_request(:post, "sr.se:8080/dashboard").
43
+ with(:headers => headers("content-type" => "text/html"),
44
+ :body => 'Anders').
45
+ to_return(:status => 200)
46
46
  end
47
47
 
48
48
  it { subject.post.code.should == "200" }
@@ -50,10 +50,10 @@ describe Resto::Request::Factory do
50
50
 
51
51
  describe "#put" do
52
52
  before do
53
- stub_request(:put, "sr.se:8080/dashboard")
54
- .with(:headers => headers("content-type" => "text/html"),
55
- :body => 'Anders')
56
- .to_return(:status => 200)
53
+ stub_request(:put, "sr.se:8080/dashboard").
54
+ with(:headers => headers("content-type" => "text/html"),
55
+ :body => 'Anders').
56
+ to_return(:status => 200)
57
57
  end
58
58
 
59
59
  it { subject.put.code.should == "200" }
@@ -61,9 +61,9 @@ describe Resto::Request::Factory do
61
61
 
62
62
  describe "#delete" do
63
63
  before do
64
- stub_request(:delete, "sr.se:8080/dashboard")
65
- .with(:headers => headers("content-type" => "text/html"))
66
- .to_return(:status => 200)
64
+ stub_request(:delete, "sr.se:8080/dashboard").
65
+ with(:headers => headers("content-type" => "text/html")).
66
+ to_return(:status => 200)
67
67
  end
68
68
 
69
69
  it { subject.delete.code.should == "200" }
@@ -72,19 +72,19 @@ describe Resto::Request::Factory do
72
72
 
73
73
  context "other settings" do
74
74
  subject do
75
- factory.new(Resto::Request::Base.new
76
- .host('sr.se')
77
- .path('/friends_timeline')
78
- .body('Anders')
79
- .headers('content-type' => 'application/xml')
80
- .basic_auth(:username => 'developer', :password => 'secret'))
75
+ factory.new(Resto::Request::Base.new.
76
+ host('sr.se').
77
+ path('/friends_timeline').
78
+ body('Anders').
79
+ headers('content-type' => 'application/xml').
80
+ basic_auth(:username => 'developer', :password => 'secret'))
81
81
  end
82
82
 
83
83
  describe "#head" do
84
84
  before do
85
- stub_request(:head, "developer:secret@sr.se/friends_timeline")
86
- .with(:headers => headers("content-type" => "application/xml"))
87
- .to_return(:status => 200)
85
+ stub_request(:head, "developer:secret@sr.se/friends_timeline").
86
+ with(:headers => headers("content-type" => "application/xml")).
87
+ to_return(:status => 200)
88
88
  end
89
89
 
90
90
  it { subject.head.code.should == "200" }
@@ -92,9 +92,9 @@ describe Resto::Request::Factory do
92
92
 
93
93
  describe "#get" do
94
94
  before do
95
- stub_request(:get, "developer:secret@sr.se/friends_timeline")
96
- .with(:headers => headers("content-type" => "application/xml"))
97
- .to_return(:status => 200)
95
+ stub_request(:get, "developer:secret@sr.se/friends_timeline").
96
+ with(:headers => headers("content-type" => "application/xml")).
97
+ to_return(:status => 200)
98
98
  end
99
99
 
100
100
  it { subject.get.code.should == "200" }
@@ -102,10 +102,10 @@ describe Resto::Request::Factory do
102
102
 
103
103
  describe "#post" do
104
104
  before do
105
- stub_request(:post, "developer:secret@sr.se/friends_timeline")
106
- .with(:headers => headers("content-type" => "application/xml"),
107
- :body => 'Anders')
108
- .to_return(:status => 200)
105
+ stub_request(:post, "developer:secret@sr.se/friends_timeline").
106
+ with(:headers => headers("content-type" => "application/xml"),
107
+ :body => 'Anders').
108
+ to_return(:status => 200)
109
109
  end
110
110
 
111
111
  it { subject.post.code.should == "200" }
data/spec/resto_spec.rb CHANGED
@@ -40,7 +40,7 @@ describe Resto do
40
40
  end
41
41
 
42
42
  let(:body) do
43
- { :subscription => attributes.merge({}).keep_if { |k, _| k != :id } }
43
+ { :subscription => attributes.merge({}).reject { |k, _| k == :id } }
44
44
  end
45
45
 
46
46
  let(:response) do
@@ -50,10 +50,10 @@ describe Resto do
50
50
  describe ".all" do
51
51
  before do
52
52
  stub_request(:get,
53
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions.json")
54
- .with(:headers => headers('accept' => 'application/json, */*',
55
- 'content-type' => 'application/json'))
56
- .to_return(:status => 200, :body => [response].to_json)
53
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions.json").
54
+ with(:headers => headers('accept' => 'application/json, */*',
55
+ 'content-type' => 'application/json')).
56
+ to_return(:status => 200, :body => [response].to_json)
57
57
  end
58
58
 
59
59
  subject { Subscription.all.first }
@@ -70,10 +70,10 @@ describe Resto do
70
70
  describe ".get(id)" do
71
71
  before do
72
72
  stub_request(:get,
73
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
74
- .with(:headers => headers('accept' => 'application/json, */*',
75
- 'content-type' => 'application/json'))
76
- .to_return(:status => 200, :body => response.to_json)
73
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
74
+ with(:headers => headers('accept' => 'application/json, */*',
75
+ 'content-type' => 'application/json')).
76
+ to_return(:status => 200, :body => response.to_json)
77
77
  end
78
78
 
79
79
  subject { Subscription.get(415520) }
@@ -90,10 +90,10 @@ describe Resto do
90
90
  describe "#get" do
91
91
  before do
92
92
  stub_request(:get,
93
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
94
- .with(:headers => headers('accept' => 'application/json, */*',
95
- 'content-type' => 'application/json'))
96
- .to_return(:status => 200, :body => response.to_json)
93
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
94
+ with(:headers => headers('accept' => 'application/json, */*',
95
+ 'content-type' => 'application/json')).
96
+ to_return(:status => 200, :body => response.to_json)
97
97
  end
98
98
 
99
99
  subject { Subscription.new(attributes).get }
@@ -110,10 +110,10 @@ describe Resto do
110
110
  describe "#reload" do
111
111
  before do
112
112
  stub_request(:get,
113
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
114
- .with(:headers => headers('accept' => 'application/json, */*',
115
- 'content-type' => 'application/json'))
116
- .to_return(:status => 200, :body => response.to_json)
113
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
114
+ with(:headers => headers('accept' => 'application/json, */*',
115
+ 'content-type' => 'application/json')).
116
+ to_return(:status => 200, :body => response.to_json)
117
117
  end
118
118
 
119
119
  subject { Subscription.new(attributes).reload }
@@ -129,12 +129,16 @@ describe Resto do
129
129
 
130
130
  describe ".post(attributes)" do
131
131
  before do
132
+ # Ruby < 1.9 doesn't preserve key insert order => webmock stub of body
133
+ # request doesn't match
134
+ content = {}
135
+ content[:body] = body.to_json if RUBY_VERSION >= '1.9.1'
136
+ content[:headers] = headers('accept' => 'application/json, */*',
137
+ 'content-type' => 'application/json')
132
138
  stub_request(:post,
133
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions.json")
134
- .with(:headers => headers('accept' => 'application/json, */*',
135
- 'content-type' => 'application/json'),
136
- :body => body.to_json)
137
- .to_return(:status => 201, :body => response.to_json)
139
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions.json").
140
+ with(content).
141
+ to_return(:status => 201, :body => response.to_json)
138
142
  end
139
143
 
140
144
  subject { Subscription.post(attributes) }
@@ -150,12 +154,17 @@ describe Resto do
150
154
 
151
155
  describe ".put(attributes)" do
152
156
  before do
157
+ # Ruby < 1.9 doesn't preserve key insert order => webmock stub of body
158
+ # request doesn't match
159
+ content = {}
160
+ content[:body] = body.to_json if RUBY_VERSION >= '1.9.1'
161
+ content[:headers] = headers('accept' => 'application/json, */*',
162
+ 'content-type' => 'application/json')
163
+
153
164
  stub_request(:put,
154
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
155
- .with(:headers => headers('accept' => 'application/json, */*',
156
- 'content-type' => 'application/json'),
157
- :body => body.to_json)
158
- .to_return(:status => 200, :body => response.to_json)
165
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
166
+ with(content).
167
+ to_return(:status => 200, :body => response.to_json)
159
168
  end
160
169
 
161
170
  subject { Subscription.put(attributes) }
@@ -169,14 +178,19 @@ describe Resto do
169
178
  it { should be_valid }
170
179
  end
171
180
 
172
- describe "#put" do
181
+ describe "#put(attributes)" do
173
182
  before do
183
+ # Ruby < 1.9 doesn't preserve key insert order => webmock stub of body
184
+ # request doesn't match
185
+ content = {}
186
+ content[:body] = body.to_json if RUBY_VERSION >= '1.9.1'
187
+ content[:headers] = headers('accept' => 'application/json, */*',
188
+ 'content-type' => 'application/json')
189
+
174
190
  stub_request(:put,
175
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
176
- .with(:headers => headers('accept' => 'application/json, */*',
177
- 'content-type' => 'application/json'),
178
- :body => body.to_json)
179
- .to_return(:status => 200, :body => response.to_json)
191
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
192
+ with(content).
193
+ to_return(:status => 200, :body => response.to_json)
180
194
  end
181
195
 
182
196
  subject { Subscription.new(attributes).put }
@@ -193,10 +207,10 @@ describe Resto do
193
207
  describe ".delete(id)" do
194
208
  before do
195
209
  stub_request(:delete,
196
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
197
- .with(:headers => headers('accept' => 'application/json, */*',
198
- 'content-type' => 'application/json'))
199
- .to_return(:status => 200)
210
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
211
+ with(:headers => headers('accept' => 'application/json, */*',
212
+ 'content-type' => 'application/json')).
213
+ to_return(:status => 200)
200
214
  end
201
215
 
202
216
  subject { Subscription.delete(415520) }
@@ -208,10 +222,10 @@ describe Resto do
208
222
  describe "#delete" do
209
223
  before do
210
224
  stub_request(:delete,
211
- "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json")
212
- .with(:headers => headers('accept' => 'application/json, */*',
213
- 'content-type' => 'application/json'))
214
- .to_return(:status => 200)
225
+ "https://EyphE_t:x@dns-parrot.chargify.com/subscriptions/415520.json").
226
+ with(:headers => headers('accept' => 'application/json, */*',
227
+ 'content-type' => 'application/json')).
228
+ to_return(:status => 200)
215
229
  end
216
230
 
217
231
  subject { Subscription.new(attributes).delete }
@@ -246,8 +260,8 @@ describe Resto do
246
260
  property :id, Integer
247
261
  property :title, String
248
262
  property :body, String, :remote_name => 'a_bad_body_name' do
249
- validate_presence .if { |user| user.title.to_s.size < 3 }
250
- .message 'must be present'
263
+ validate_presence .if { |user| user.title.to_s.size < 3 } .
264
+ message 'must be present'
251
265
  end
252
266
 
253
267
  resto_request do
@@ -268,9 +282,9 @@ describe Resto do
268
282
 
269
283
  describe ".get(id)" do
270
284
  let(:request) do
271
- stub_request(:get, "http://api.bit.ly/v3/users/200")
272
- .with(:headers => headers('accept'=>'application/json, */*',
273
- 'content-type'=>'application/json'))
285
+ stub_request(:get, "http://api.bit.ly/v3/users/200").
286
+ with(:headers => headers('accept'=>'application/json, */*',
287
+ 'content-type'=>'application/json'))
274
288
  end
275
289
 
276
290
  subject { RestUser.get(200) }
@@ -323,10 +337,10 @@ describe Resto do
323
337
 
324
338
  describe ".all" do
325
339
  before do
326
- stub_request(:get, "http://api.bit.ly/v3/articles")
327
- .with(:headers => headers('accept'=>'application/json, */*',
328
- 'content-type'=>'application/json'))
329
- .to_return(:status => 200)
340
+ stub_request(:get, "http://api.bit.ly/v3/articles").
341
+ with(:headers => headers('accept'=>'application/json, */*',
342
+ 'content-type'=>'application/json')).
343
+ to_return(:status => 200)
330
344
  end
331
345
 
332
346
  it { RestArticle.all.code.should == "200" }
@@ -334,10 +348,10 @@ describe Resto do
334
348
 
335
349
  describe ".all('tag' => 'resto')" do
336
350
  before do
337
- stub_request(:get, "http://api.bit.ly/v3/articles?tag=resto")
338
- .with(:headers => headers('accept'=>'application/json, */*',
339
- 'content-type'=>'application/json'))
340
- .to_return(:status => 200)
351
+ stub_request(:get, "http://api.bit.ly/v3/articles?tag=resto").
352
+ with(:headers => headers('accept'=>'application/json, */*',
353
+ 'content-type'=>'application/json')).
354
+ to_return(:status => 200)
341
355
  end
342
356
 
343
357
  it { RestArticle.all('tag' => 'resto').code.should == "200" }
@@ -345,10 +359,10 @@ describe Resto do
345
359
 
346
360
  describe ".head" do
347
361
  before do
348
- stub_request(:head, "http://api.bit.ly/v3/articles")
349
- .with(:headers => headers('accept'=>'application/json, */*',
350
- 'content-type'=>'application/json'))
351
- .to_return(:status => 200)
362
+ stub_request(:head, "http://api.bit.ly/v3/articles").
363
+ with(:headers => headers('accept'=>'application/json, */*',
364
+ 'content-type'=>'application/json')).
365
+ to_return(:status => 200)
352
366
  end
353
367
 
354
368
  it { RestArticle.head.code.should == "200" }
@@ -356,10 +370,10 @@ describe Resto do
356
370
 
357
371
  describe ".get(200)" do
358
372
  before do
359
- stub_request(:get, "http://api.bit.ly/v3/articles/200")
360
- .with(:headers => headers('accept'=>'application/json, */*',
361
- 'content-type'=>'application/json'))
362
- .to_return(:status => 200)
373
+ stub_request(:get, "http://api.bit.ly/v3/articles/200").
374
+ with(:headers => headers('accept'=>'application/json, */*',
375
+ 'content-type'=>'application/json')).
376
+ to_return(:status => 200)
363
377
  end
364
378
 
365
379
  it { RestArticle.get(200).code.should == "200" }
@@ -367,11 +381,11 @@ describe Resto do
367
381
 
368
382
  describe ".post(:author => 'Anders')" do
369
383
  before do
370
- stub_request(:post, "http://api.bit.ly/v3/articles")
371
- .with(:body => { "author" => "Anders"}.to_json,
372
- :headers => headers('accept'=>'application/json, */*',
373
- 'content-type'=>'application/json'))
374
- .to_return(:status => 200)
384
+ stub_request(:post, "http://api.bit.ly/v3/articles").
385
+ with(:body => { "author" => "Anders"}.to_json,
386
+ :headers => headers('accept'=>'application/json, */*',
387
+ 'content-type'=>'application/json')).
388
+ to_return(:status => 200)
375
389
  end
376
390
 
377
391
  it { RestArticle.post(:author => 'Anders').code.should == "200" }
@@ -379,11 +393,11 @@ describe Resto do
379
393
 
380
394
  describe ".put(:author => 'Anders')" do
381
395
  before do
382
- stub_request(:put, "http://api.bit.ly/v3/articles")
383
- .with(:body => { "author"=> "Anders"}.to_json,
384
- :headers => headers('accept'=>'application/json, */*',
385
- 'content-type'=>'application/json'))
386
- .to_return(:status => 200)
396
+ stub_request(:put, "http://api.bit.ly/v3/articles").
397
+ with(:body => { "author"=> "Anders"}.to_json,
398
+ :headers => headers('accept'=>'application/json, */*',
399
+ 'content-type'=>'application/json')).
400
+ to_return(:status => 200)
387
401
  end
388
402
 
389
403
  it { RestArticle.put(:author => 'Anders').code.should == "200" }
@@ -391,10 +405,10 @@ describe Resto do
391
405
 
392
406
  describe ".delete(400)" do
393
407
  before do
394
- stub_request(:delete, "http://api.bit.ly/v3/articles/400")
395
- .with(:headers => headers('accept'=>'application/json, */*',
396
- 'content-type'=>'application/json'))
397
- .to_return(:status => 200)
408
+ stub_request(:delete, "http://api.bit.ly/v3/articles/400").
409
+ with(:headers => headers('accept'=>'application/json, */*',
410
+ 'content-type'=>'application/json')).
411
+ to_return(:status => 200)
398
412
  end
399
413
 
400
414
  it { RestArticle.delete(400).code.should == "200" }
@@ -415,10 +429,10 @@ describe Resto do
415
429
 
416
430
  describe ".all" do
417
431
  before do
418
- stub_request(:get, "http://api.bit.ly/v3/articles.json")
419
- .with(:headers => headers('accept'=>'application/json, */*',
420
- 'content-type'=>'application/json'))
421
- .to_return(:status => 200)
432
+ stub_request(:get, "http://api.bit.ly/v3/articles.json").
433
+ with(:headers => headers('accept'=>'application/json, */*',
434
+ 'content-type'=>'application/json')).
435
+ to_return(:status => 200)
422
436
  end
423
437
 
424
438
  it { RestArticleWithExtension.all.code.should == "200" }
@@ -426,10 +440,10 @@ describe Resto do
426
440
 
427
441
  describe ".all('tag' => 'resto')" do
428
442
  before do
429
- stub_request(:get, "http://api.bit.ly/v3/articles.json?tag=resto")
430
- .with(:headers => headers('accept'=>'application/json, */*',
431
- 'content-type'=>'application/json'))
432
- .to_return(:status => 200)
443
+ stub_request(:get, "http://api.bit.ly/v3/articles.json?tag=resto").
444
+ with(:headers => headers('accept'=>'application/json, */*',
445
+ 'content-type'=>'application/json')).
446
+ to_return(:status => 200)
433
447
  end
434
448
 
435
449
  it { RestArticleWithExtension.all('tag' => 'resto').code.should == "200" }
@@ -437,10 +451,10 @@ describe Resto do
437
451
 
438
452
  describe ".head" do
439
453
  before do
440
- stub_request(:head, "http://api.bit.ly/v3/articles.json")
441
- .with(:headers => headers('accept'=>'application/json, */*',
442
- 'content-type'=>'application/json'))
443
- .to_return(:status => 200)
454
+ stub_request(:head, "http://api.bit.ly/v3/articles.json").
455
+ with(:headers => headers('accept'=>'application/json, */*',
456
+ 'content-type'=>'application/json')).
457
+ to_return(:status => 200)
444
458
  end
445
459
 
446
460
  it { RestArticleWithExtension.head.code.should == "200" }
@@ -448,10 +462,10 @@ describe Resto do
448
462
 
449
463
  describe ".get(200)" do
450
464
  before do
451
- stub_request(:get, "http://api.bit.ly/v3/articles/200.json")
452
- .with(:headers => headers('accept'=>'application/json, */*',
453
- 'content-type'=>'application/json'))
454
- .to_return(:status => 200)
465
+ stub_request(:get, "http://api.bit.ly/v3/articles/200.json").
466
+ with(:headers => headers('accept'=>'application/json, */*',
467
+ 'content-type'=>'application/json')).
468
+ to_return(:status => 200)
455
469
  end
456
470
 
457
471
  it { RestArticleWithExtension.get(200).code.should == "200" }
@@ -459,11 +473,11 @@ describe Resto do
459
473
 
460
474
  describe ".post(:author => 'Anders')" do
461
475
  before do
462
- stub_request(:post, "http://api.bit.ly/v3/articles.json")
463
- .with(:body => { "author" => "As" }.to_json,
464
- :headers => headers('accept'=>'application/json, */*',
465
- 'content-type'=>'application/json'))
466
- .to_return(:status => 200)
476
+ stub_request(:post, "http://api.bit.ly/v3/articles.json").
477
+ with(:body => { "author" => "As" }.to_json,
478
+ :headers => headers('accept'=>'application/json, */*',
479
+ 'content-type'=>'application/json')).
480
+ to_return(:status => 200)
467
481
  end
468
482
 
469
483
  it { RestArticleWithExtension.post(:author => 'As').code.should == "200" }
@@ -471,11 +485,11 @@ describe Resto do
471
485
 
472
486
  describe ".put(:author => 'Anders')" do
473
487
  before do
474
- stub_request(:put, "http://api.bit.ly/v3/articles.json")
475
- .with(:body => { "author" => "An" }.to_json,
476
- :headers => headers('accept'=>'application/json, */*',
477
- 'content-type'=>'application/json'))
478
- .to_return(:status => 200)
488
+ stub_request(:put, "http://api.bit.ly/v3/articles.json").
489
+ with(:body => { "author" => "An" }.to_json,
490
+ :headers => headers('accept'=>'application/json, */*',
491
+ 'content-type'=>'application/json')).
492
+ to_return(:status => 200)
479
493
  end
480
494
 
481
495
  it { RestArticleWithExtension.put(:author => 'An').code.should == "200" }
@@ -483,10 +497,10 @@ describe Resto do
483
497
 
484
498
  describe ".delete(400)" do
485
499
  before do
486
- stub_request(:delete, "http://api.bit.ly/v3/articles/400.json")
487
- .with(:headers => headers('accept'=>'application/json, */*',
488
- 'content-type'=>'application/json'))
489
- .to_return(:status => 200)
500
+ stub_request(:delete, "http://api.bit.ly/v3/articles/400.json").
501
+ with(:headers => headers('accept'=>'application/json, */*',
502
+ 'content-type'=>'application/json')).
503
+ to_return(:status => 200)
490
504
  end
491
505
 
492
506
  it { RestArticleWithExtension.delete(400).code.should == "200" }
@@ -509,9 +523,9 @@ describe Resto do
509
523
 
510
524
  describe ".all()" do
511
525
  before do
512
- stub_request(:get, "http://bit.ly/v3?format=json&longUrl=ll")
513
- .with(:headers => headers("content-type" => "text/html"))
514
- .to_return(:status => 200)
526
+ stub_request(:get, "http://bit.ly/v3?format=json&longUrl=ll").
527
+ with(:headers => headers("content-type" => "text/html")).
528
+ to_return(:status => 200)
515
529
  end
516
530
 
517
531
  it { Bitly.all.code.should == "200" }
@@ -519,9 +533,9 @@ describe Resto do
519
533
 
520
534
  describe ".all('shortUrl' => short)" do
521
535
  before do
522
- stub_request(:get, "http://bit.ly/v3?format=json&shortUrl=short")
523
- .with(:headers => headers("content-type" => "text/html"))
524
- .to_return(:status => 200)
536
+ stub_request(:get, "http://bit.ly/v3?format=json&shortUrl=short").
537
+ with(:headers => headers("content-type" => "text/html")).
538
+ to_return(:status => 200)
525
539
  end
526
540
 
527
541
  it { Bitly.all('shortUrl' => 'short').code.should == "200" }
data/spec/spec_helper.rb CHANGED
@@ -15,6 +15,9 @@ RSpec.configure do |c|
15
15
  c.mock_with :rspec
16
16
  c.include WebMock::API
17
17
  c.fail_fast = true
18
+ c.filter_run_excluding :ruby => lambda {|version|
19
+ !(RUBY_VERSION.to_s =~ /^#{version.to_s}/)
20
+ }
18
21
  end
19
22
 
20
23
  # Helper methods
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resto
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease:
5
- version: 0.0.7
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 8
10
+ version: 0.0.8
6
11
  platform: ruby
7
12
  authors:
8
13
  - "Anders T\xC3\xB6rnqvist"
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-05-15 00:00:00 Z
18
+ date: 2011-05-16 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: yajl-ruby
@@ -20,6 +25,11 @@ dependencies:
20
25
  requirements:
21
26
  - - "="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 59
29
+ segments:
30
+ - 0
31
+ - 8
32
+ - 2
23
33
  version: 0.8.2
24
34
  type: :runtime
25
35
  version_requirements: *id001
@@ -31,6 +41,11 @@ dependencies:
31
41
  requirements:
32
42
  - - ">="
33
43
  - !ruby/object:Gem::Version
44
+ hash: 15
45
+ segments:
46
+ - 1
47
+ - 4
48
+ - 4
34
49
  version: 1.4.4
35
50
  type: :runtime
36
51
  version_requirements: *id002
@@ -42,7 +57,12 @@ dependencies:
42
57
  requirements:
43
58
  - - ">="
44
59
  - !ruby/object:Gem::Version
45
- version: 1.0.11
60
+ hash: 13
61
+ segments:
62
+ - 1
63
+ - 0
64
+ - 13
65
+ version: 1.0.13
46
66
  type: :development
47
67
  version_requirements: *id003
48
68
  - !ruby/object:Gem::Dependency
@@ -53,7 +73,12 @@ dependencies:
53
73
  requirements:
54
74
  - - ">="
55
75
  - !ruby/object:Gem::Version
56
- version: 2.5.0
76
+ hash: 23
77
+ segments:
78
+ - 2
79
+ - 6
80
+ - 0
81
+ version: 2.6.0
57
82
  type: :development
58
83
  version_requirements: *id004
59
84
  - !ruby/object:Gem::Dependency
@@ -64,6 +89,11 @@ dependencies:
64
89
  requirements:
65
90
  - - ">="
66
91
  - !ruby/object:Gem::Version
92
+ hash: 23
93
+ segments:
94
+ - 0
95
+ - 0
96
+ - 4
67
97
  version: 0.0.4
68
98
  type: :development
69
99
  version_requirements: *id005
@@ -75,6 +105,11 @@ dependencies:
75
105
  requirements:
76
106
  - - ">="
77
107
  - !ruby/object:Gem::Version
108
+ hash: 11
109
+ segments:
110
+ - 1
111
+ - 6
112
+ - 2
78
113
  version: 1.6.2
79
114
  type: :development
80
115
  version_requirements: *id006
@@ -86,6 +121,11 @@ dependencies:
86
121
  requirements:
87
122
  - - ">="
88
123
  - !ruby/object:Gem::Version
124
+ hash: 59
125
+ segments:
126
+ - 0
127
+ - 8
128
+ - 2
89
129
  version: 0.8.2
90
130
  type: :development
91
131
  version_requirements: *id007
@@ -97,6 +137,9 @@ dependencies:
97
137
  requirements:
98
138
  - - ">="
99
139
  - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
100
143
  version: "0"
101
144
  type: :development
102
145
  version_requirements: *id008
@@ -108,6 +151,9 @@ dependencies:
108
151
  requirements:
109
152
  - - ">="
110
153
  - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
111
157
  version: "0"
112
158
  type: :development
113
159
  version_requirements: *id009
@@ -119,6 +165,9 @@ dependencies:
119
165
  requirements:
120
166
  - - ">="
121
167
  - !ruby/object:Gem::Version
168
+ hash: 3
169
+ segments:
170
+ - 0
122
171
  version: "0"
123
172
  type: :development
124
173
  version_requirements: *id010
@@ -130,6 +179,9 @@ dependencies:
130
179
  requirements:
131
180
  - - ">="
132
181
  - !ruby/object:Gem::Version
182
+ hash: 3
183
+ segments:
184
+ - 0
133
185
  version: "0"
134
186
  type: :development
135
187
  version_requirements: *id011
@@ -202,17 +254,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
254
  requirements:
203
255
  - - ">="
204
256
  - !ruby/object:Gem::Version
257
+ hash: 57
258
+ segments:
259
+ - 1
260
+ - 8
261
+ - 7
205
262
  version: 1.8.7
206
263
  required_rubygems_version: !ruby/object:Gem::Requirement
207
264
  none: false
208
265
  requirements:
209
266
  - - ">="
210
267
  - !ruby/object:Gem::Version
268
+ hash: 23
269
+ segments:
270
+ - 1
271
+ - 3
272
+ - 6
211
273
  version: 1.3.6
212
274
  requirements: []
213
275
 
214
276
  rubyforge_project: resto
215
- rubygems_version: 1.7.2
277
+ rubygems_version: 1.8.2
216
278
  signing_key:
217
279
  specification_version: 3
218
280
  summary: Restful Web Service