sayso-api-client 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -17,6 +17,10 @@ Use the gem.
17
17
 
18
18
  gem install sayso-api-client
19
19
 
20
+ Use in your Gemfile:
21
+
22
+ gem 'sayso-api-client', :require => 'sayso'
23
+
20
24
  == Usage
21
25
 
22
26
  require 'sayso'
data/lib/sayso.rb CHANGED
@@ -3,34 +3,47 @@ require 'crack'
3
3
  require 'active_support/all'
4
4
  #
5
5
  # Example usage:
6
- # sayso = Sayso.new(:consumer_key => 'your_key', :consumer_secret => 'your_secret')
6
+ # sayso = Sayso.new(:consumer_key => 'your_key', :consumer_secret => 'your_secret', :callback = 'http://localhost:3000')
7
7
  # sayso.get("/places/search?what=restaurant&where=antwerpen")
8
8
  # sayso.get("/places/search", :what => 'restaurant', :where => 'antwerpen')
9
9
  # sayso.authorize_url # go here (=> "http://api.sayso.com/api1/oauth/authorize?oauth_token=some_token_hash")
10
10
  # sayso.authorize_access_token('verifier')
11
+ # sayso.get_params # =>
11
12
  # sayso.get("/users/current")
13
+ # sayso.get('/places/cj5C4oyiCr3Ra2aby-7U4a/reviews')
14
+ # review = '<?xml version="1.0" encoding="UTF-8"?><review><rating>2</rating><text>This is my review number 1. It is not so long but states that it works. We can see that everything is ok.</text></review>'
15
+ # sayso.post('/places/cj5C4oyiCr3Ra2aby-7U4a/reviews', review)
12
16
  #
13
17
  class Sayso
14
18
 
15
- attr_accessor :version, :consumer_key, :consumer_secret, :base_url, :callback
19
+ attr_accessor :version, :consumer_key, :consumer_secret, :base_url, :callback, :get_params
16
20
  attr_reader :access_token, :request_token, :response
17
21
 
22
+ # Example:
23
+ # Sayso.new(:consumer_key => 'your_key', :consumer_secret => 'your_secret', :language => 'nl-NL')
24
+ # The language parameter is optional.
18
25
  def initialize(options = {})
19
26
  options = {:version => 1, :base_url => 'http://api.sayso.com', :callback => nil}.merge(options)
27
+
28
+ # The language options is set to the get_params.
29
+ @get_params = {}
30
+ @get_params[:language] = options.delete(:language) if options[:language]
31
+
32
+ # All other options should be set to the related instance variable.
20
33
  options.each do |attr, value|
21
34
  instance_variable_set(:"@#{attr}", value)
22
35
  end
23
36
  self.initialize_access_token
24
37
  end
25
38
 
26
- def initialize_access_token
27
- return @access_token unless @access_token.nil?
39
+ def initialize_access_token(force = false)
40
+ return @access_token if force || @access_token.nil?
28
41
  @consumer = OAuth::Consumer.new(self.consumer_key, self.consumer_secret, {
29
42
  :site => self.base_url,
30
43
  :request_token_path => "/api#{self.version}/oauth/request_token",
31
44
  :authorize_path => "/api#{self.version}/oauth/authorize",
32
45
  :access_token_path => "/api#{self.version}/oauth/access_token" })
33
- @request_token = @consumer.get_request_token(:oauth_callback => "http://localhost:3000")
46
+ @request_token = @consumer.get_request_token(:oauth_callback => callback)
34
47
  # Just make it using the request token (and a user that has given access ?!)
35
48
  @access_token = OAuth::AccessToken.new(@consumer, @request_token.token, @request_token.secret)
36
49
  end
@@ -53,6 +66,7 @@ class Sayso
53
66
  # Access the unparsed response using the response method.
54
67
  # Examples:
55
68
  # get("/places/search?what=restaurant&where=antwerpen")
69
+ # get("/places/search", :what => 'restaurant', :where => 'antwerpen', :base_country => 'BE')
56
70
  def get(path, params = {})
57
71
  path = "/api#{self.version}#{path}"
58
72
  path += "?#{params.to_query}" unless params.blank?
@@ -61,8 +75,13 @@ class Sayso
61
75
  HashWithIndifferentAccess.new(result)
62
76
  end
63
77
 
64
- # TODO
65
- # def post/put
66
- # end
78
+ # Examples:
79
+ # post('/places/:place_id/reviews', :rating => 3, :text => "My review text that should be a certain length.")
80
+ def post(path, params = {})
81
+ path = "/api#{self.version}#{path}"
82
+ @response = @access_token.post(path, params, { 'Accept'=>'application/xml', 'Content-Type' => 'application/xml' })
83
+ result = Crack::XML.parse(@response.body)
84
+ HashWithIndifferentAccess.new(result)
85
+ end
67
86
 
68
87
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = %q{sayso-api-client}
5
- spec.version = '0.1.0'
5
+ spec.version = '0.1.1'
6
6
  spec.platform = Gem::Platform::RUBY
7
7
  spec.description = spec.summary = 'Ruby gem to use the SaySo API (v1).'
8
8
  spec.authors = ['Joost Hietbrink']
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sayso-api-client
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Joost Hietbrink
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-21 00:00:00 +02:00
13
+ date: 2011-07-25 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency