resto 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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