flickrie 0.3.2 → 0.4.0
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.
- data/.gitignore +1 -0
- data/CHANGELOG.md +8 -2
- data/Gemfile +1 -1
- data/README.md +43 -19
- data/flickrie.gemspec +3 -0
- data/lib/flickrie/api_methods.rb +59 -0
- data/lib/flickrie/client.rb +36 -17
- data/lib/flickrie/instance.rb +8 -3
- data/lib/flickrie/media/ticket.rb +22 -0
- data/lib/flickrie/media.rb +27 -0
- data/lib/flickrie/upload_client.rb +88 -0
- data/lib/flickrie/version.rb +1 -1
- data/test/media_test.rb +92 -0
- data/test/photo.jpg +0 -0
- data/test/photo_test.rb +21 -0
- data/test/test.rb +0 -2
- data/test/video.mov +0 -0
- data/test/video_test.rb +11 -1
- metadata +34 -6
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
# Flickrie changelog
|
2
2
|
|
3
|
-
## Version 0.4.0
|
3
|
+
## Version 0.4.0
|
4
4
|
|
5
5
|
- covered `flickr.photos.getContactsPhotos`
|
6
6
|
- covered `flickr.photos.getContactsPublicPhotos`
|
7
7
|
- covered `flickr.photos.getContext`
|
8
|
+
- implemented uploading photos
|
9
|
+
- covered `flickr.photos.upload.checkTickets`
|
10
|
+
|
11
|
+
## Version 0.3.2
|
12
|
+
|
13
|
+
- enabled passing params to `Flickrie::Set#photos`
|
8
14
|
|
9
15
|
## Version 0.3.1
|
10
16
|
|
@@ -19,4 +25,4 @@
|
|
19
25
|
|
20
26
|
## Version 0.2.2
|
21
27
|
|
22
|
-
- removed `addressable` gem as dependency
|
28
|
+
- removed `addressable` gem as a dependency
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -35,13 +35,13 @@ You first need to install the gem.
|
|
35
35
|
[sudo] gem install flickrie
|
36
36
|
```
|
37
37
|
|
38
|
-
Then in your app you set the API key and secret (if you don't have them
|
38
|
+
Then in your app you set the API key and shared secret (if you don't have them
|
39
39
|
already, you can apply for them [here](http://www.flickr.com/services/apps/create/apply)).
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
require 'flickrie'
|
43
|
-
Flickrie.api_key = "
|
44
|
-
Flickrie.shared_secret = "
|
43
|
+
Flickrie.api_key = "API_KEY"
|
44
|
+
Flickrie.shared_secret = "SHARED_SECRET"
|
45
45
|
```
|
46
46
|
|
47
47
|
Then you can search for stuff.
|
@@ -122,8 +122,8 @@ be sure to check the [wiki](https://github.com/janko-m/flickrie/wiki) for some a
|
|
122
122
|
```ruby
|
123
123
|
require 'flickrie'
|
124
124
|
|
125
|
-
Flickrie.api_key = "
|
126
|
-
Flickrie.shared_secret = "
|
125
|
+
Flickrie.api_key = "API_KEY"
|
126
|
+
Flickrie.shared_secret = "SHARED_SECRET"
|
127
127
|
|
128
128
|
request_token = Flickrie::OAuth.get_request_token
|
129
129
|
url = request_token.get_authorization_url
|
@@ -147,6 +147,24 @@ are "read", "write" and "delete".
|
|
147
147
|
If you want to make authentication in your web application, check out my [flickr_auth](https://github.com/janko-m/flickr_auth) gem.
|
148
148
|
Or, if you want to do it manually, check out [this wiki](https://github.com/janko-m/flickrie/wiki/Authentication-in-web-applications) for instructions.
|
149
149
|
|
150
|
+
## Photo upload
|
151
|
+
|
152
|
+
```ruby
|
153
|
+
photo_id = Flickrie.upload("/path/to/photo.jpg", :title => "A cow")
|
154
|
+
photo = Flickrie.get_photo_info(photo_id)
|
155
|
+
photo.title # => "A cow"
|
156
|
+
```
|
157
|
+
|
158
|
+
For the list of parameters you can pass in when uploading a photo, see
|
159
|
+
[this page](http://www.flickr.com/services/api/upload.api.html).
|
160
|
+
|
161
|
+
Few notes:
|
162
|
+
- Photo uploads require authentication with "write" permissions.
|
163
|
+
- Path to the photo has to be absolute.
|
164
|
+
|
165
|
+
See [this wiki](https://github.com/janko-m/flickrie/wiki/Asynchronous_photo_upload) for an example
|
166
|
+
of an asynchronous photo upload.
|
167
|
+
|
150
168
|
## A few words
|
151
169
|
|
152
170
|
Now, I covered only a few out of many Flickr's API methods using this approach,
|
@@ -199,26 +217,32 @@ basis of this gem.
|
|
199
217
|
|
200
218
|
```ruby
|
201
219
|
# people
|
202
|
-
"flickr.people.findByEmail"
|
203
|
-
"flickr.people.findByUsername"
|
204
|
-
"flickr.people.getInfo"
|
205
|
-
"flickr.people.getPublicPhotos"
|
220
|
+
"flickr.people.findByEmail" -> Flickrie.find_user_by_email
|
221
|
+
"flickr.people.findByUsername" -> Flickrie.find_user_by_username
|
222
|
+
"flickr.people.getInfo" -> Flickrie.get_user_info
|
223
|
+
"flickr.people.getPublicPhotos" -> Flickrie.public_photos_from_user
|
206
224
|
|
207
225
|
# photos
|
208
|
-
"flickr.photos.addTags"
|
209
|
-
"flickr.photos.delete"
|
210
|
-
"flickr.photos.
|
211
|
-
"flickr.photos.
|
212
|
-
"flickr.photos.
|
213
|
-
"flickr.photos.
|
226
|
+
"flickr.photos.addTags" -> Flickrie.add_photo_tags
|
227
|
+
"flickr.photos.delete" -> Flickrie.delete_photo
|
228
|
+
"flickr.photos.getContactsPhotos" -> Flickrie.photos_from_contacts
|
229
|
+
"flickr.photos.getContactsPublicPhotos" -> Flickrie.public_photos_from_user_contacts
|
230
|
+
"flickr.photos.getContext" -> Flickrie.get_photo_context
|
231
|
+
"flickr.photos.getInfo" -> Flickrie.get_photo_info
|
232
|
+
"flickr.photos.getSizes" -> Flickrie.get_photo_sizes
|
233
|
+
"flickr.photos.removeTag" -> Flickrie.remove_photo_tag
|
234
|
+
"flickr.photos.search" -> Flickrie.search_photos
|
235
|
+
|
236
|
+
# photos.upload
|
237
|
+
"flickr.photos.upload.checkTickets" -> Flickrie.check_upload_tickets
|
214
238
|
|
215
239
|
# photos.licenses
|
216
|
-
"flickr.photos.licenses.getInfo"
|
240
|
+
"flickr.photos.licenses.getInfo" -> Flickrie.get_licenses
|
217
241
|
|
218
242
|
# photosets
|
219
|
-
"flickr.photosets.getInfo"
|
220
|
-
"flickr.photosets.getList"
|
221
|
-
"flickr.photosets.getPhotos"
|
243
|
+
"flickr.photosets.getInfo" -> Flickrie.get_set_info
|
244
|
+
"flickr.photosets.getList" -> Flickrie.sets_from_user
|
245
|
+
"flickr.photosets.getPhotos" -> Flickrie.photos_from_set
|
222
246
|
```
|
223
247
|
|
224
248
|
## Changelog
|
data/flickrie.gemspec
CHANGED
data/lib/flickrie/api_methods.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'flickrie/client'
|
2
|
+
require 'flickrie/upload_client'
|
2
3
|
require 'flickrie/oauth'
|
3
4
|
require 'flickrie/license'
|
4
5
|
require 'flickrie/user'
|
@@ -9,6 +10,24 @@ require 'flickrie/set'
|
|
9
10
|
|
10
11
|
module Flickrie
|
11
12
|
module ApiMethods
|
13
|
+
def upload(media, params = {})
|
14
|
+
response = upload_client.upload(media, params)
|
15
|
+
if params[:async] == 1
|
16
|
+
response.body['rsp']['ticketid']
|
17
|
+
else
|
18
|
+
response.body['rsp']['photoid']
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def replace(media, media_id, params = {})
|
23
|
+
response = upload_client.replace(media, media_id, params)
|
24
|
+
if params[:async] == 1
|
25
|
+
response.body['rsp']['ticketid']
|
26
|
+
else
|
27
|
+
response.body['rsp']['photoid']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
12
31
|
# people
|
13
32
|
def find_user_by_email(email)
|
14
33
|
response = client.find_user_by_email(email)
|
@@ -47,10 +66,42 @@ module Flickrie
|
|
47
66
|
|
48
67
|
def delete_media(media_id)
|
49
68
|
client.delete_media(media_id)
|
69
|
+
media_id
|
50
70
|
end
|
51
71
|
alias delete_photo delete_media
|
52
72
|
alias delete_video delete_media
|
53
73
|
|
74
|
+
def media_from_contacts(params = {})
|
75
|
+
response = client.media_from_contacts(params)
|
76
|
+
Media.from_contacts(response.body['photos'])
|
77
|
+
end
|
78
|
+
def photos_from_contacts(params = {})
|
79
|
+
media_from_contacts(params).select { |media| media.is_a?(Photo) }
|
80
|
+
end
|
81
|
+
def videos_from_contacts(params = {})
|
82
|
+
media_from_contacts(params).select { |media| media.is_a?(Video) }
|
83
|
+
end
|
84
|
+
|
85
|
+
def public_media_from_user_contacts(user_nsid, params = {})
|
86
|
+
response = client.public_media_from_user_contacts(user_nsid, params)
|
87
|
+
Media.from_contacts(response.body['photos'])
|
88
|
+
end
|
89
|
+
def public_photos_from_user_contacts(user_nsid, params = {})
|
90
|
+
public_media_from_user_contacts(user_nsid, params).
|
91
|
+
select { |media| media.is_a?(Photo) }
|
92
|
+
end
|
93
|
+
def public_videos_from_user_contacts(user_nsid, params = {})
|
94
|
+
public_media_from_user_contacts(user_nsid, params).
|
95
|
+
select { |media| media.is_a?(Photo) }
|
96
|
+
end
|
97
|
+
|
98
|
+
def get_media_context(media_id)
|
99
|
+
response = client.get_media_context(media_id)
|
100
|
+
Media.from_context(response.body)
|
101
|
+
end
|
102
|
+
alias get_photo_context get_media_context
|
103
|
+
alias get_video_context get_media_context
|
104
|
+
|
54
105
|
def get_media_info(media_id)
|
55
106
|
response = client.get_media_info(media_id)
|
56
107
|
Media.from_info(response.body['photo'])
|
@@ -84,6 +135,14 @@ module Flickrie
|
|
84
135
|
search_media(search_params.merge(:media => 'videos'))
|
85
136
|
end
|
86
137
|
|
138
|
+
# photos.upload
|
139
|
+
def check_upload_tickets(tickets)
|
140
|
+
tickets = tickets.join(',') if tickets.is_a?(Array)
|
141
|
+
response = client.check_upload_tickets(tickets)
|
142
|
+
response.body['uploader']['ticket'].
|
143
|
+
map { |info| Media::Ticket.new(info) }
|
144
|
+
end
|
145
|
+
|
87
146
|
# licenses
|
88
147
|
def get_licenses
|
89
148
|
response = client.get_licenses
|
data/lib/flickrie/client.rb
CHANGED
@@ -17,36 +17,37 @@ module Flickrie
|
|
17
17
|
:timeout, :open_timeout, :access_token, :access_secret
|
18
18
|
|
19
19
|
def client(access_token_hash = {})
|
20
|
-
@client ||=
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
client.builder.insert_before FaradayMiddleware::ParseJson, StatusCheck
|
33
|
-
client
|
20
|
+
@client ||= Client.new(params) do |conn|
|
21
|
+
conn.request :oauth,
|
22
|
+
:consumer_key => api_key,
|
23
|
+
:consumer_secret => shared_secret,
|
24
|
+
:token => access_token_hash[:token] || access_token,
|
25
|
+
:token_secret => access_token_hash[:secret] || access_secret
|
26
|
+
|
27
|
+
conn.use StatusCheck
|
28
|
+
conn.response :json, :content_type => /(text\/plain)|(json)$/
|
29
|
+
conn.use OAuthStatusCheck
|
30
|
+
|
31
|
+
conn.adapter Faraday.default_adapter
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
37
35
|
private
|
38
36
|
|
37
|
+
OPEN_TIMEOUT = 4
|
38
|
+
TIMEOUT = 6
|
39
|
+
|
39
40
|
def params
|
40
41
|
{
|
41
|
-
:url => 'http://api.flickr.com/services/rest
|
42
|
+
:url => 'http://api.flickr.com/services/rest',
|
42
43
|
:params => {
|
43
44
|
:format => 'json',
|
44
45
|
:nojsoncallback => '1',
|
45
46
|
:api_key => api_key
|
46
47
|
},
|
47
48
|
:request => {
|
48
|
-
:open_timeout => open_timeout ||
|
49
|
-
:timeout => timeout ||
|
49
|
+
:open_timeout => open_timeout || OPEN_TIMEOUT,
|
50
|
+
:timeout => timeout || TIMEOUT
|
50
51
|
}
|
51
52
|
}
|
52
53
|
end
|
@@ -114,6 +115,19 @@ module Flickrie
|
|
114
115
|
post 'flickr.photos.delete', :photo_id => media_id
|
115
116
|
end
|
116
117
|
|
118
|
+
def media_from_contacts(params = {})
|
119
|
+
get 'flickr.photos.getContactsPhotos', ensure_media(params)
|
120
|
+
end
|
121
|
+
|
122
|
+
def public_media_from_user_contacts(user_nsid, params = {})
|
123
|
+
params = {:user_id => user_nsid}.merge(params)
|
124
|
+
get 'flickr.photos.getContactsPublicPhotos', ensure_media(params)
|
125
|
+
end
|
126
|
+
|
127
|
+
def get_media_context(media_id)
|
128
|
+
get 'flickr.photos.getContext', :photo_id => media_id
|
129
|
+
end
|
130
|
+
|
117
131
|
def get_media_info(media_id)
|
118
132
|
get 'flickr.photos.getInfo', :photo_id => media_id
|
119
133
|
end
|
@@ -130,6 +144,11 @@ module Flickrie
|
|
130
144
|
get 'flickr.photos.search', ensure_media(params)
|
131
145
|
end
|
132
146
|
|
147
|
+
# photos.upload
|
148
|
+
def check_upload_tickets(tickets)
|
149
|
+
get 'flickr.photos.upload.checkTickets', :tickets => tickets
|
150
|
+
end
|
151
|
+
|
133
152
|
# licenses
|
134
153
|
def get_licenses
|
135
154
|
get 'flickr.photos.licenses.getInfo'
|
data/lib/flickrie/instance.rb
CHANGED
@@ -6,10 +6,15 @@ module Flickrie
|
|
6
6
|
@access_token, @access_secret = access_token, access_secret
|
7
7
|
end
|
8
8
|
|
9
|
-
def client
|
10
|
-
|
11
|
-
end
|
9
|
+
def client; Flickrie.client(access_token_hash) end
|
10
|
+
def upload_client; Flickrie.upload_client(access_token_hash) end
|
12
11
|
|
13
12
|
include ApiMethods
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def access_token_hash
|
17
|
+
{:token => access_token, :secret => access_secret}
|
18
|
+
end
|
14
19
|
end
|
15
20
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Flickrie
|
2
|
+
module Media
|
3
|
+
class Ticket
|
4
|
+
def id; @info['id'] end
|
5
|
+
def media_id; @info['photoid'] end
|
6
|
+
alias photo_id media_id
|
7
|
+
alias video_id media_id
|
8
|
+
|
9
|
+
def complete?
|
10
|
+
@info['complete'].to_i == 1
|
11
|
+
end
|
12
|
+
|
13
|
+
def imported_at
|
14
|
+
Time.at(@info['imported'].to_i)
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(info)
|
18
|
+
@info = info
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/flickrie/media.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'flickrie/media/visibility'
|
2
2
|
require 'flickrie/media/note'
|
3
3
|
require 'flickrie/media/tag'
|
4
|
+
require 'flickrie/media/ticket'
|
4
5
|
require 'flickrie/location'
|
5
6
|
require 'date'
|
6
7
|
|
@@ -68,6 +69,8 @@ module Flickrie
|
|
68
69
|
def url
|
69
70
|
if owner and id
|
70
71
|
"http://www.flickr.com/photos/#{owner.nsid}/#{id}"
|
72
|
+
elsif @info['url']
|
73
|
+
"http://www.flickr.com" + @info['url']
|
71
74
|
end
|
72
75
|
end
|
73
76
|
|
@@ -102,6 +105,8 @@ module Flickrie
|
|
102
105
|
|
103
106
|
def has_people?; @info['people']['haspeople'].to_i == 1 if @info['people'] end
|
104
107
|
|
108
|
+
def faved?; @info['is_faved'].to_i == 1 if @info['is_faved'] end
|
109
|
+
|
105
110
|
def notes
|
106
111
|
@info['notes']['note'].map { |hash| Note.new(hash) } if @info['notes']
|
107
112
|
end
|
@@ -190,6 +195,28 @@ module Flickrie
|
|
190
195
|
def from_search(hash)
|
191
196
|
from_user(hash)
|
192
197
|
end
|
198
|
+
|
199
|
+
def from_contacts(hash)
|
200
|
+
hash['photo'].each do |info|
|
201
|
+
info['ownername'] = info.delete('username')
|
202
|
+
end
|
203
|
+
|
204
|
+
from_user(hash)
|
205
|
+
end
|
206
|
+
|
207
|
+
def from_context(hash)
|
208
|
+
hash['count'] = hash['count']['_content'].to_i
|
209
|
+
|
210
|
+
['prevphoto', 'nextphoto'].each do |media|
|
211
|
+
unless hash[media]['media'].nil?
|
212
|
+
hash[media] = new(hash[media])
|
213
|
+
else
|
214
|
+
hash[media] = nil
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
hash
|
219
|
+
end
|
193
220
|
end
|
194
221
|
extend(ClassMethods)
|
195
222
|
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module Flickrie
|
2
|
+
class << self
|
3
|
+
def upload_client(access_token_hash = {})
|
4
|
+
@upload_client ||= UploadClient.new(upload_params) do |conn|
|
5
|
+
conn.request :oauth,
|
6
|
+
:consumer_key => api_key,
|
7
|
+
:consumer_secret => shared_secret,
|
8
|
+
:token => access_token_hash[:token] || access_token,
|
9
|
+
:token_secret => access_token_hash[:secret] || access_secret
|
10
|
+
conn.request :multipart
|
11
|
+
|
12
|
+
conn.use UploadStatusCheck
|
13
|
+
conn.response :xml
|
14
|
+
|
15
|
+
conn.adapter Faraday.default_adapter
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def upload_params
|
22
|
+
{
|
23
|
+
:url => 'http://api.flickr.com/services',
|
24
|
+
:request => {
|
25
|
+
:open_timeout => open_timeout || OPEN_TIMEOUT
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class UploadStatusCheck < Faraday::Response::Middleware
|
32
|
+
def on_complete(env)
|
33
|
+
if env[:body]['rsp']['stat'] != 'ok'
|
34
|
+
raise Error, env[:body]['rsp']['err']['msg']
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class UploadClient < Faraday::Connection
|
40
|
+
def upload(media, params = {})
|
41
|
+
media_file = get_file(media, params[:mime_type])
|
42
|
+
post "upload", {:photo => media_file}.merge(params)
|
43
|
+
end
|
44
|
+
|
45
|
+
def replace(media, media_id, params = {})
|
46
|
+
media_file = get_file(media)
|
47
|
+
post "replace", {:photo => media_file,
|
48
|
+
:photo_id => media_id}.merge(params)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
MIME_TYPES = {
|
54
|
+
%w[.jpg .jpeg .jpe .jif .jfif .jfi] => 'image/jpeg',
|
55
|
+
%w[.gif] => 'image/gif',
|
56
|
+
%w[.png] => 'image/png',
|
57
|
+
%w[.svg .svgz] => 'image/svg+xml',
|
58
|
+
%w[.tiff .tif] => 'image/tiff',
|
59
|
+
%w[.ico] => 'image/vnd.microsoft.icon',
|
60
|
+
|
61
|
+
%w[.mpg .mpeg .m1v .m1a .m2a .mpa .mpv] => 'video/mpeg',
|
62
|
+
%w[.mp4 .m4a .m4p .m4b .m4r .m4v] => 'video/mp4',
|
63
|
+
%w[.ogv .oga .ogx .ogg .spx] => 'video/ogg',
|
64
|
+
%w[.mov .qt] => 'video/quicktime',
|
65
|
+
%w[.webm] => 'video/webm',
|
66
|
+
%w[.mkv .mk3d .mka .mks] => 'video/x-matroska',
|
67
|
+
%w[.wmv] => 'video/x-ms-wmv',
|
68
|
+
%w[.flv .f4v .f4p .f4a .f4b] => 'video/x-flv',
|
69
|
+
%w[.avi] => 'video/avi'
|
70
|
+
}.freeze
|
71
|
+
|
72
|
+
def get_file(object, mime_type = nil)
|
73
|
+
if object.is_a?(String)
|
74
|
+
Faraday::UploadIO.new(object, mime_type || get_mime_type(object))
|
75
|
+
else
|
76
|
+
object
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def get_mime_type(file_path)
|
81
|
+
extension = file_path[/\.\w{3,4}$/]
|
82
|
+
mime_type = MIME_TYPES.find { |k,v| k.include?(extension) }.last
|
83
|
+
|
84
|
+
rescue NoMethodError
|
85
|
+
raise Error, "Don't know mime type for this extension (#{extension})"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
data/lib/flickrie/version.rb
CHANGED
data/test/media_test.rb
CHANGED
@@ -286,6 +286,98 @@ class MediaTest < Test::Unit::TestCase
|
|
286
286
|
assert_equal media.tags.join(' '), tags_before_change.chomp("janko").rstrip
|
287
287
|
end
|
288
288
|
|
289
|
+
def test_delete_media
|
290
|
+
media_path = File.join(File.expand_path(File.dirname(__FILE__)), 'photo.jpg')
|
291
|
+
media_id = Flickrie.upload(media_path)
|
292
|
+
assert_includes Flickrie.public_media_from_user(@user_nsid).map(&:id), media_id
|
293
|
+
Flickrie.delete_media(media_id)
|
294
|
+
refute_includes Flickrie.public_media_from_user(@user_nsid).map(&:id), media_id
|
295
|
+
end
|
296
|
+
|
297
|
+
def test_media_from_contacts
|
298
|
+
medias = [
|
299
|
+
Flickrie.media_from_contacts(
|
300
|
+
:include_self => 1, :single_photo => 1, :extras => @all_extras).first,
|
301
|
+
Flickrie.public_media_from_user_contacts(@user_nsid,
|
302
|
+
:include_self => 1, :single_photo => 1, :extras => @all_extras).first
|
303
|
+
]
|
304
|
+
|
305
|
+
medias.each do |media|
|
306
|
+
assert_equal '7093101501', media.id
|
307
|
+
assert_equal '9337f28800', media.secret
|
308
|
+
assert_equal '7090', media.server
|
309
|
+
assert_equal 8, media.farm
|
310
|
+
assert_equal 'IMG_0917', media.title
|
311
|
+
assert_equal '', media.tags.join(' ')
|
312
|
+
assert_equal '', media.machine_tags.join(' ')
|
313
|
+
assert_equal 0, media.views_count
|
314
|
+
assert_equal '0', media.license.id
|
315
|
+
assert_not_nil media.url
|
316
|
+
assert_equal 'ready', media.media_status
|
317
|
+
|
318
|
+
# Time
|
319
|
+
assert_instance_of Time, media.uploaded_at
|
320
|
+
assert_instance_of Time, media.updated_at
|
321
|
+
assert_instance_of Time, media.taken_at
|
322
|
+
assert_equal 0, media.taken_at_granularity
|
323
|
+
|
324
|
+
# Location
|
325
|
+
assert_nil media.location
|
326
|
+
|
327
|
+
# Owner
|
328
|
+
assert_equal '67131352@N04', media.owner.nsid
|
329
|
+
assert_equal 'Janko Marohnić', media.owner.username
|
330
|
+
assert_equal '5464', media.owner.icon_server
|
331
|
+
assert_equal 6, media.owner.icon_farm
|
332
|
+
refute media.owner.buddy_icon_url.empty?
|
333
|
+
|
334
|
+
# Visibility (This is the difference from Flickrie.media_from_set)
|
335
|
+
assert_equal true, media.visibility.public?
|
336
|
+
assert_equal false, media.visibility.friends?
|
337
|
+
assert_equal false, media.visibility.family?
|
338
|
+
assert_equal nil, media.visibility.contacts?
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
def test_get_media_context
|
343
|
+
context = Flickrie.get_media_context(@media_id)
|
344
|
+
|
345
|
+
assert_equal 98, context['count']
|
346
|
+
|
347
|
+
previous_media = context['prevphoto']
|
348
|
+
assert_equal '6946978706', previous_media.id
|
349
|
+
assert_equal 'b38270bbd6', previous_media.secret
|
350
|
+
assert_equal '7216', previous_media.server
|
351
|
+
assert_equal 8, previous_media.farm
|
352
|
+
assert_equal 'IMG_0795', previous_media.title
|
353
|
+
refute previous_media.url.empty?
|
354
|
+
assert_equal '0', previous_media.license.id
|
355
|
+
assert_equal false, previous_media.faved?
|
356
|
+
|
357
|
+
next_media = context['nextphoto']
|
358
|
+
assert_equal '6946979704', next_media.id
|
359
|
+
assert_equal '74513ff732', next_media.secret
|
360
|
+
assert_equal '7234', next_media.server
|
361
|
+
assert_equal 8, next_media.farm
|
362
|
+
assert_equal 'IMG_0797', next_media.title
|
363
|
+
refute next_media.url.empty?
|
364
|
+
assert_equal '0', next_media.license.id
|
365
|
+
assert_equal false, next_media.faved?
|
366
|
+
end
|
367
|
+
|
368
|
+
def test_media_replace
|
369
|
+
media_path = File.join(File.expand_path(File.dirname(__FILE__)), 'photo.jpg')
|
370
|
+
begin
|
371
|
+
media_id = Flickrie.upload(media_path)
|
372
|
+
Flickrie.replace(media_path, media_id)
|
373
|
+
flunk
|
374
|
+
rescue => exception
|
375
|
+
assert_equal "Not a pro account", exception.message
|
376
|
+
ensure
|
377
|
+
Flickrie.delete_media(media_id)
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
289
381
|
def test_methods_returning_nil
|
290
382
|
media = Flickrie::Photo.new
|
291
383
|
|
data/test/photo.jpg
ADDED
Binary file
|
data/test/photo_test.rb
CHANGED
@@ -146,6 +146,24 @@ class PhotoTest < Test::Unit::TestCase
|
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
+
def test_photo_upload
|
150
|
+
photo_path = File.join(File.expand_path(File.dirname(__FILE__)), 'photo.jpg')
|
151
|
+
photo_id = Flickrie.upload(photo_path)
|
152
|
+
assert_nothing_raised(Flickrie::Error) { Flickrie.get_photo_info(photo_id) }
|
153
|
+
Flickrie.delete_photo(photo_id)
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_asynchronous_photo_upload
|
157
|
+
photo_path = File.join(File.expand_path(File.dirname(__FILE__)), 'photo.jpg')
|
158
|
+
ticket_id = Flickrie.upload(photo_path, :async => 1)
|
159
|
+
begin
|
160
|
+
ticket = Flickrie.check_upload_tickets([ticket_id]).first
|
161
|
+
end until ticket.complete?
|
162
|
+
photo_id = ticket.photo_id
|
163
|
+
assert_nothing_raised(Flickrie::Error) { Flickrie.get_photo_info(photo_id) }
|
164
|
+
Flickrie.delete_photo(photo_id)
|
165
|
+
end
|
166
|
+
|
149
167
|
def test_other_api_calls
|
150
168
|
# add_photo_tags, get_photo_info, remove_photo_tag,
|
151
169
|
# search_photos, photos_from_contacts
|
@@ -155,6 +173,9 @@ class PhotoTest < Test::Unit::TestCase
|
|
155
173
|
photo = Flickrie.get_photo_info(@photo_id)
|
156
174
|
tag = photo.tags.find { |tag| tag.content == "janko" }
|
157
175
|
Flickrie.remove_photo_tag(tag.id)
|
176
|
+
Flickrie.photos_from_contacts(:include_self => 1)
|
177
|
+
Flickrie.public_photos_from_user_contacts(@user_nsid, :include_self => 1)
|
178
|
+
Flickrie.get_photo_context(@photo_id)
|
158
179
|
Flickrie.search_photos(:user_id => @user_nsid)
|
159
180
|
end
|
160
181
|
end
|
data/test/test.rb
CHANGED
data/test/video.mov
ADDED
Binary file
|
data/test/video_test.rb
CHANGED
@@ -66,6 +66,13 @@ class VideoTest < Test::Unit::TestCase
|
|
66
66
|
assert_nil video.mobile_download_url
|
67
67
|
end
|
68
68
|
|
69
|
+
def test_video_upload
|
70
|
+
video_path = File.join(File.expand_path(File.dirname(__FILE__)), 'video.mov')
|
71
|
+
video_id = Flickrie.upload(video_path)
|
72
|
+
assert_nothing_raised(Flickrie::Error) { Flickrie.get_video_info(video_id) }
|
73
|
+
Flickrie.delete_video(video_id)
|
74
|
+
end
|
75
|
+
|
69
76
|
def test_other_api_calls
|
70
77
|
# add_video_tags, remove_video_tag,
|
71
78
|
# search_videos, videos_from_contacts,
|
@@ -76,9 +83,12 @@ class VideoTest < Test::Unit::TestCase
|
|
76
83
|
video = Flickrie.get_video_info(@video_id)
|
77
84
|
tag = video.tags.find { |tag| tag.content == "janko" }
|
78
85
|
Flickrie.remove_video_tag(tag.id)
|
79
|
-
Flickrie.
|
86
|
+
Flickrie.videos_from_contacts(:include_self => 1)
|
87
|
+
Flickrie.public_videos_from_user_contacts(@user_nsid, :include_self => 1)
|
80
88
|
Flickrie.public_videos_from_user(@user_nsid)
|
81
89
|
Flickrie.videos_from_set(@set_id)
|
90
|
+
Flickrie.get_video_context(@video_id)
|
91
|
+
Flickrie.search_videos(:user_id => @user_nsid)
|
82
92
|
end
|
83
93
|
end
|
84
94
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flickrie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday_middleware
|
16
|
-
requirement: &
|
16
|
+
requirement: &70095977665920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70095977665920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: simple_oauth
|
27
|
-
requirement: &
|
27
|
+
requirement: &70095977665300 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,29 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70095977665300
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: multi_xml
|
38
|
+
requirement: &70095977664520 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70095977664520
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activesupport
|
49
|
+
requirement: &70095977662960 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70095977662960
|
36
58
|
description: This gem is a nice wrapper for the Flickr API with an intuitive interface.
|
37
59
|
email:
|
38
60
|
- janko.marohnic@gmail.com
|
@@ -56,10 +78,12 @@ files:
|
|
56
78
|
- lib/flickrie/media.rb
|
57
79
|
- lib/flickrie/media/note.rb
|
58
80
|
- lib/flickrie/media/tag.rb
|
81
|
+
- lib/flickrie/media/ticket.rb
|
59
82
|
- lib/flickrie/media/visibility.rb
|
60
83
|
- lib/flickrie/oauth.rb
|
61
84
|
- lib/flickrie/photo.rb
|
62
85
|
- lib/flickrie/set.rb
|
86
|
+
- lib/flickrie/upload_client.rb
|
63
87
|
- lib/flickrie/user.rb
|
64
88
|
- lib/flickrie/version.rb
|
65
89
|
- lib/flickrie/video.rb
|
@@ -68,10 +92,12 @@ files:
|
|
68
92
|
- test/location_test.rb
|
69
93
|
- test/media_test.rb
|
70
94
|
- test/oauth_test.rb
|
95
|
+
- test/photo.jpg
|
71
96
|
- test/photo_test.rb
|
72
97
|
- test/set_test.rb
|
73
98
|
- test/test.rb
|
74
99
|
- test/user_test.rb
|
100
|
+
- test/video.mov
|
75
101
|
- test/video_test.rb
|
76
102
|
homepage: https://github.com/janko-m/flickrie
|
77
103
|
licenses: []
|
@@ -106,9 +132,11 @@ test_files:
|
|
106
132
|
- test/location_test.rb
|
107
133
|
- test/media_test.rb
|
108
134
|
- test/oauth_test.rb
|
135
|
+
- test/photo.jpg
|
109
136
|
- test/photo_test.rb
|
110
137
|
- test/set_test.rb
|
111
138
|
- test/test.rb
|
112
139
|
- test/user_test.rb
|
140
|
+
- test/video.mov
|
113
141
|
- test/video_test.rb
|
114
142
|
has_rdoc:
|