weary 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.3.0
data/examples/status.rb CHANGED
@@ -13,5 +13,5 @@ class Status
13
13
  end
14
14
 
15
15
  toots = Status.new
16
- recent_toot = toots.user_timeline(:id => "markwunsch", :count => 1).parse
17
- puts "@" + recent_toot[0]["user"]["screen_name"] + ": " + "\"#{recent_toot[0]['text']}\""
16
+ recent_toot = toots.user_timeline(:id => "markwunsch")[0]
17
+ puts "@" + recent_toot["user"]["screen_name"] + ": " + "\"#{recent_toot['text']}\""
data/lib/weary.rb CHANGED
@@ -76,8 +76,8 @@ module Weary
76
76
  #
77
77
  # Methods that are understood are:
78
78
  # [<tt>via</tt>] Get, Post, etc. Defaults to a GET request
79
- # [<tt>with</tt>] An array of parameters that will be passed to the body or query of the request.
80
- # [<tt>requires</tt>] Members of <tt>:with</tt> that are required by the resource.
79
+ # [<tt>with</tt>] An array of parameters that will be passed to the body or query of the request. If you pass a hash, it will define default <tt>values</tt> for params <tt>keys</tt>
80
+ # [<tt>requires</tt>] Array of members of <tt>:with</tt> that are required by the resource.
81
81
  # [<tt>authenticates</tt>] Boolean value; does the resource require authentication?
82
82
  # [<tt>url</tt>] The url of the resource. You can use the same flags as #construct_url
83
83
  # [<tt>format</tt>] The format you would like to request. Defaults to json
@@ -127,7 +127,7 @@ module Weary
127
127
  if resource.authenticates?
128
128
  raise StandardError, "Can not authenticate unless username and password are defined" unless (@username && @password)
129
129
  end
130
- @resources ||= []
130
+ @resources ||= []
131
131
  @resources << resource.to_hash
132
132
  craft_methods(resource)
133
133
  return resource.to_hash
@@ -139,15 +139,34 @@ module Weary
139
139
  options ||= {}
140
140
  url = "#{resource.url}"
141
141
  }
