flickraw 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 851e439d2bb948eb0ecbd3a6b2804fe830ead230
4
+ data.tar.gz: 377698252b1f918e76e2f5872828e5d19e0d3f90
5
+ SHA512:
6
+ metadata.gz: acb89952f574296b48e1e1e6415a47baa21c4ec7ebcfbe00a3a96b54ba5a3c2acc326f23f78cd426a1f5f01df6fbd1e7960c8c0966b71e98b2fc622e2f50f752
7
+ data.tar.gz: 3a21201017f86c5a626bdb0d843e1f0005972c137495f9ce8ef622890c955b531f96d303497e8f3230b2c72f469e9757090ef533a634a49ef44d0428a250fb9c
@@ -6,7 +6,7 @@ require 'flickraw'
6
6
  API_KEY=''
7
7
  SHARED_SECRET=''
8
8
  ACCESS_TOKEN=''
9
- ACCESS _SECRET=''
9
+ ACCESS_SECRET=''
10
10
  PHOTO_PATH='photo.jpg'
11
11
 
12
12
  FlickRaw.api_key = API_KEY
@@ -30,11 +30,11 @@ end
30
30
  def callback
31
31
  flickr = FlickRaw::Flickr.new
32
32
 
33
- token = # Retrieve from cache or session etc - see above
33
+ request_token = # Retrieve from cache or session etc - see above
34
34
  oauth_token = params[:oauth_token]
35
35
  oauth_verifier = params[:oauth_verifier]
36
36
 
37
- raw_token = flickr.get_oauth_token(request_token['oauth_token'], request_token['oauth_token_secret'], oauth_verifier)
37
+ raw_token = flickr.get_access_token(request_token['oauth_token'], request_token['oauth_token_secret'], oauth_verifier)
38
38
  # raw_token is a hash like this {"user_nsid"=>"92023420%40N00", "oauth_token_secret"=>"XXXXXX", "username"=>"boncey", "fullname"=>"Darren%20Greaves", "oauth_token"=>"XXXXXX"}
39
39
  # Use URI.unescape on the nsid and name parameters
40
40
 
@@ -1,11 +1,12 @@
1
1
  require 'json'
2
+ require 'flickraw/error'
2
3
  require 'flickraw/oauth'
3
4
  require 'flickraw/request'
4
5
  require 'flickraw/response'
5
6
  require 'flickraw/api'
6
7
 
7
8
  module FlickRaw
8
- VERSION='0.9.6'
9
+ VERSION='0.9.7'
9
10
  USER_AGENT = "FlickRaw/#{VERSION}"
10
11
  end
11
12
 
@@ -24,6 +24,8 @@ module FlickRaw
24
24
  URL_PHOTOSTREAM='http://www.flickr.com/photos/'.freeze
25
25
  URL_SHORT='http://flic.kr/p/'.freeze
26
26
 
27
+ class FlickrAppNotConfigured < Error; end
28
+
27
29
  # Root class of the flickr api hierarchy.
28
30
  class Flickr < Request
29
31
  # Authenticated access token
@@ -35,7 +37,9 @@ module FlickRaw
35
37
  def self.build(methods); methods.each { |m| build_request m } end
36
38
 
37
39
  def initialize # :nodoc:
38
- raise "No API key or secret defined !" if FlickRaw.api_key.nil? or FlickRaw.shared_secret.nil?
40
+ if FlickRaw.api_key.nil? or FlickRaw.shared_secret.nil?
41
+ raise FlickrAppNotConfigured.new("No API key or secret defined!")
42
+ end
39
43
  @oauth_consumer = OAuthClient.new(FlickRaw.api_key, FlickRaw.shared_secret)
40
44
  @oauth_consumer.proxy = FlickRaw.proxy
41
45
  @oauth_consumer.user_agent = USER_AGENT
@@ -49,8 +53,9 @@ module FlickRaw
49
53
  #
50
54
  # Raises FailedResponse if the response status is _failed_.
51
55
  def call(req, args={}, &block)
56
+ oauth_args = args.delete(:oauth) || {}
52
57
  rest_path = FlickRaw.secure ? REST_PATH_SECURE : REST_PATH
