flickraw 0.9.9 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
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