flickrrb 2.0 → 2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,8 +1,14 @@
1
1
  = Flickrrb
2
2
 
3
- Flickrrb is a library to access flickr[http://flickr.com] api in a simple way.
4
- It tries to map the methods described in {the official api documentation}[http://www.flickr.com/services/api].
3
+ Flickrrb is a nice library to access the flickr[http://flickr.com] api in a simple way.
4
+ It maps the methods described in {the official api documentation}[http://www.flickr.com/services/api] to ruby
5
+ methods, eg.
5
6
 
7
+ {flickr.people.findByUsername(:username => 'Henry Maddocks')}[http://www.flickr.com/services/api/flickr.people.findByUsername.html]
8
+
9
+ {flickr.photos.getInfo(:photo_id => photo)}[http://www.flickr.com/services/api/flickr.photos.getInfo.html]
10
+
11
+ You can copy from the documentation and paste into your ruby.
6
12
 
7
13
  = Installation
8
14
  gem install flickrrb
@@ -23,5 +29,4 @@ It tries to map the methods described in {the official api documentation}[http:/
23
29
  end
24
30
 
25
31
  == Todo
26
- * Maybe use JSON instead of xml responses.
27
32
  * OAuth.
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'rake/testtask'
2
2
  require 'rake/rdoctask'
3
3
 
4
+ require 'flickrrb'
5
+
4
6
 
5
7
  Rake::TestTask.new do |t|
6
8
  t.pattern = 'test/*.rb'
@@ -11,3 +13,12 @@ RDoc::Task.new do |rd|
11
13
  end
12
14
 
13
15
  task 'default' => ['test']
16
+
17
+
18
+ namespace "flickr" do
19
+
20
+ desc "Get an access token"
21
+ task "authorise" do
22
+ Flickr::OAuthCient.authorize
23
+ end
24
+ end
data/lib/flickrrb.rb CHANGED
@@ -2,7 +2,6 @@ require 'json'
2
2
 
3
3
  require 'net/http'
4
4
  require 'cgi'
5
- require 'rexml/document'
6
5
 
7
6
  class APIException < StandardError; end
8
7
 
@@ -21,15 +20,15 @@ class Flickr
21
20
 
22
21
  def method_missing name, *args
23
22
  unless args.empty? || args.first.class == Hash
24
- @method.clear
25
- raise APIException, "Args must be a hash"
23
+ @method.clear
24
+ fail APIException, "Args must be a hash"
26
25
  end
27
26
 
28
27
  m = FlickrMethod.new(name, args.first)
29
28
  @method << m
30
29
  unless args.empty?
31
30
  p @method if @debug
32
- begin
31
+ begin # FIXME
33
32
  command = build_command
34
33
  @method.clear
35
34
  @flickr_client.request(command)
@@ -141,7 +140,8 @@ class Flickr
141
140
  :location,
142
141
  :geoperms,
143
142
  :urls,
144
- :media].each {|a| attr_accessor a}
143
+ :media,
144
+ :permissions].each {|a| attr_accessor a}
145
145
 
146
146
  def initialize data
147
147
  super
@@ -199,7 +199,7 @@ class Flickr
199
199
  p j if @debug
200
200
  m = j.match(/^jsonFlickrApi\((.+)\)$/)
201
201
 
202
- raise APIException, "Invalid response from Flickr" if m.nil?
202
+ fail APIException, "Invalid response from Flickr" if m.nil?
203
203
 
204
204
  data = JSON.parse m[1]
205
205
 
@@ -210,7 +210,8 @@ class Flickr
210
210
  resp = self.send(k, data)
211
211
  end
212
212
  else
213
- raise APIException, "#{data['code']}: #{data['message']}"
213
+ # FIXME Fail in send
214
+ fail APIException, "#{data['code']}: #{data['message']}"
214
215
  end
215
216
 
216
217
  resp
@@ -220,7 +221,7 @@ class Flickr
220
221
  # This is a bit ugly!
221
222
  code = xml.elements['rsp'].elements['err'].attributes['code']
222
223
  message = xml.elements['rsp'].elements['err'].attributes['msg']
223
- raise APIException, "#{code}: #{message}"
224
+ fail APIException, "#{code}: #{message}"
224
225
  end
225
226
 
226
227
  def stat data
@@ -278,5 +279,62 @@ class Flickr
278
279
  end
279
280
  end
280
281
 
282
+ require 'oauth'
283
+
284
+ class OAuthCient
285
+ def initialize params = {}
286
+ flickr_url = URI.parse "http://api.flickr.com/"
287
+
288
+ consumer = OAuth::Consumer.new(params[:consumer_key], params[:consumer_secret],
289
+ site: "http://api.flickr.com/",
290
+ request_token_path: "/services/oauth/request_token",
291
+ access_token_path: "/services/oauth/access_token",
292
+ authorize_path: "/services/oauth/authorize")
293
+
294
+ access_keys = {oauth_token: params[:access_token],
295
+ oauth_token_secret: params[:access_secret]}
296
+
297
+ @access = OAuth::AccessToken.from_hash(consumer, access_keys)
298
+ end
299
+
300
+ def get path
301
+ @access.get path
302
+ end
303
+
304
+ # def post path, params, headers = {}
305
+ # @access.post path, params, headers
306
+ # end
307
+
308
+ def self.authorize
309
+ print "Enter consumer key: "
310
+ consumer_key = $stdin.gets.chomp
311
+
312
+ print "Enter consumer secret: "
313
+ consumer_secret = $stdin.gets.chomp
314
+
315
+
316
+ consumer = OAuth::Consumer.new(consumer_key, consumer_secret,
317
+ site: 'http://www.flickr.com', # Note www
318
+ request_token_path: "/services/oauth/request_token",
319
+ access_token_path: "/services/oauth/access_token",
320
+ authorize_path: "/services/oauth/authorize")
321
+
322
+ request_token = consumer.get_request_token
323
+ p "\nGo to this url and click 'Authorize' to get the token:"
324
+ p request_token.authorize_url
325
+ print "\nEnter token: "
326
+ token = $stdin.gets.chomp
327
+
328
+ access_token = request_token.get_access_token(:oauth_verifier => token)
329
+
330
+ p "\nAuthorisation complete! Use the following params to access Flickr:\n\n"
331
+ p "consumer_key = '#{consumer.key}'"
332
+ p "consumer_secret = '#{consumer.secret}'"
333
+ p "access_token = '#{access_token.token}'"
334
+ p "access_secret = '#{access_token.secret}'"
335
+ end
336
+
337
+ end
338
+
281
339
  end
282
340
 
@@ -3,8 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + "/test_helper")
3
3
  class Test_Flickr < MiniTest::Unit::TestCase
4
4
  def setup
5
5
  @http_client = MiniTest::Mock.new
6
- api_key = "9d96d3ae6145f12660896ae23b33f949"
7
- @flickr = Flickr.new :api_key => api_key, :debug => false, :http => @http_client
6
+ @flickr = Flickr.new :api_key => "api_key", :debug => false, :http => @http_client
8
7
  end
9
8
 
10
9
  def test_api_key_exception
data/test/groups_test.rb CHANGED
@@ -3,8 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + "/test_helper")
3
3
  class GroupsTest < MiniTest::Unit::TestCase
4
4
  def setup
5
5
  @http_client = MiniTest::Mock.new
6
- api_key = "9d96d3ae6145f12660896ae23b33f949"
7
- @flickr = Flickr.new :api_key => api_key, :debug => false, :http => @http_client
6
+ @flickr = Flickr.new :api_key => "api_key", :debug => false, :http => @http_client
8
7
  end
9
8
 
10
9
  def test_group
data/test/people_test.rb CHANGED
@@ -3,8 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + "/test_helper")
3
3
  class PeopleTest < MiniTest::Unit::TestCase
4
4
  def setup
5
5
  @http_client = MiniTest::Mock.new
6
- api_key = "9d96d3ae6145f12660896ae23b33f949"
7
- @flickr = Flickr.new :api_key => api_key, :debug => false, :http => @http_client
6
+ @flickr = Flickr.new :api_key => "api_key", :debug => false, :http => @http_client
8
7
  end
9
8
 
10
9
  def test_get_info
data/test/photos_test.rb CHANGED
@@ -3,8 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + "/test_helper")
3
3
  class PhotosTest < MiniTest::Unit::TestCase
4
4
  def setup
5
5
  @http_client = MiniTest::Mock.new
6
- api_key = "9d96d3ae6145f12660896ae23b33f949"
7
- @flickr = Flickr.new :api_key => api_key, :debug => false, :http => @http_client
6
+ @flickr = Flickr.new :api_key => "api_key", :debug => false, :http => @http_client
8
7
  end
9
8
 
10
9
  def test_photo
data/test/test_helper.rb CHANGED
@@ -20,16 +20,16 @@ class MiniTest::Unit::TestCase
20
20
  def flickr_commands
21
21
  {
22
22
  :bad_api_key => ["/services/rest/?method=flickr.photos.getInfo&api_key=bad_key&photo_id=1848466274&format=json"],
23
- :bad_args => ["/services/rest/?method=flickr.people.getInfo&api_key=9d96d3ae6145f12660896ae23b33f949&xxxx=12656878%40N06&format=json"],
23
+ :bad_args => ["/services/rest/?method=flickr.people.getInfo&api_key=api_key&xxxx=12656878%40N06&format=json"],
24
24
 
25
- :photos_get_info => ["/services/rest/?method=flickr.photos.getInfo&api_key=9d96d3ae6145f12660896ae23b33f949&photo_id=1848466274&format=json"],
26
- :photos_get_sizes => ["/services/rest/?method=flickr.photos.getSizes&api_key=9d96d3ae6145f12660896ae23b33f949&photo_id=1848466274&format=json"],
25
+ :photos_get_info => ["/services/rest/?method=flickr.photos.getInfo&api_key=api_key&photo_id=1848466274&format=json"],
26
+ :photos_get_sizes => ["/services/rest/?method=flickr.photos.getSizes&api_key=api_key&photo_id=1848466274&format=json"],
27
27
 
28
- :people_get_info => ["/services/rest/?method=flickr.people.getInfo&api_key=9d96d3ae6145f12660896ae23b33f949&user_id=12656878%40N06&format=json"],
29
- :people_get_info_not_found => ["/services/rest/?method=flickr.people.getInfo&api_key=9d96d3ae6145f12660896ae23b33f949&user_id=xxxx&format=json"],
30
- :people_by_user_name => ["/services/rest/?method=flickr.people.findByUsername&api_key=9d96d3ae6145f12660896ae23b33f949&username=Henry+Maddocks&format=json"],
28
+ :people_get_info => ["/services/rest/?method=flickr.people.getInfo&api_key=api_key&user_id=12656878%40N06&format=json"],
29
+ :people_get_info_not_found => ["/services/rest/?method=flickr.people.getInfo&api_key=api_key&user_id=xxxx&format=json"],
30
+ :people_by_user_name => ["/services/rest/?method=flickr.people.findByUsername&api_key=api_key&username=Henry+Maddocks&format=json"],
31
31
 
32
- :groups_pools_get_photos => ["/services/rest/?method=flickr.groups.pools.getPhotos&api_key=9d96d3ae6145f12660896ae23b33f949&user_id=12656878%40N06&group_id=99404851%40N00&format=json"]
32
+ :groups_pools_get_photos => ["/services/rest/?method=flickr.groups.pools.getPhotos&api_key=api_key&user_id=12656878%40N06&group_id=99404851%40N00&format=json"]
33
33
  }
34
34
  end
35
35
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flickrrb
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.0'
4
+ version: '2.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,33 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-22 00:00:00.000000000 +12:00
12
+ date: 2011-09-04 00:00:00.000000000 +12:00
13
13
  default_executable:
14
- dependencies: []
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: oauth
17
+ requirement: &2161887080 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2161887080
26
+ - !ruby/object:Gem::Dependency
27
+ name: simplecov
28
+ requirement: &2161886520 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *2161886520
15
37
  description: A simple interface to the Flickr public API.
16
- email: henry.maddocks@gmail.com
38
+ email: hmaddocks@me.com
17
39
  executables: []
18
40
  extensions: []
19
41
  extra_rdoc_files: []
@@ -28,7 +50,7 @@ files:
28
50
  - test/photos_test.rb
29
51
  - test/test_helper.rb
30
52
  has_rdoc: true
31
- homepage: ''
53
+ homepage: https://github.com/hmaddocks/flickrrb
32
54
  licenses: []
33
55
  post_install_message:
34
56
  rdoc_options: []