53
- http_response = @oauth_consumer.post_form(rest_path, @access_secret, {:oauth_token => @access_token}, build_args(args, req))
58
+ http_response = @oauth_consumer.post_form(rest_path, @access_secret, {:oauth_token => @access_token}.merge(oauth_args), build_args(args, req))
54
59
  process_response(req, http_response.body)
55
60
  end
56
61
 
@@ -132,10 +137,17 @@ module FlickRaw
132
137
  end
133
138
 
134
139
  def upload_flickr(method, file, args={})
140
+ oauth_args = args.delete(:oauth) || {}
135
141
  args = build_args(args)
136
- args['photo'] = open(file, 'rb')
142
+ if file.respond_to? :read
143
+ args['photo'] = file
144
+ else
145
+ args['photo'] = open(file, 'rb')
146
+ close_after = true
147
+ end
137
148
 
138
- http_response = @oauth_consumer.post_multipart(method, @access_secret, {:oauth_token => @access_token}, args)
149
+ http_response = @oauth_consumer.post_multipart(method, @access_secret, {:oauth_token => @access_token}.merge(oauth_args), args)
150
+ args['photo'].close if close_after
139
151
  process_response(method, http_response.body)
140
152
  end
141
153
  end
@@ -0,0 +1,3 @@
1
+ module FlickRaw
2
+ class Error < StandardError; end
3
+ end
@@ -3,8 +3,8 @@ require 'net/https'
3
3
 
4
4
  module FlickRaw
5
5
  class OAuthClient
6
- class UnknownSignatureMethod < StandardError; end
7
- class FailedResponse < StandardError
6
+ class UnknownSignatureMethod < Error; end
7
+ class FailedResponse < Error
8
8
  def initialize(str)
9
9
  @response = OAuthClient.parse_response(str)
10
10
  super(@response['oauth_problem'])
@@ -18,8 +18,8 @@ module FlickRaw
18
18
  end
19
19
 
20
20
  def escape(s)