142
- unless resource.requires.empty?
143
- resource.requires.each do |required|
144
- code << %Q{raise ArgumentError, "This resource requires parameter: ':#{required}'" unless params.has_key?(:#{required}) \n}
142
+ if resource.with.is_a?(Hash)
143
+ hash_string = ""
144
+ resource.with.each_pair {|k,v| hash_string << ":#{k} => '#{v}',"}
145
+ code << %Q{
146
+ params = {#{hash_string.chop}}.delete_if {|key,value| value.empty? }.merge(params)
147
+ }
148
+ end
149
+ unless resource.requires.nil?
150
+ if resource.requires.is_a?(Array)
151
+ resource.requires.each do |required|
152
+ code << %Q{ raise ArgumentError, "This resource requires parameter: ':#{required}'" unless params.has_key?(:#{required}) \n}
153
+ end
154
+ else
155
+ resource.requires.each_key do |required|
156
+ code << %Q{ raise ArgumentError, "This resource requires parameter: ':#{required}'" unless params.has_key?(:#{required}) \n}
157
+ end
145
158
  end
146
159
  end
147
160
  unless resource.with.empty?
148
- with = %Q{[#{resource.with.collect {|x| ":#{x}"}.join(',')}]}
149
- code << %Q{unnecessary = params.keys - #{with} \n}
150
- code << %Q{unnecessary.each { |x| params.delete(x) } \n}
161
+ if resource.with.is_a?(Array)
162
+ with = %Q{[#{resource.with.collect {|x| ":#{x}"}.join(',')}]}
163
+ else
164
+ with = %Q{[#{resource.with.keys.collect {|x| ":#{x}"}.join(',')}]}
165
+ end
166
+ code << %Q{
167
+ unnecessary = params.keys - #{with}
168
+ unnecessary.each { |x| params.delete(x) }
169
+ }
151
170
  end
152
171
  if resource.via == (:post || :put)
153
172
  code << %Q{options[:body] = params unless params.empty? \n}
@@ -50,16 +50,26 @@ module Weary
50
50
  end
51
51
 
52
52
  def with=(params)
53
- unless @requires.nil?
54
- @with = params.collect {|x| x.to_sym} | @requires
53
+ if params.is_a?(Hash)
54
+ @requires.each { |key| params[key] = nil unless params.has_key?(key) }
55
+ @with = params
55
56
  else
56
- @with = params.collect {|x| x.to_sym}
57
+ unless @requires.nil?
58
+ @with = params.collect {|x| x.to_sym} | @requires
59
+ else
60
+ @with = params.collect {|x| x.to_sym}
61
+ end
57
62
  end
58
63
  end
59
64
 
60
- def requires=(params)
61
- @with = @with | params.collect {|x| x.to_sym}
62
- @requires = params.collect {|x| x.to_sym}
65
+ def requires=(params)
66
+ if @with.is_a?(Hash)
67
+ params.each { |key| @with[key] = nil unless @with.has_key?(key) }
68
+ @requires = params.collect {|x| x.to_sym}
69
+ else
70
+ @with = @with | params.collect {|x| x.to_sym}
71
+ @requires = params.collect {|x| x.to_sym}
72
+ end
63
73
  end
64
74
 
65
75
  def url=(pattern)
@@ -19,7 +19,7 @@ describe Weary::Request do
19
19
 
20
20
  it "should perform the request and retrieve a response" do
21
21
  test = Weary::Request.new("http://foo.bar")
22
- method = test.method
22
+ method = test.method
23
23
  response = Weary::Response.new(mock_response(method, 301, {'Location' => 'http://bar.foo'}), method)
24
24
  test.stub!(:perform).and_return(response)
25
25
  test.perform.code.should == 301
@@ -8,6 +8,7 @@ describe Weary::Resource do
8
8
  it 'defaults to a GET request' do
9
9
  @test.via.should == :get
10
10
  end
11
+
11
12
  it 'should add requirements to the "with" array' do
12
13
  @test.requires = [:foo, :bar]
13
14
  @test.with.should == [:foo, :bar]
@@ -18,6 +19,15 @@ describe Weary::Resource do
18
19
  @test.with.should == [:foo, :bar]
19
20
  end
20
21
 
22
+ it 'with params could be a hash' do
23
+ @test.with = {:foo => "Foo", :bar => "Bar"}
24
+ @test.with.should == {:foo => "Foo", :bar => "Bar"}
25
+ @test.requires = [:id, :user]
26
+ @test.with.should == {:bar=>"Bar", :user => nil, :foo => "Foo", :id => nil}
27
+ @test.with = [:foo, :bar]
28
+ @test.with.should == [:foo, :bar, :id, :user]
29
+ end
30
+
21
31
  it 'authenticates? should be boolean' do
22
32
  @test.authenticates = "foobar"
23
33
  @test.authenticates?.should == true
data/spec/weary_spec.rb CHANGED
@@ -6,7 +6,7 @@ describe Weary do
6
6
  @test.instance_eval { extend Weary }
7
7
  end
8
8
 
9
- describe 'default domain' do
9
+ describe 'Default Domain' do
10
10
  it 'should be set with a url' do
11
11
  @test.on_domain 'http://twitter.com/'
12
12
  @test.domain.should == 'http://twitter.com/'
@@ -22,7 +22,7 @@ describe Weary do
22
22
  end
23
23
  end
24
24
 
25
- describe 'default format' do
25
+ describe 'Default Format' do
26
26
  it 'can be set' do
27
27
  @test.as_format(:xml)
28
28
  @test.instance_variable_get(:@default_format).should == :xml
@@ -35,7 +35,7 @@ describe Weary do
35
35
  end
36
36
  end
37
37
 
38
- describe 'default url pattern' do
38
+ describe 'Default URL Pattern' do
39
39
  it 'can be set' do
40
40
  @test.construct_url("<domain><resource>.<format>")
41
41
  @test.instance_variable_defined?(:@url_pattern).should == true
@@ -47,7 +47,7 @@ describe Weary do
47
47
  end
48
48
  end
49
49
 
50
- describe "basic authentication credentials" do
50
+ describe "Basic Authentication Credentials" do
51
51
  # i want to change this to be more specific about it being
52
52
  # basic authentication
53
53
  it "should accept a username and password" do
@@ -57,7 +57,20 @@ describe Weary do
57
57
  end
58
58
  end
59
59
 
60
- describe 'resource declaration' do
60
+ describe "Set Headers" do
61
+ it "should be a hash of values to pass in the Request head"
62
+ end
63
+
64
+ describe "Common Request Paramaters" do
65
+ it "should define with params that every resource inherits"
66
+ # #always_with && #always_requires methods will set with/requires in
67
+ # the prepare_resource method of Weary
68
+
69
+ it "should be able to be a hash"
70
+ # new feature of Resources
71
+ end
72
+
73
+ describe 'Resource Declaration' do
61
74
  before do
62
75
  @test.on_domain "http://foobar.com/"
63
76
  end
data/weary.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{weary}
5
- s.version = "0.2.3"
5
+ s.version = "0.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Mark Wunsch"]
9
- s.date = %q{2009-06-15}
9
+ s.date = %q{2009-06-18}
10
10
  s.description = %q{The Weary need REST: a tiny DSL that makes the consumption of RESTful web services simple.}
11
11
  s.email = %q{mark@markwunsch.com}
12
12
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Wunsch
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-15 00:00:00 -04:00
12
+ date: 2009-06-18 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency