flickraw 0.9.9 → 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cdf1d2ebe95cae5115bb7e53b0e4e8f4dc9fa56a
4
- data.tar.gz: 0e68d6ee1844edab7fb300051993cf071711e036
2
+ SHA256:
3
+ metadata.gz: 160c81f7e624a74d0659ac6af8c2113e31eddb1dca007aa8c476473473805070
4
+ data.tar.gz: 33fe9c9c542955b211d8127f3b093b48a4a2cb7e37ccdc3949abd59444c5a112
5
5
  SHA512:
6
- metadata.gz: 3d28e97c5452a9a8f662b565b02c24100bf91462b77db11a179e638ec51425efaad66a9d203b6fad997cdaac9b25c9935cb6145cb8230e62d7c16a7f16361881
7
- data.tar.gz: eea3e153758348555ca757fd996089b3dad4bfda8b43eb774f2c052ef4d8f1c46411107d8ee2e87a09a9a8a245839153033a8a7749a2521fc26d2868357013d8
6
+ metadata.gz: de6bfc36428610b9d7d090a6b8e70a6c36d70ecf36eeae6023717eb4481096d75c52c7435118576b565ef529aa88110b9edf5ea00a9d88e89fa34afed1b72522
7
+ data.tar.gz: 76c6fc51e76ff719bffe5da9c80ec9bcdf9b5a57668b61d2d8bc5ea3dc563a88050b85e24f51292f969b914f4014a0f08fc7c73d183eeb6427f5e39a66c1f560
@@ -62,7 +62,7 @@ This will recreate the documentation by fetching the methods descriptions from f
62
62
  token = flickr.get_request_token
63
63
  auth_url = flickr.get_authorize_url(token['oauth_token'], :perms => 'delete')
64
64
 
65
- puts "Open this url in your process to complete the authication process : #{auth_url}"
65
+ puts "Open this url in your browser to complete the authentication process : #{auth_url}"
66
66
  puts "Copy here the number given when you complete the process."
67
67
  verify = gets.strip
68
68
 
@@ -11,7 +11,7 @@ FlickRaw.shared_secret=SHARED_SECRET
11
11
  token = flickr.get_request_token
12
12
  auth_url = flickr.get_authorize_url(token['oauth_token'], :perms => 'delete')
13
13
 
14
- puts "Open this url in your process to complete the authication process : #{auth_url}"
14
+ puts "Open this url in your browser to complete the authentication process : #{auth_url}"
15
15
  puts "Copy here the number given when you complete the process."
16
16
  verify = gets.strip
17
17
 
@@ -7,9 +7,9 @@ require 'flickraw/response'
7
7
  require 'flickraw/api'
8
8
 
9
9
  module FlickRaw
10
- VERSION='0.9.9'
10
+ VERSION='0.9.10'
11
11
  USER_AGENT = "FlickRaw/#{VERSION}"
12
-
12
+
13
13
  self.secure = true
14
14
  self.check_certificate = true
15
15
  end
@@ -2,11 +2,11 @@ module FlickRaw
2
2
  END_POINT='http://api.flickr.com/services'.freeze
3
3
  END_POINT2='http://www.flickr.com/services'.freeze
4
4
  END_POINT_SECURE='https://api.flickr.com/services'.freeze
5
-
5
+
6
6
  FLICKR_OAUTH_REQUEST_TOKEN=(END_POINT2 + '/oauth/request_token').freeze
7
7
  FLICKR_OAUTH_AUTHORIZE=(END_POINT2 + '/oauth/authorize').freeze
8
8
  FLICKR_OAUTH_ACCESS_TOKEN=(END_POINT2 + '/oauth/access_token').freeze
9
-
9
+
10
10
  FLICKR_OAUTH_REQUEST_TOKEN_SECURE=(END_POINT_SECURE + '/oauth/request_token').freeze
11
11
  FLICKR_OAUTH_AUTHORIZE_SECURE=(END_POINT_SECURE + '/oauth/authorize').freeze
12
12
  FLICKR_OAUTH_ACCESS_TOKEN_SECURE=(END_POINT_SECURE + '/oauth/access_token').freeze
@@ -14,7 +14,7 @@ module FlickRaw
14
14
  REST_PATH=(END_POINT + '/rest/').freeze
15
15
  UPLOAD_PATH=(END_POINT + '/upload/').freeze
16
16
  REPLACE_PATH=(END_POINT + '/replace/').freeze
17
-
17
+
18
18
  REST_PATH_SECURE=(END_POINT_SECURE + '/rest/').freeze
19
19
  UPLOAD_PATH_SECURE=(END_POINT_SECURE + '/upload/').freeze
20
20
  REPLACE_PATH_SECURE=(END_POINT_SECURE + '/replace/').freeze
@@ -30,10 +30,10 @@ module FlickRaw
30
30
  class Flickr < Request
31
31
  # Authenticated access token
32
32
  attr_accessor :access_token
33
-
33
+
34
34
  # Authenticated access token secret
35
35
  attr_accessor :access_secret
36
-
36
+
37
37
  def self.build(methods); methods.each { |m| build_request m } end
38
38
 
39
39
  def initialize(api_key: FlickRaw.api_key,
@@ -51,17 +51,17 @@ module FlickRaw
51
51
  @oauth_consumer.ca_path = FlickRaw.ca_path
52
52
  @oauth_consumer.user_agent = USER_AGENT
53
53
  @access_token = @access_secret = nil
54
-
54
+
55
55
  Flickr.build(call('flickr.reflection.getMethods')) if Flickr.flickr_objects.empty?
56
56
  super self
57
57
  end
58
-
58
+
59
59
  # This is the central method. It does the actual request to the flickr server.
60
60
  #
61
61
  # Raises FailedResponse if the response status is _failed_.
62
62
  def call(req, args={}, &block)
63
63
  oauth_args = args.delete(:oauth) || {}
64
- rest_path = FlickRaw.secure ? REST_PATH_SECURE : REST_PATH
64
+ rest_path = FlickRaw.secure ? REST_PATH_SECURE : REST_PATH
65
65
  http_response = @oauth_consumer.post_form(rest_path, @access_secret, {:oauth_token => @access_token}.merge(oauth_args), build_args(args, req))
66
66
  process_response(req, http_response.body)
67
67
  end
@@ -73,7 +73,7 @@ module FlickRaw
73
73
  flickr_oauth_request_token = FlickRaw.secure ? FLICKR_OAUTH_REQUEST_TOKEN_SECURE : FLICKR_OAUTH_REQUEST_TOKEN
74
74
  @oauth_consumer.request_token(flickr_oauth_request_token, args)
75
75
  end
76
-
76
+
77
77
  # Get the oauth authorize url.
78
78
  #
79
79
  # auth_url = flickr.get_authorize_url(token['oauth_token'], :perms => 'delete')
@@ -125,19 +125,19 @@ module FlickRaw
125
125
  code = response[/code="([^"]+)"/, 1]
126
126
  raise FailedResponse.new(msg, code, req)
127
127
  end
128
-
128
+
129
129
  type = response[/<(\w+)/, 1]
130
130
  h = {
131
- "secret" => response[/secret="([^"]+)"/, 1],
132
- "originalsecret" => response[/originalsecret="([^"]+)"/, 1],
133
- "_content" => response[/>([^<]+)<\//, 1]
131
+ 'secret' => response[/secret="([^"]+)"/, 1],
132
+ 'originalsecret' => response[/originalsecret="([^"]+)"/, 1],
133
+ '_content' => response[/>([^<]+)<\//, 1]
134
134
  }.delete_if {|k,v| v.nil? }
135
-
135
+
136
136
  Response.build h, type
137
137
  else
138
- json = JSON.load(response.empty? ? "{}" : response)
138
+ json = JSON.load(response.empty? ? '{}' : response)
139
139
  raise FailedResponse.new(json['message'], json['code'], req) if json.delete('stat') == 'fail'
140
- type, json = json.to_a.first if json.size == 1 and json.all? {|k,v| v.is_a? Hash}
140
+ type, json = json.to_a.first if json.size == 1 and json.all? { |k,v| v.is_a? Hash }
141
141
 
142
142
  Response.build json, type
143
143
  end
@@ -152,7 +152,7 @@ module FlickRaw
152
152
  args['photo'] = open(file, 'rb')
153
153
  close_after = true
154
154
  end
155
-
155
+
156
156
  http_response = @oauth_consumer.post_multipart(method, @access_secret, {:oauth_token => @access_token}.merge(oauth_args), args)
157
157
  args['photo'].close if close_after
158
158
  process_response(method, http_response.body)
@@ -162,26 +162,26 @@ module FlickRaw
162
162
  class << self
163
163
  # Your flickr API key, see http://www.flickr.com/services/api/keys for more information
164
164
  attr_accessor :api_key
165
-
165
+
166
166
  # The shared secret of _api_key_, see http://www.flickr.com/services/api/keys for more information
167
167
  attr_accessor :shared_secret
168
-
168
+
169
169
  # Use a proxy
170
170
  attr_accessor :proxy
171
-
171
+
172
172
  # Use ssl connection
173
173
  attr_accessor :secure
174
174
 
175
175
  # Check the server certificate (ssl connection only)
176
176
  attr_accessor :check_certificate
177
-
177
+
178
178
  # Set path of a CA certificate file in PEM format (ssl connection only)
179
179
  attr_accessor :ca_file
180
180
 
181
181
  # Set path to a directory of CA certificate files in PEM format (ssl connection only)
182
182
  attr_accessor :ca_path
183
183
 
184
- BASE58_ALPHABET="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ".freeze
184
+ BASE58_ALPHABET='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'.freeze
185
185
  def base58(id)
186
186
  id = id.to_i
187
187
  alphabet = BASE58_ALPHABET.split(//)
@@ -193,35 +193,37 @@ module FlickRaw
193
193
  r
194
194
  end
195
195
 
196
- def url(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "", "jpg"] end
197
- def url_m(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_m", "jpg"] end
198
- def url_s(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_s", "jpg"] end
199
- def url_t(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_t", "jpg"] end
200
- def url_b(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_b", "jpg"] end
201
- def url_z(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_z", "jpg"] end
202
- def url_q(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_q", "jpg"] end
203
- def url_n(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_n", "jpg"] end
204
- def url_c(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, "_c", "jpg"] end
205
- def url_o(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.originalsecret, "_o", r.originalformat] end
206
- def url_profile(r); URL_PROFILE + (r.owner.respond_to?(:nsid) ? r.owner.nsid : r.owner) + "/" end
196
+ def url(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '', 'jpg'] end
197
+ def url_m(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_m', 'jpg'] end
198
+ def url_s(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_s', 'jpg'] end
199
+ def url_t(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_t', 'jpg'] end
200
+ def url_b(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_b', 'jpg'] end
201
+ def url_z(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_z', 'jpg'] end
202
+ def url_q(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_q', 'jpg'] end
203
+ def url_n(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_n', 'jpg'] end
204
+ def url_c(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_c', 'jpg'] end
205
+ def url_h(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_h', 'jpg'] end
206
+ def url_k(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.secret, '_k', 'jpg'] end
207
+ def url_o(r); PHOTO_SOURCE_URL % [r.farm, r.server, r.id, r.originalsecret, '_o', r.originalformat] end
208
+ def url_profile(r); URL_PROFILE + (r.owner.respond_to?(:nsid) ? r.owner.nsid : r.owner) + '/' end
207
209
  def url_photopage(r); url_photostream(r) + r.id end
208
- def url_photosets(r); url_photostream(r) + "sets/" end
210
+ def url_photosets(r); url_photostream(r) + 'sets/' end
209
211
  def url_photoset(r); url_photosets(r) + r.id end
210
212
  def url_short(r); URL_SHORT + base58(r.id) end
211
- def url_short_m(r); URL_SHORT + "img/" + base58(r.id) + "_m.jpg" end
212
- def url_short_s(r); URL_SHORT + "img/" + base58(r.id) + ".jpg" end
213
- def url_short_t(r); URL_SHORT + "img/" + base58(r.id) + "_t.jpg" end
214
- def url_short_q(r); URL_SHORT + "img/" + base58(r.id) + "_q.jpg" end
215
- def url_short_n(r); URL_SHORT + "img/" + base58(r.id) + "_n.jpg" end
213
+ def url_short_m(r); URL_SHORT + 'img/' + base58(r.id) + '_m.jpg' end
214
+ def url_short_s(r); URL_SHORT + 'img/' + base58(r.id) + '.jpg' end
215
+ def url_short_t(r); URL_SHORT + 'img/' + base58(r.id) + '_t.jpg' end
216
+ def url_short_q(r); URL_SHORT + 'img/' + base58(r.id) + '_q.jpg' end
217
+ def url_short_n(r); URL_SHORT + 'img/' + base58(r.id) + '_n.jpg' end
216
218
  def url_photostream(r)
217
219
  URL_PHOTOSTREAM +
218
- if r.respond_to?(:pathalias) and r.pathalias
220
+ if r.respond_to?(:pathalias) && r.pathalias
219
221
  r.pathalias
220
222
  elsif r.owner.respond_to?(:nsid)
221
223
  r.owner.nsid
222
224
  else
223
225
  r.owner
224
- end + "/"
226
+ end + '/'
225
227
  end
226
228
  end
227
229
  end
@@ -13,78 +13,78 @@ module FlickRaw
13
13
 
14
14
  class << self
15
15
  def encode_value(v)
16
- v = v.to_s.encode("utf-8").force_encoding("ascii-8bit") if RUBY_VERSION >= "1.9"
16
+ v = v.to_s.encode('utf-8').force_encoding('ascii-8bit') if RUBY_VERSION >= '1.9'
17
17
  v.to_s
18
18
  end
19
19
 
20
20
  def escape(s)
21
- encode_value(s).gsub(/[^a-zA-Z0-9\-\.\_\~]/) { |special|
22
- special.unpack("C*").map{|i| sprintf("%%%02X", i) }.join
23
- }
21
+ encode_value(s).gsub(/[^a-zA-Z0-9\-\.\_\~]/) do |special|
22
+ special.unpack("C*").map { |i| sprintf("%%%02X", i) }.join
23
+ end
24
24
  end
25
25
 
26
- def parse_response(text); Hash[text.split("&").map {|s| s.split("=")}] end
26
+ def parse_response(text); Hash[text.split('&').map { |s| s.split('=') }] end
27
27
 
28
28
  def signature_base_string(method, url, params)
29
- params_norm = params.map {|k,v| escape(k) + "=" + escape(v)}.sort.join("&")
30
- method.to_s.upcase + "&" + escape(url) + "&" + escape(params_norm)
29
+ params_norm = params.map { |k,v| "#{escape(k)}=#{escape(v)}" }.sort.join('&')
30
+ "#{method.to_s.upcase}&#{escape(url)}&#{escape(params_norm)}"
31
31
  end
32
-
32
+
33
33
  def sign_plaintext(method, url, params, token_secret, consumer_secret)
34
- escape(consumer_secret) + "&" + escape(token_secret)
34
+ "#{escape(consumer_secret)}&#{escape(token_secret)}"
35
35
  end
36
-
36
+
37
37
  def sign_rsa_sha1(method, url, params, token_secret, consumer_secret)
38
38
  text = signature_base_string(method, url, params)
39
39
  key = OpenSSL::PKey::RSA.new(consumer_secret)
40
40
  digest = OpenSSL::Digest::SHA1.new
41
41
  [key.sign(digest, text)].pack('m0').gsub(/\n$/,'')
42
42
  end
43
-
43
+
44
44
  def sign_hmac_sha1(method, url, params, token_secret, consumer_secret)
45
45
  text = signature_base_string(method, url, params)
46
- key = escape(consumer_secret) + "&" + escape(token_secret)
46
+ key = "#{escape(consumer_secret)}&#{escape(token_secret)}"
47
47
  digest = OpenSSL::Digest::SHA1.new
48
48
  [OpenSSL::HMAC.digest(digest, key, text)].pack('m0').gsub(/\n$/,'')
49
49
  end
50
-
50
+
51
51
  def gen_timestamp; Time.now.to_i end
52
52
  def gen_nonce; [OpenSSL::Random.random_bytes(32)].pack('m0').gsub(/\n$/,'') end
53
53
  def gen_default_params
54
- { :oauth_version => "1.0", :oauth_signature_method => "HMAC-SHA1",
54
+ { :oauth_version => "1.0", :oauth_signature_method => 'HMAC-SHA1',
55
55
  :oauth_nonce => gen_nonce, :oauth_timestamp => gen_timestamp }
56
56
  end
57
-
57
+
58
58
  def authorization_header(url, params)
59
- params_norm = params.map {|k,v| %(#{escape(k)}="#{escape(v)}")}.sort.join(", ")
59
+ params_norm = params.map { |k, v| %(#{escape(k)}="#{escape(v)}")}.sort.join(', ')
60
60
  %(OAuth realm="#{url.to_s}", #{params_norm})
61
61
  end
62
62
  end
63
-
63
+
64
64
  attr_accessor :user_agent
65
65
  attr_reader :proxy
66
66
  attr_accessor :check_certificate
67
67
  attr_accessor :ca_file
68
68
  attr_accessor :ca_path
69
69
  def proxy=(url); @proxy = URI.parse(url || '') end
70
-
70
+
71
71
  def initialize(consumer_key, consumer_secret)
72
72
  @consumer_key, @consumer_secret = consumer_key, consumer_secret
73
73
  self.proxy = nil
74
74
  end
75
75
 
76
76
  def request_token(url, oauth_params = {})
77
- r = post_form(url, nil, {:oauth_callback => "oob"}.merge(oauth_params))
77
+ r = post_form(url, nil, {:oauth_callback => 'oob'}.merge(oauth_params))
78
78
  OAuthClient.parse_response(r.body)
79
79
  end
80
-
80
+
81
81
  def authorize_url(url, oauth_params = {})
82
- params_norm = oauth_params.map {|k,v| OAuthClient.escape(k) + "=" + OAuthClient.escape(v)}.sort.join("&")
83
- url = URI.parse(url)
84
- url.query = url.query ? url.query + "&" + params_norm : params_norm
82
+ params_norm = oauth_params.map { |k,v| "#{OAuthClient.escape(k)}=#{OAuthClient.escape(v)}" }.sort.join('&')
83
+ url = URI.parse(url)
84
+ url.query = url.query ? "#{url.query}&#{params_norm}" : params_norm
85
85
  url.to_s
86
86
  end
87
-
87
+
88
88
  def access_token(url, token_secret, oauth_params = {})
89
89
  r = post_form(url, token_secret, oauth_params)
90
90
  OAuthClient.parse_response(r.body)
@@ -92,32 +92,32 @@ module FlickRaw
92
92
 
93
93
  def post_form(url, token_secret, oauth_params = {}, params = {})
94
94
  encoded_params = Hash[*params.map {|k,v| [OAuthClient.encode_value(k), OAuthClient.encode_value(v)]}.flatten]
95
- post(url, token_secret, oauth_params, params) {|request| request.form_data = encoded_params}
95
+ post(url, token_secret, oauth_params, params) { |request| request.form_data = encoded_params }
96
96
  end
97
-
97
+
98
98
  def post_multipart(url, token_secret, oauth_params = {}, params = {})
99
99
  post(url, token_secret, oauth_params, params) {|request|
100
100
  boundary = "FlickRaw#{OAuthClient.gen_nonce}"
101
101
  request['Content-type'] = "multipart/form-data, boundary=#{boundary}"
102
102
 
103
103
  request.body = ''
104
- params.each { |k, v|
104
+ params.each do |k, v|
105
105
  if v.respond_to? :read
106
106
  basename = File.basename(v.path.to_s) if v.respond_to? :path
107
107
  basename ||= File.basename(v.base_uri.to_s) if v.respond_to? :base_uri
108
108
  basename ||= "unknown"
109
109
  request.body << "--#{boundary}\r\n" <<
110
- "Content-Disposition: form-data; name=\"#{OAuthClient.encode_value(k)}\"; filename=\"#{OAuthClient.encode_value(basename)}\"\r\n" <<
111
- "Content-Transfer-Encoding: binary\r\n" <<
112
- "Content-Type: image/jpeg\r\n\r\n" <<
113
- v.read << "\r\n"
110
+ "Content-Disposition: form-data; name=\"#{OAuthClient.encode_value(k)}\"; filename=\"#{OAuthClient.encode_value(basename)}\"\r\n" <<
111
+ "Content-Transfer-Encoding: binary\r\n" <<
112
+ "Content-Type: image/jpeg\r\n\r\n" <<
113
+ v.read << "\r\n"
114
114
  else
115
115
  request.body << "--#{boundary}\r\n" <<
116
- "Content-Disposition: form-data; name=\"#{OAuthClient.encode_value(k)}\"\r\n\r\n" <<
117
- "#{OAuthClient.encode_value(v)}\r\n"
116
+ "Content-Disposition: form-data; name=\"#{OAuthClient.encode_value(k)}\"\r\n\r\n" <<
117
+ "#{OAuthClient.encode_value(v)}\r\n"
118
118
  end
119
- }
120
-
119
+ end
120
+
121
121
  request.body << "--#{boundary}--"
122
122
  }
123
123
  end
@@ -125,11 +125,11 @@ module FlickRaw
125
125
  private
126
126
  def sign(method, url, params, token_secret = nil)
127
127
  case params[:oauth_signature_method]
128
- when "HMAC-SHA1"
128
+ when 'HMAC-SHA1'
129
129
  OAuthClient.sign_hmac_sha1(method, url, params, token_secret, @consumer_secret)
130
- when "RSA-SHA1"
130
+ when 'RSA-SHA1'
131
131
  OAuthClient.sign_rsa_sha1(method, url, params, token_secret, @consumer_secret)
132
- when "PLAINTEXT"
132
+ when 'PLAINTEXT'
133
133
  OAuthClient.sign_plaintext(method, url, params, token_secret, @consumer_secret)
134
134
  else
135
135
  raise UnknownSignatureMethod, params[:oauth_signature_method]
@@ -140,9 +140,9 @@ module FlickRaw
140
140
  url = URI.parse(url)
141
141
  default_oauth_params = OAuthClient.gen_default_params
142
142
  default_oauth_params[:oauth_consumer_key] = @consumer_key
143
- default_oauth_params[:oauth_signature_method] = "PLAINTEXT" if url.scheme == 'https'
143
+ default_oauth_params[:oauth_signature_method] = 'PLAINTEXT' if url.scheme == 'https'
144
144
  oauth_params = default_oauth_params.merge(oauth_params)
145
- params_signed = params.reject {|k,v| v.respond_to? :read}.merge(oauth_params)
145
+ params_signed = params.reject { |k,v| v.respond_to? :read }.merge(oauth_params)
146
146
  oauth_params[:oauth_signature] = sign(:post, url, params_signed, token_secret)
147
147
 
148
148
  http = Net::HTTP.new(url.host, url.port, @proxy.host, @proxy.port, @proxy.user, @proxy.password)
@@ -150,18 +150,17 @@ module FlickRaw
150
150
  http.verify_mode = (@check_certificate ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE)
151
151
  http.ca_file = @ca_file
152
152
  http.ca_path = @ca_path
153
- r = http.start {|agent|
153
+ r = http.start do |agent|
154
154
  request = Net::HTTP::Post.new(url.path)
155
155
  request['User-Agent'] = @user_agent if @user_agent
156
156
  request['Authorization'] = OAuthClient.authorization_header(url, oauth_params)
157
157
 
158
158
  yield request
159
159
  agent.request(request)
160
- }
161
-
160
+ end
161
+
162
162
  raise FailedResponse.new(r.body) if r.is_a? Net::HTTPClientError
163
163
  r
164
164
  end
165
165
  end
166
-
167
166
  end
@@ -1,50 +1,49 @@
1
1
  module FlickRaw
2
- class Request
3
- def initialize(flickr = nil) # :nodoc:
4
- @flickr = flickr
5
-
6
- self.class.flickr_objects.each {|name|
7
- klass = self.class.const_get name.capitalize
8
- instance_variable_set "@#{name}", klass.new(@flickr)
9
- }
10
- end
2
+ class Request
3
+ def initialize(flickr = nil) # :nodoc:
4
+ @flickr = flickr
5
+
6
+ self.class.flickr_objects.each {|name|
7
+ klass = self.class.const_get name.capitalize
8
+ instance_variable_set "@#{name}", klass.new(@flickr)
9
+ }
10
+ end
11
11
 
12
- def self.build_request(req) # :nodoc:
13
- method_nesting = req.split '.'
14
- raise "'#{@name}' : Method name mismatch" if method_nesting.shift != request_name.split('.').last
12
+ def self.build_request(req) # :nodoc:
13
+ method_nesting = req.split '.'
14
+ raise "'#{@name}' : Method name mismatch" if method_nesting.shift != request_name.split('.').last
15
+
16
+ if method_nesting.size > 1
17
+ name = method_nesting.first
18
+ class_name = name.capitalize
19
+ if flickr_objects.include? name
20
+ klass = const_get(class_name)
21
+ else
22
+ klass = Class.new Request
23
+ const_set(class_name, klass)
24
+ attr_reader name
25
+ flickr_objects << name
26
+ end
15
27
 
16
- if method_nesting.size > 1
17
- name = method_nesting.first
18
- class_name = name.capitalize
19
- if flickr_objects.include? name
20
- klass = const_get(class_name)
28
+ klass.build_request method_nesting.join('.')
21
29
  else
22
- klass = Class.new Request
23
- const_set(class_name, klass)
24
- attr_reader name
25
- flickr_objects << name
26
- end
27
-
28
- klass.build_request method_nesting.join('.')
29
- else
30
- req = method_nesting.first
31
- module_eval %{
30
+ req = method_nesting.first
31
+ module_eval %{
32
32
  def #{req}(*args, &block)
33
33
  @flickr.call("#{request_name}.#{req}", *args, &block)
34
34
  end
35
- } if Util.safe_for_eval?(req)
36
- flickr_methods << req
35
+ } if Util.safe_for_eval?(req)
36
+ flickr_methods << req
37
+ end
37
38
  end
38
- end
39
39
 
40
- # List the flickr subobjects of this object
41
- def self.flickr_objects; @flickr_objects ||= [] end
40
+ # List the flickr subobjects of this object
41
+ def self.flickr_objects; @flickr_objects ||= [] end
42
42
 
43
- # List the flickr methods of this object
44
- def self.flickr_methods; @flickr_methods ||= [] end
45
-
46
- # Returns the prefix of the request corresponding to this class.
47
- def self.request_name; name.downcase.gsub(/::/, '.').sub(/[^\.]+\./, '') end
48
- end
43
+ # List the flickr methods of this object
44
+ def self.flickr_methods; @flickr_methods ||= [] end
49
45
 
46
+ # Returns the prefix of the request corresponding to this class.
47
+ def self.request_name; name.downcase.gsub(/::/, '.').sub(/[^\.]+\./, '') end
48
+ end
50
49
  end
@@ -1,58 +1,62 @@
1
1
  module FlickRaw
2
- class Response
3
- def self.build(h, type) # :nodoc:
4
- if h.is_a? Response
5
- h
6
- elsif type =~ /s$/ and (a = h[$`]).is_a? Array
7
- ResponseList.new(h, type, a.collect {|e| Response.build(e, $`)})
8
- elsif h.keys == ["_content"]
9
- h["_content"]
10
- else
11
- Response.new(h, type)
2
+ class Response
3
+ def self.build(h, type) # :nodoc:
4
+ if h.is_a? Response
5
+ h
6
+ elsif type =~ /s$/ and (a = h[$`]).is_a? Array
7
+ ResponseList.new(h, type, a.collect { |e| Response.build(e, $`) })
8
+ elsif h.keys == ['_content']
9
+ h['_content']
10
+ else
11
+ Response.new(h, type)
12
+ end
12
13
  end
13
- end
14
14
 
15
- attr_reader :flickr_type
16
- def initialize(h, type) # :nodoc:
17
- @flickr_type, @h = type, {}
18
- methods = "class << self;"
19
- h.each {|k,v|
20
- @h[k] = case v
21
- when Hash then Response.build(v, k)
22
- when Array then v.collect {|e| Response.build(e, k)}
23
- else v
15
+ attr_reader :flickr_type
16
+ def initialize(h, type) # :nodoc:
17
+ @flickr_type, @h = type, {}
18
+ methods = 'class << self;'
19
+ h.each do |k, v|
20
+ @h[k] = case v
21
+ when Hash then Response.build(v, k)
22
+ when Array then v.collect { |e| Response.build(e, k) }
23
+ else v
24
+ end
25
+ methods << "def #{k}; @h['#{k}'] end;" if Util.safe_for_eval?(k)
24
26
  end
25
- methods << "def #{k}; @h['#{k}'] end;" if Util.safe_for_eval?(k)
26
- }
27
- eval methods << "end"
27
+ eval methods << 'end'
28
+ end
29
+ def [](k); @h[k] end
30
+ def to_s; @h['_content'] || super end
31
+ def inspect; @h.inspect end
32
+ def to_hash; @h end
33
+ def marshal_dump; [@h, @flickr_type] end
34
+ def marshal_load(data); initialize(*data) end
28
35
  end
29
- def [](k); @h[k] end
30
- def to_s; @h["_content"] || super end
31
- def inspect; @h.inspect end
32
- def to_hash; @h end
33
- def marshal_dump; [@h, @flickr_type] end
34
- def marshal_load(data); initialize(*data) end
35
- end
36
-
37
- class ResponseList < Response
38
- include Enumerable
39
- def initialize(h, t, a); super(h, t); @a = a end
40
- def [](k); k.is_a?(Fixnum) ? @a[k] : super(k) end
41
- def each; @a.each{|e| yield e} end
42
- def to_a; @a end
43
- def inspect; @a.inspect end
44
- def size; @a.size end
45
- def marshal_dump; [@h, @flickr_type, @a] end
46
- alias length size
47
- end
48
36
 
49
- class FailedResponse < Error
50
- attr_reader :code
51
- alias :msg :message
52
- def initialize(msg, code, req)
53
- @code = code
54
- super("'#{req}' - #{msg}")
37
+ class ResponseList < Response
38
+ include Enumerable
39
+ def initialize(h, t, a); super(h, t); @a = a end
40
+ def [](k); k.is_a?(Integer) ? @a[k] : super(k) end
41
+ def each
42
+ @a.each { |e| yield e }
43
+ end
44
+ def to_a; @a end
45
+ def inspect; @a.inspect end
46
+ def size; @a.size end
47
+ def map!
48
+ @a = @a.map { |e| yield e }
49
+ end
50
+ def marshal_dump; [@h, @flickr_type, @a] end
51
+ alias length size
55
52
  end
56
- end
57
53
 
54
+ class FailedResponse < Error
55
+ attr_reader :code
56
+ alias :msg :message
57
+ def initialize(msg, code, req)
58
+ @code = code
59
+ super("'#{req}' - #{msg}")
60
+ end
61
+ end
58
62
  end
@@ -9,6 +9,5 @@ module FlickRaw
9
9
  def safe_for_eval?(string)
10
10
  string == sanitize(string)
11
11
  end
12
-
13
12
  end
14
13
  end
@@ -11,6 +11,7 @@ class TestReqeust < Test::Unit::TestCase
11
11
  def test_flickr_api_is_accessible_via_methods
12
12
  # Reset FlickRaw (was initialized in test/helper.rb) so the request methods
13
13
  # are properly built
14
+ old_flickraw = $flickraw
14
15
  $flickraw = nil
15
16
  FlickRaw::Request.instance_variable_set(:@flickr_objects, nil)
16
17
 
@@ -18,6 +19,9 @@ class TestReqeust < Test::Unit::TestCase
18
19
 
19
20
  assert_equal true, flickr.methods.include?(:fully)
20
21
  assert_equal true, flickr.fully.methods.include?(:legal)
22
+
23
+ # Fix for failing subsequent tests
24
+ $flickraw = old_flickraw
21
25
  end
22
26
 
23
27
  def test_invalid_keys_are_skipped
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flickraw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mael Clerambault
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-30 00:00:00.000000000 Z
11
+ date: 2019-03-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: mael@clerambault.fr
@@ -16,28 +16,28 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - LICENSE
20
+ - README.rdoc
19
21
  - examples/auth.rb
20
22
  - examples/interestingness.rb
21
23
  - examples/search.rb
22
24
  - examples/sinatra.rb
23
25
  - examples/upload.rb
24
26
  - examples/web_oauth.rb
25
- - test/helper.rb
26
- - test/test.rb
27
- - test/test_request.rb
28
- - test/test_response.rb
29
- - test/test_upload.rb
27
+ - flickraw_rdoc.rb
28
+ - lib/flickraw.rb
30
29
  - lib/flickraw/api.rb
31
30
  - lib/flickraw/error.rb
32
31
  - lib/flickraw/oauth.rb
33
32
  - lib/flickraw/request.rb
34
33
  - lib/flickraw/response.rb
35
34
  - lib/flickraw/util.rb
36
- - lib/flickraw.rb
37
- - flickraw_rdoc.rb
38
- - LICENSE
39
- - README.rdoc
40
35
  - rakefile
36
+ - test/helper.rb
37
+ - test/test.rb
38
+ - test/test_request.rb
39
+ - test/test_response.rb
40
+ - test/test_upload.rb
41
41
  homepage: http://hanklords.github.com/flickraw/
42
42
  licenses:
43
43
  - MIT
@@ -57,8 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  - !ruby/object:Gem::Version
58
58
  version: '0'
59
59
  requirements: []
60
- rubyforge_project:
61
- rubygems_version: 2.0.14
60
+ rubygems_version: 3.0.2
62
61
  signing_key:
63
62
  specification_version: 4
64
63
  summary: Flickr library with a syntax close to the syntax described on http://www.flickr.com/services/api