21
- encode_value(s).gsub(/[^a-zA-Z0-9\-\.\_\~]/) {
22
- $&.unpack("C*").map{|i| sprintf("%%%02X", i) }.join
21
+ encode_value(s).gsub(/[^a-zA-Z0-9\-\.\_\~]/) { |special|
22
+ special.unpack("C*").map{|i| sprintf("%%%02X", i) }.join
23
23
  }
24
24
  end
25
25
 
@@ -100,8 +100,8 @@ module FlickRaw
100
100
  request.body = ''
101
101
  params.each { |k, v|
102
102
  if v.respond_to? :read
103
- basename = File.basename(v.path).to_s if v.respond_to? :path
104
- basename ||= File.basename(v.base_uri).to_s if v.respond_to? :base_uri
103
+ basename = File.basename(v.path.to_s) if v.respond_to? :path
104
+ basename ||= File.basename(v.base_uri.to_s) if v.respond_to? :base_uri
105
105
  basename ||= "unknown"
106
106
  request.body << "--#{boundary}\r\n" <<
107
107
  "Content-Disposition: form-data; name=\"#{OAuthClient.encode_value(k)}\"; filename=\"#{OAuthClient.encode_value(basename)}\"\r\n" <<
@@ -46,7 +46,7 @@ class ResponseList < Response
46
46
  alias length size
47
47
  end
48
48
 
49
- class FailedResponse < StandardError
49
+ class FailedResponse < Error
50
50
  attr_reader :code
51
51
  alias :msg :message
52
52
  def initialize(msg, code, req)
@@ -8,7 +8,7 @@ require 'helper'
8
8
 
9
9
  class Basic < Test::Unit::TestCase
10
10
  def test_request
11
- flickr_objects = %w{activity auth blogs collections commons contacts
11
+ flickr_objects = %w{activity auth blogs cameras collections commons contacts
12
12
  favorites galleries groups interestingness machinetags panda
13
13
  people photos photosets places prefs push reflection stats tags
14
14
  test urls
@@ -33,6 +33,8 @@ class Basic < Test::Unit::TestCase
33
33
  flickr.blogs.getList
34
34
  flickr.blogs.getServices
35
35
  flickr.blogs.postPhoto
36
+ flickr.cameras.getBrandModels
37
+ flickr.cameras.getBrands
36
38
  flickr.collections.getInfo
37
39
  flickr.collections.getTree
38
40
  flickr.commons.getInstitutions
@@ -55,7 +57,18 @@ class Basic < Test::Unit::TestCase
55
57
  flickr.galleries.getListForPhoto
56
58
  flickr.galleries.getPhotos
57
59
  flickr.groups.browse
60
+ flickr.groups.discuss.replies.add
61
+ flickr.groups.discuss.replies.delete
62
+ flickr.groups.discuss.replies.edit
63
+ flickr.groups.discuss.replies.getInfo
64
+ flickr.groups.discuss.replies.getList
65
+ flickr.groups.discuss.topics.add
66
+ flickr.groups.discuss.topics.getInfo
67
+ flickr.groups.discuss.topics.getList
58
68
  flickr.groups.getInfo
69
+ flickr.groups.join
70
+ flickr.groups.joinRequest
71
+ flickr.groups.leave
59
72
  flickr.groups.members.getList
60
73
  flickr.groups.pools.add
61
74
  flickr.groups.pools.getContext
@@ -262,18 +275,6 @@ class Basic < Test::Unit::TestCase
262
275
  assert list.any? {|g| g.nsid == "51035612836@N01"}
263
276
  end
264
277
 
265
- # panda
266
- def test_panda_getList
267
- pandas = flickr.panda.getList
268
- assert_equal ["ling ling", "hsing hsing", "wang wang"], pandas.to_a
269
- end
270
-
271
- def test_panda_getPhotos
272
- pandas = flickr.panda.getPhotos :panda_name => "wang wang"
273
- assert_equal "wang wang", pandas.panda
274
- assert_respond_to pandas[0], :title
275
- end
276
-
277
278
  # people
278
279
  def test_people_findByEmail
279
280
  user = flickr.people.findByEmail :find_email => "flickraw@yahoo.com"
metadata CHANGED
@@ -1,18 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flickraw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
5
- prerelease:
4
+ version: 0.9.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mael Clerambault
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-01 00:00:00.000000000 Z
11
+ date: 2013-11-28 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description:
15
- email: maelclerambault@yahoo.fr
14
+ email: mael@clerambault.fr
16
15
  executables: []
17
16
  extensions: []
18
17
  extra_rdoc_files: []
@@ -24,39 +23,40 @@ files:
24
23
  - examples/upload.rb
25
24
  - examples/web_oauth.rb
26
25
  - test/helper.rb
27
- - test/test.rb
28
26
  - test/test_upload.rb
29
- - lib/flickraw.rb
27
+ - test/test.rb
28
+ - lib/flickraw/request.rb
30
29
  - lib/flickraw/api.rb
30
+ - lib/flickraw/error.rb
31
31
  - lib/flickraw/oauth.rb
32
- - lib/flickraw/request.rb
33
32
  - lib/flickraw/response.rb
33
+ - lib/flickraw.rb
34
34
  - flickraw_rdoc.rb
35
35
  - LICENSE
36
36
  - README.rdoc
37
37
  - rakefile
38
38
  homepage: http://hanklords.github.com/flickraw/
39
- licenses: []
39
+ licenses:
40
+ - MIT
41
+ metadata: {}
40
42
  post_install_message:
41
43
  rdoc_options: []
42
44
  require_paths:
43
45
  - lib
44
46
  required_ruby_version: !ruby/object:Gem::Requirement
45
- none: false
46
47
  requirements:
47
- - - ! '>='
48
+ - - ">="
48
49
  - !ruby/object:Gem::Version
49
50
  version: '0'
50
51
  required_rubygems_version: !ruby/object:Gem::Requirement
51
- none: false
52
52
  requirements:
53
- - - ! '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
57
  rubyforge_project:
58
- rubygems_version: 1.8.23
58
+ rubygems_version: 2.0.3
59
59
  signing_key:
60
- specification_version: 3
60
+ specification_version: 4
61
61
  summary: Flickr library with a syntax close to the syntax described on http://www.flickr.com/services/api
62
62
  test_files: []