flickr-objects 0.0.2 → 0.1.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/README.md +55 -85
- data/lib/flickr/api/api_methods/flickr.rb +0 -1
- data/lib/flickr/api/api_methods/person.rb +3 -3
- data/lib/flickr/api/api_methods/photo.rb +12 -1
- data/lib/flickr/api/api_methods/set.rb +6 -5
- data/lib/flickr/api/flickr.rb +9 -9
- data/lib/flickr/api/person.rb +13 -29
- data/lib/flickr/api/photo.rb +51 -4
- data/lib/flickr/api/set.rb +20 -25
- data/lib/flickr/api/upload_ticket.rb +4 -2
- data/lib/flickr/api.rb +0 -2
- data/lib/flickr/api_caller.rb +5 -11
- data/lib/flickr/client/upload_client.rb +4 -16
- data/lib/flickr/client.rb +1 -1
- data/lib/flickr/configuration.rb +2 -0
- data/lib/flickr/errors.rb +19 -0
- data/lib/flickr/middleware.rb +63 -0
- data/lib/flickr/oauth.rb +109 -0
- data/lib/flickr/object/attribute/finder.rb +2 -2
- data/lib/flickr/object/attribute.rb +8 -8
- data/lib/flickr/object.rb +13 -2
- data/lib/flickr/objects/attribute_values/{collection.rb → list.rb} +1 -1
- data/lib/flickr/objects/attribute_values/photo.rb +81 -16
- data/lib/flickr/objects/attribute_values/set.rb +1 -5
- data/lib/flickr/objects/attribute_values/upload_ticket.rb +3 -5
- data/lib/flickr/objects/list.rb +86 -0
- data/lib/flickr/objects/location.rb +2 -0
- data/lib/flickr/objects/note.rb +3 -1
- data/lib/flickr/objects/permissions.rb +2 -0
- data/lib/flickr/objects/person.rb +8 -5
- data/lib/flickr/objects/photo.rb +98 -30
- data/lib/flickr/objects/set.rb +4 -5
- data/lib/flickr/objects/tag.rb +2 -0
- data/lib/flickr/objects/upload_ticket.rb +8 -6
- data/lib/flickr/objects/visibility.rb +2 -0
- data/lib/flickr/objects.rb +2 -7
- data/lib/flickr/version.rb +1 -1
- data/lib/flickr.rb +5 -0
- metadata +60 -32
- data/lib/flickr/api/api_methods/collection.rb +0 -4
- data/lib/flickr/api/api_methods/location.rb +0 -4
- data/lib/flickr/api/api_methods/media.rb +0 -14
- data/lib/flickr/api/api_methods/note.rb +0 -4
- data/lib/flickr/api/api_methods/permissions.rb +0 -4
- data/lib/flickr/api/api_methods/tag.rb +0 -4
- data/lib/flickr/api/api_methods/video.rb +0 -4
- data/lib/flickr/api/api_methods/visibility.rb +0 -4
- data/lib/flickr/api/collection.rb +0 -4
- data/lib/flickr/api/location.rb +0 -4
- data/lib/flickr/api/media.rb +0 -52
- data/lib/flickr/api/note.rb +0 -4
- data/lib/flickr/api/permissions.rb +0 -4
- data/lib/flickr/api/tag.rb +0 -4
- data/lib/flickr/api/video.rb +0 -11
- data/lib/flickr/api/visibility.rb +0 -4
- data/lib/flickr/client/middleware/retry.rb +0 -29
- data/lib/flickr/client/middleware.rb +0 -42
- data/lib/flickr/helpers/inheritable_attr_accessor.rb +0 -18
- data/lib/flickr/objects/attribute_values/media.rb +0 -70
- data/lib/flickr/objects/attribute_values/video.rb +0 -27
- data/lib/flickr/objects/collection.rb +0 -56
- data/lib/flickr/objects/media.rb +0 -72
- data/lib/flickr/objects/video.rb +0 -21
data/README.md
CHANGED
@@ -22,85 +22,68 @@ Flickr.configure do |config|
|
|
22
22
|
end
|
23
23
|
```
|
24
24
|
|
25
|
-
If you don't have
|
26
|
-
|
25
|
+
If you don't have them yet, you can apply for them [here](http://www.flickr.com/services/apps/create/apply).
|
26
|
+
|
27
|
+
For list of possible configuration options, take a look at [this
|
28
|
+
wiki](https://github.com/janko-m/flickr-objects/wiki/Configuration).
|
27
29
|
|
28
30
|
## Usage
|
29
31
|
|
30
|
-
|
32
|
+
This gem maps [Flickr's API methods](http://flickr.com/api) to methods on objects.
|
33
|
+
A handy reference for those mappings is in `Flickr.api_methods`:
|
31
34
|
|
32
35
|
```ruby
|
33
|
-
|
34
|
-
|
35
|
-
photo = photos.first
|
36
|
-
photo.id #=> "231233252"
|
37
|
-
photo.title #=> "My cat"
|
38
|
-
photo.visibility.public? #=> true
|
39
|
-
photo.tags = "cats funny" # API request
|
40
|
-
photo.get_info! # API request
|
41
|
-
photo.tags.join(" ") #=> "cats funny"
|
36
|
+
Flickr.api_methods["flickr.photos.search"] #=> ["Flickr::Photo.search"]
|
37
|
+
Flickr.api_methods["flickr.photosets.getList"] #=> ["Flickr::Person#get_sets"]
|
42
38
|
```
|
43
39
|
|
44
|
-
|
45
|
-
`
|
40
|
+
As you see, sometimes names can differ, but you can always find out this way.
|
41
|
+
So, `Flickr::Photo.search` is a **class** API method, and
|
42
|
+
`Flickr::Person#get_sets` is an **instance** API method.
|
46
43
|
|
47
|
-
|
48
|
-
- `photo.tags=` <=> `Flickr::Photo#tags=`
|
49
|
-
- `photo.get_info!` <=> `Flickr::Photo#get_info!`
|
44
|
+
Here's an example:
|
50
45
|
|
51
|
-
|
52
|
-
|
46
|
+
```ruby
|
47
|
+
photos = Flickr.photos.search(user_id: "78733179@N04") #=> [#<Flickr::Photo: ...>, #<Flickr::Photo: ...>, ...]
|
53
48
|
|
54
|
-
|
55
|
-
|
56
|
-
|
49
|
+
photo = photos.first
|
50
|
+
photo.id #=> "231233252"
|
51
|
+
photo.title #=> "My cat"
|
52
|
+
photo.visibility.public? #=> true
|
57
53
|
|
58
|
-
|
59
|
-
|
60
|
-
implies these kind of obvious parameters, so instead of having to call it like this:
|
54
|
+
person = Flickr.people.find("78733179@N04")
|
55
|
+
sets = person.get_sets #=> [#<Flickr::Set: ...>, #<Flickr::Set: ...>, ...]
|
61
56
|
|
62
|
-
|
63
|
-
|
57
|
+
set = sets.first
|
58
|
+
set.id #=> "11243423"
|
59
|
+
set.photos_count #=> 40
|
64
60
|
```
|
65
61
|
|
66
|
-
|
62
|
+
You can always manually instantiate objects with `Flickr.objects.find(id)`
|
63
|
+
(in the above example we called `Flickr.people.find(id)`).
|
64
|
+
|
65
|
+
Parameters to API methods are not always passed as a hash. For example, instead
|
66
|
+
of calling "flickr.people.findByEmail" like this:
|
67
67
|
|
68
68
|
```ruby
|
69
|
-
Flickr.people.find_by_email("janko.marohnic@gmail.com")
|
69
|
+
Flickr.people.find_by_email(find_email: "janko.marohnic@gmail.com")
|
70
70
|
```
|
71
71
|
|
72
|
-
|
73
|
-
documentation on valid arguments, just look at the source code under
|
74
|
-
`lib/flickr/api/`. In our example, because `.find_by_email` belongs to `people`,
|
75
|
-
the method is located in [`lib/flickr/api/person.rb`](https://github.com/janko-m/flickr-objects/blob/master/lib/flickr/api/person.rb#L3-6).
|
76
|
-
|
77
|
-
Now, let's say that you want to use a method that fetches all sets from a
|
78
|
-
person. And you find out that this method is "flickr.photosets.getList".
|
79
|
-
How can you now find out where it is located in this gem? Well, that's where
|
80
|
-
`Flickr.api_methods` comes in handy. You can call it in the console:
|
72
|
+
this gem has the convention of calling it like this:
|
81
73
|
|
82
74
|
```ruby
|
83
|
-
Flickr.
|
75
|
+
Flickr.people.find_by_email("janko.marohnic@gmail.com")
|
84
76
|
```
|
85
77
|
|
86
|
-
|
78
|
+
Obvious parameters will always be passed like this. You can still pass a hash of
|
79
|
+
other parameters as the last argument.
|
87
80
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
sets.first.id #=> "12312324"
|
92
|
-
|
93
|
-
# Or like this:
|
94
|
-
sets = Flickr.find_by_username("josh").get_sets
|
95
|
-
sets.first.id #=> "12312324"
|
96
|
-
```
|
81
|
+
For documentation on valid arguments, just look at the source code under
|
82
|
+
[`lib/flickr/api`](https://github.com/janko-m/flickr-objects/blob/master/lib/flickr/api).
|
83
|
+
There you will find listed all the API methods of a specific object.
|
97
84
|
|
98
85
|
## Sizes
|
99
86
|
|
100
|
-
When you upload photos to Flickr, Flickr automatically makes different versions
|
101
|
-
(sizes) of your photo. So, for example you have "Medium 500", "Small 320", and
|
102
|
-
so on. Here's how you use this in the gem:
|
103
|
-
|
104
87
|
```ruby
|
105
88
|
person = Flickr.person.find(person_id)
|
106
89
|
photo = person.get_public_photos(sizes: :all).first
|
@@ -112,10 +95,6 @@ photo.height #=> 280
|
|
112
95
|
|
113
96
|
photo.medium!(500)
|
114
97
|
photo.width #=> 500
|
115
|
-
|
116
|
-
# You can also call it like this:
|
117
|
-
photo.small240!
|
118
|
-
photo.width #=> 240
|
119
98
|
```
|
120
99
|
|
121
100
|
It is important here that you pass `sizes: :all` to `Flickr::Person#get_public_photos`.
|
@@ -125,7 +104,7 @@ So, in your (Rails) application, one could use it like this:
|
|
125
104
|
class PhotosController < ApplicationController
|
126
105
|
def index
|
127
106
|
person = Flickr.people.find("78733179@N04")
|
128
|
-
@photos = person.get_public_photos(sizes: :all).map(
|
107
|
+
@photos = person.get_public_photos(sizes: :all).map { |photo| photo.medium!(500) }
|
129
108
|
end
|
130
109
|
end
|
131
110
|
```
|
@@ -135,22 +114,23 @@ end
|
|
135
114
|
<% end %>
|
136
115
|
```
|
137
116
|
|
138
|
-
|
117
|
+
To find out more, take a look at [this wiki](https://github.com/janko-m/flickr-objects/wiki/Sizes).
|
118
|
+
|
119
|
+
## Authentication
|
139
120
|
|
140
|
-
If you need to make authenticated API requests (which you'll probably often want), you
|
141
|
-
|
121
|
+
If you need to make authenticated API requests (which you'll probably often want), you should create an
|
122
|
+
instance, assigning it the user's access token.
|
142
123
|
|
143
124
|
```ruby
|
144
125
|
flickr = Flickr.new("ACCESS_TOKEN_KEY", "ACCESS_TOKEN_SECRET")
|
145
126
|
|
127
|
+
# It has the same interface as `Flickr`
|
146
128
|
flickr.test_login #=> {"id" => "78733179@N04", "username" => ...}
|
147
129
|
flickr.people.find("78733179@N04").get_photos #=> [#<Flickr::Photo ...>, #<Flickr::Photo, ...>, ...]
|
148
130
|
```
|
149
131
|
|
150
|
-
|
151
|
-
|
152
|
-
[omniauth-flickr](https://github.com/timbreitkreutz/omniauth-flickr) gem.
|
153
|
-
Another (more lightweight) solution would be [flickr-login](https://github.com/janko-m/flickr-login).
|
132
|
+
For details on how to authenticate (obtain the access token) take a look at
|
133
|
+
[this wiki](http://github.com/janko-m/flickr-objects/wiki/Authentication).
|
154
134
|
|
155
135
|
You can also assign the access token globally in your configuration.
|
156
136
|
|
@@ -161,10 +141,6 @@ Flickr.configure do |config|
|
|
161
141
|
end
|
162
142
|
```
|
163
143
|
|
164
|
-
This is especially useful if you're, for example, using Flickr as a photo storage in your
|
165
|
-
application, and that access token is actually yours.
|
166
|
-
|
167
|
-
|
168
144
|
## Upload
|
169
145
|
|
170
146
|
```ruby
|
@@ -182,27 +158,21 @@ For asynchronous upload take a look at [this wiki](https://github.com/janko-m/fl
|
|
182
158
|
## Attributes and methods
|
183
159
|
|
184
160
|
For the list of attributes and methods that Flickr objects have, the best place to look at
|
185
|
-
is the source code. The source code is
|
186
|
-
|
187
|
-
people's code
|
188
|
-
|
189
|
-
For example, list of common attributes that `Flickr::Photo`
|
190
|
-
and `Flickr::Video` have can be found in [`lib/flickr/objects/media.rb`]("https://github.com/janko-m/flickr-objects/blob/master/lib/flickr/objects/media.rb").
|
191
|
-
|
192
|
-

|
161
|
+
is the source code. The source code is written in such a simple way that it acts as its
|
162
|
+
own documentation, so don't be discouraged if you haven't had experience in looking into other
|
163
|
+
people's code yet :)
|
193
164
|
|
194
|
-
|
165
|
+
For example, list of `Flickr::Photo`'s attributes can be found in
|
166
|
+
[`lib/flickr/objects/media.rb`](https://github.com/janko-m/flickr-objects/blob/master/lib/flickr/objects/media.rb).
|
167
|
+
Take a look just to see how it looks like :)
|
195
168
|
|
196
169
|
## Few words
|
197
170
|
|
198
|
-
Most of the API methods are not covered yet (because they are so many).
|
199
|
-
|
200
|
-
with normal demands should have everything he needs.
|
171
|
+
Most of the API methods are not covered yet (because they are so many). I will
|
172
|
+
be covering new ones regularly.
|
201
173
|
|
202
|
-
|
203
|
-
|
204
|
-
[Twitter](https://twitter.com/m_janko)), and I will try to get them covered
|
205
|
-
in the next version. Pull requests are also very welcome :)
|
174
|
+
Feel free to speed up covering certain API methods by contacting me through
|
175
|
+
[Twitter](https://twitter.com/m_janko). Pull requests are also very welcome :)
|
206
176
|
|
207
177
|
## Social
|
208
178
|
|
@@ -4,9 +4,9 @@ class Flickr
|
|
4
4
|
class_api_method :find_by_username, "flickr.people.findByUsername"
|
5
5
|
|
6
6
|
instance_api_method :get_info!, "flickr.people.getInfo"
|
7
|
-
instance_api_method :get_photos, "flickr.people.getPhotos"
|
8
|
-
instance_api_method :get_public_photos, "flickr.people.getPublicPhotos"
|
9
|
-
instance_api_method :get_public_photos_from_contacts, "flickr.photos.getContactsPublicPhotos"
|
7
|
+
instance_api_method :get_photos, "flickr.people.getPhotos"
|
8
|
+
instance_api_method :get_public_photos, "flickr.people.getPublicPhotos"
|
9
|
+
instance_api_method :get_public_photos_from_contacts, "flickr.photos.getContactsPublicPhotos"
|
10
10
|
instance_api_method :get_sets, "flickr.photosets.getList"
|
11
11
|
end
|
12
12
|
end
|
@@ -1,4 +1,15 @@
|
|
1
1
|
class Flickr
|
2
|
-
class Photo <
|
2
|
+
class Photo < Object
|
3
|
+
class_api_method :get_from_contacts, "flickr.photos.getContactsPhotos"
|
4
|
+
class_api_method :search, "flickr.photos.search"
|
5
|
+
class_api_method :delete, "flickr.photos.delete"
|
6
|
+
|
7
|
+
instance_api_method :add_tags, "flickr.photos.addTags"
|
8
|
+
instance_api_method :delete, "flickr.photos.delete"
|
9
|
+
instance_api_method :get_info!, "flickr.photos.getInfo"
|
10
|
+
instance_api_method :get_sizes!, "flickr.photos.getSizes"
|
11
|
+
instance_api_method :remove_tag, "flickr.photos.removeTag"
|
12
|
+
instance_api_method :set_content_type, "flickr.photos.setContentType", aliases: [:content_type=]
|
13
|
+
instance_api_method :set_tags, "flickr.photos.setTags", aliases: [:tags=]
|
3
14
|
end
|
4
15
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
class Flickr
|
2
2
|
class Set < Object
|
3
3
|
class_api_method :create, "flickr.photosets.create"
|
4
|
+
class_api_method :delete, "flickr.photosets.delete"
|
4
5
|
|
5
|
-
instance_api_method :add_photo, "flickr.photosets.addPhoto"
|
6
|
+
instance_api_method :add_photo, "flickr.photosets.addPhoto"
|
6
7
|
instance_api_method :delete, "flickr.photosets.delete"
|
7
|
-
instance_api_method :edit_photos, "flickr.photosets.editPhotos"
|
8
|
+
instance_api_method :edit_photos, "flickr.photosets.editPhotos"
|
8
9
|
instance_api_method :get_info!, "flickr.photosets.getInfo"
|
9
|
-
instance_api_method :get_photos, "flickr.photosets.getPhotos"
|
10
|
-
instance_api_method :remove_photos, "flickr.photosets.removePhotos"
|
11
|
-
instance_api_method :remove_photo, "flickr.photosets.removePhoto"
|
10
|
+
instance_api_method :get_photos, "flickr.photosets.getPhotos"
|
11
|
+
instance_api_method :remove_photos, "flickr.photosets.removePhotos"
|
12
|
+
instance_api_method :remove_photo, "flickr.photosets.removePhoto"
|
12
13
|
end
|
13
14
|
end
|
data/lib/flickr/api/flickr.rb
CHANGED
@@ -2,31 +2,31 @@ require_relative "api_methods/flickr"
|
|
2
2
|
|
3
3
|
class Flickr
|
4
4
|
api_methods = proc do
|
5
|
-
def upload(
|
6
|
-
response = upload_client.upload(
|
5
|
+
def upload(photo, params = {})
|
6
|
+
response = upload_client.upload(photo, params)
|
7
7
|
params[:async] == 1 ? response["ticketid"] : response["photoid"]
|
8
8
|
end
|
9
9
|
|
10
|
-
def replace(
|
11
|
-
response = upload_client.replace(
|
10
|
+
def replace(photo, id, params = {})
|
11
|
+
response = upload_client.replace(photo, id, params)
|
12
12
|
params[:async] == 1 ? response["ticketid"] : response["photoid"]
|
13
13
|
end
|
14
14
|
|
15
15
|
def check_upload_tickets(tickets, params = {})
|
16
|
-
|
17
|
-
|
16
|
+
Flickr.deprecation_warn "`Flickr.check_upload_tickets` is deprecated. Use `Flickr.upload_tickets.check` instead."
|
17
|
+
upload_tickets.check(tickets, params)
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_login(params = {})
|
21
|
-
client.get
|
21
|
+
client.get f(__method__), params
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_echo(params = {})
|
25
|
-
client.get
|
25
|
+
client.get f(__method__), params
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_null(params = {})
|
29
|
-
client.get
|
29
|
+
client.get f(__method__), params
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
data/lib/flickr/api/person.rb
CHANGED
@@ -1,57 +1,41 @@
|
|
1
|
+
require_relative "api_methods/person"
|
2
|
+
|
1
3
|
class Flickr
|
2
4
|
class Person < Object
|
3
5
|
def self.find_by_email(email, params = {})
|
4
|
-
response = client.get
|
6
|
+
response = client.get f(__method__), params.merge(find_email: email)
|
5
7
|
new(response["user"], client)
|
6
8
|
end
|
7
9
|
|
8
10
|
def self.find_by_username(username, params = {})
|
9
|
-
response = client.get
|
11
|
+
response = client.get f(__method__), params.merge(username: username)
|
10
12
|
new(response["user"], client)
|
11
13
|
end
|
12
14
|
|
13
15
|
def get_info!(params = {})
|
14
|
-
response = client.get
|
16
|
+
response = client.get f(__method__), params.merge(user_id: id)
|
15
17
|
@hash.update(response["person"])
|
16
18
|
self
|
17
19
|
end
|
18
20
|
|
19
21
|
def get_photos(params = {})
|
20
|
-
|
21
|
-
|
22
|
-
def get_videos(params = {})
|
23
|
-
get_media(params).select { |object| object.is_a?(Flickr::Video) }
|
24
|
-
end
|
25
|
-
def get_media(params = {})
|
26
|
-
response = client.get flickr_method(__method__), handle_extras(params.merge(user_id: id))
|
27
|
-
Collection.new(response["photos"].delete("photo"), Media, response["photos"], client)
|
22
|
+
response = client.get f(__method__), handle_extras(params.merge(user_id: id))
|
23
|
+
Photo.new_list(response["photos"].delete("photo"), client, response["photos"])
|
28
24
|
end
|
29
25
|
|
30
26
|
def get_public_photos(params = {})
|
31
|
-
|
32
|
-
|
33
|
-
def get_public_videos(params = {})
|
34
|
-
get_public_media(params).select { |object| object.is_a?(Flickr::Video) }
|
35
|
-
end
|
36
|
-
def get_public_media(params = {})
|
37
|
-
response = client.get flickr_method(__method__), handle_extras(params.merge(user_id: id))
|
38
|
-
Collection.new(response["photos"].delete("photo"), Media, response["photos"], client)
|
27
|
+
response = client.get f(__method__), handle_extras(params.merge(user_id: id))
|
28
|
+
Photo.new_list(response["photos"].delete("photo"), client, response["photos"])
|
39
29
|
end
|
40
30
|
|
41
31
|
def get_public_photos_from_contacts(params = {})
|
42
|
-
|
43
|
-
|
44
|
-
def get_public_videos_from_contacts(params = {})
|
45
|
-
get_public_media_from_contacts(params).select {|object| object.is_a?(Flickr::Video) }
|
46
|
-
end
|
47
|
-
def get_public_media_from_contacts(params = {})
|
48
|
-
response = client.get flickr_method(__method__), handle_extras(params.merge(user_id: id))
|
49
|
-
Collection.new(response["photos"].delete("photo"), Media, response["photos"], client)
|
32
|
+
response = client.get f(__method__), handle_extras(params.merge(user_id: id))
|
33
|
+
Photo.new_list(response["photos"].delete("photo"), client, response["photos"])
|
50
34
|
end
|
51
35
|
|
52
36
|
def get_sets(params = {})
|
53
|
-
response = client.get
|
54
|
-
|
37
|
+
response = client.get f(__method__), params.merge(user_id: id)
|
38
|
+
Set.new_list(response["photosets"].delete("photoset"), client, response["photosets"])
|
55
39
|
end
|
56
40
|
end
|
57
41
|
end
|
data/lib/flickr/api/photo.rb
CHANGED
@@ -1,11 +1,58 @@
|
|
1
|
+
require_relative "api_methods/photo"
|
2
|
+
|
1
3
|
class Flickr
|
2
|
-
class Photo <
|
4
|
+
class Photo < Object
|
5
|
+
def self.search(params = {})
|
6
|
+
response = client.get f(__method__), handle_extras(params)
|
7
|
+
new_list(response["photos"].delete("photo"), client, response["photos"])
|
8
|
+
end
|
9
|
+
|
3
10
|
def self.get_from_contacts(params = {})
|
4
|
-
|
11
|
+
response = client.get f(__method__), handle_extras(params)
|
12
|
+
new_list(response["photos"].delete("photo"), client, response["photos"])
|
5
13
|
end
|
6
14
|
|
7
|
-
def self.
|
8
|
-
|
15
|
+
def self.delete(id, params = {})
|
16
|
+
find(id).delete(params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_info!(params = {})
|
20
|
+
response = client.get f(__method__), params.merge(photo_id: id)
|
21
|
+
@hash.update(response["photo"])
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_sizes!(params = {})
|
26
|
+
response = client.get f(__method__), params.merge(photo_id: id)
|
27
|
+
@hash.update(response["sizes"])
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete(params = {})
|
32
|
+
client.post f(__method__), params.merge(photo_id: id)
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
def set_content_type(content_type, params = {})
|
37
|
+
client.post f(__method__), params.merge(photo_id: id, content_type: content_type)
|
38
|
+
content_type
|
39
|
+
end
|
40
|
+
alias content_type= set_content_type
|
41
|
+
|
42
|
+
def set_tags(tags, params = {})
|
43
|
+
client.post f(__method__), params.merge(photo_id: id, tags: tags)
|
44
|
+
tags
|
45
|
+
end
|
46
|
+
alias tags= set_tags
|
47
|
+
|
48
|
+
def add_tags(tags, params = {})
|
49
|
+
client.post f(__method__), params.merge(photo_id: id, tags: tags)
|
50
|
+
tags
|
51
|
+
end
|
52
|
+
|
53
|
+
def remove_tag(tag_id, params = {})
|
54
|
+
client.post f(__method__), params.merge(photo_id: id, tag_id: tag_id)
|
55
|
+
tag_id
|
9
56
|
end
|
10
57
|
end
|
11
58
|
end
|
data/lib/flickr/api/set.rb
CHANGED
@@ -1,52 +1,47 @@
|
|
1
|
+
require_relative "api_methods/set"
|
2
|
+
|
1
3
|
class Flickr
|
2
4
|
class Set < Object
|
3
|
-
def add_photo(media_id, params = {})
|
4
|
-
client.post flickr_method(__method__), params.merge(photoset_id: id, photo_id: media_id)
|
5
|
-
end
|
6
|
-
alias add_video add_photo
|
7
|
-
alias add_media add_photo
|
8
|
-
|
9
5
|
def self.create(params = {})
|
10
|
-
response = client.post
|
6
|
+
response = client.post f(__method__), params
|
11
7
|
new(response["photoset"], client)
|
12
8
|
end
|
13
9
|
|
10
|
+
def self.delete(id, params = {})
|
11
|
+
find(id).delete(params)
|
12
|
+
end
|
13
|
+
|
14
14
|
def delete(params = {})
|
15
|
-
client.post
|
15
|
+
client.post f(__method__), params.merge(photoset_id: id)
|
16
16
|
self
|
17
17
|
end
|
18
18
|
|
19
19
|
def edit_photos(params = {})
|
20
|
-
client.post
|
20
|
+
client.post f(__method__), params.merge(photoset_id: id)
|
21
21
|
self
|
22
22
|
end
|
23
|
-
alias edit_videos edit_photos
|
24
|
-
alias edit_media edit_photos
|
25
23
|
|
26
24
|
def get_info!(params = {})
|
27
|
-
response = client.get
|
25
|
+
response = client.get f(__method__), params.merge(photoset_id: id)
|
28
26
|
@hash.update(response["photoset"])
|
29
27
|
self
|
30
28
|
end
|
31
29
|
|
32
30
|
def get_photos(params = {})
|
33
|
-
|
34
|
-
|
35
|
-
def get_videos(params = {})
|
36
|
-
get_media(params.merge(media: "videos"))
|
31
|
+
response = client.get f(__method__), handle_extras(params.merge(photoset_id: id))
|
32
|
+
Photo.new_list(response["photoset"].delete("photo"), client, response["photoset"])
|
37
33
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
|
35
|
+
def add_photo(photo_id, params = {})
|
36
|
+
client.post f(__method__), params.merge(photoset_id: id, photo_id: photo_id)
|
41
37
|
end
|
42
38
|
|
43
|
-
def remove_photos(
|
44
|
-
client.post
|
39
|
+
def remove_photos(photo_ids, params = {})
|
40
|
+
client.post f(__method__), params.merge(photoset_id: id, photo_ids: photo_ids)
|
45
41
|
end
|
46
|
-
alias remove_videos remove_photos
|
47
|
-
alias remove_media remove_photos
|
48
42
|
|
49
|
-
|
50
|
-
|
43
|
+
def remove_photo(photo_id, params = {})
|
44
|
+
client.post f(__method__), params.merge(photoset_id: id, photo_id: photo_id)
|
45
|
+
end
|
51
46
|
end
|
52
47
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
require_relative "api_methods/upload_ticket"
|
2
|
+
|
1
3
|
class Flickr
|
2
4
|
class UploadTicket < Object
|
3
5
|
def self.check(tickets, params = {})
|
4
|
-
response = client.get
|
5
|
-
|
6
|
+
response = client.get f(__method__), params.merge(tickets: tickets)
|
7
|
+
new_list(response["uploader"].delete("ticket"), client, response["uploader"])
|
6
8
|
end
|
7
9
|
end
|
8
10
|
end
|
data/lib/flickr/api.rb
CHANGED
data/lib/flickr/api_caller.rb
CHANGED
@@ -29,14 +29,12 @@ class Flickr
|
|
29
29
|
[method, *options[:aliases]].each do |method|
|
30
30
|
Flickr.api_methods[flickr_method] << "#{self.name}##{method}"
|
31
31
|
end
|
32
|
-
children.each { |child| Flickr.api_methods[flickr_method] << "#{child.name}##{method}" } if respond_to?(:children)
|
33
32
|
end
|
34
33
|
|
35
34
|
def class_api_method(method, flickr_method, options = {})
|
36
35
|
[method, *options[:aliases]].each do |method|
|
37
36
|
Flickr.api_methods[flickr_method] << "#{self.name}.#{method}"
|
38
37
|
end
|
39
|
-
children.each { |child| Flickr.api_methods[flickr_method] << "#{child.name}.#{method}" } if respond_to?(:children)
|
40
38
|
end
|
41
39
|
|
42
40
|
def api_method(*args)
|
@@ -44,7 +42,7 @@ class Flickr
|
|
44
42
|
class_api_method(*args)
|
45
43
|
end
|
46
44
|
|
47
|
-
def
|
45
|
+
def f(method_name)
|
48
46
|
resolve_flickr_method("#{self.name}.#{method_name}")
|
49
47
|
end
|
50
48
|
|
@@ -58,7 +56,7 @@ class Flickr
|
|
58
56
|
end
|
59
57
|
|
60
58
|
module InstanceMethods
|
61
|
-
def
|
59
|
+
def f(method_name)
|
62
60
|
self.class.resolve_flickr_method("#{self.class.name}##{method_name}")
|
63
61
|
end
|
64
62
|
end
|
@@ -72,11 +70,7 @@ class Flickr
|
|
72
70
|
|
73
71
|
module Methods
|
74
72
|
def handle_extras(params)
|
75
|
-
include_sizes(
|
76
|
-
end
|
77
|
-
|
78
|
-
def include_media(params)
|
79
|
-
include_in_extras(params, "media")
|
73
|
+
include_sizes(params)
|
80
74
|
end
|
81
75
|
|
82
76
|
def include_sizes(params)
|
@@ -84,9 +78,9 @@ class Flickr
|
|
84
78
|
|
85
79
|
abbrs = case params[:sizes]
|
86
80
|
when :all
|
87
|
-
|
81
|
+
Photo::SIZES.values
|
88
82
|
else
|
89
|
-
params[:sizes].map { |size|
|
83
|
+
params[:sizes].map { |size| Photo::SIZES[size] }
|
90
84
|
end
|
91
85
|
urls = abbrs.map { |abbr| "url_#{abbr}" }.join(",")
|
92
86
|
include_in_extras(params, urls)
|
@@ -6,15 +6,13 @@ class Flickr
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
def upload(
|
10
|
-
|
11
|
-
response = post "upload", {photo: file}.merge(params)
|
9
|
+
def upload(photo, params = {})
|
10
|
+
response = post "upload", {photo: get_file(photo)}.merge(params)
|
12
11
|
response.body
|
13
12
|
end
|
14
13
|
|
15
|
-
def replace(
|
16
|
-
|
17
|
-
response = post "replace", {photo: file, photo_id: id}.merge(params)
|
14
|
+
def replace(photo, id, params = {})
|
15
|
+
response = post "replace", {photo: get_file(photo), photo_id: id}.merge(params)
|
18
16
|
response.body
|
19
17
|
end
|
20
18
|
|
@@ -59,16 +57,6 @@ class Flickr
|
|
59
57
|
%w[.svg .svgz] => 'image/svg+xml',
|
60
58
|
%w[.tiff .tif] => 'image/tiff',
|
61
59
|
%w[.ico] => 'image/vnd.microsoft.icon',
|
62
|
-
|
63
|
-
%w[.mpg .mpeg .m1v .m1a .m2a .mpa .mpv] => 'video/mpeg',
|
64
|
-
%w[.mp4 .m4a .m4p .m4b .m4r .m4v] => 'video/mp4',
|
65
|
-
%w[.ogv .oga .ogx .ogg .spx] => 'video/ogg',
|
66
|
-
%w[.mov .qt] => 'video/quicktime',
|
67
|
-
%w[.webm] => 'video/webm',
|
68
|
-
%w[.mkv .mk3d .mka .mks] => 'video/x-matroska',
|
69
|
-
%w[.wmv] => 'video/x-ms-wmv',
|
70
|
-
%w[.flv .f4v .f4p .f4a .f4b] => 'video/x-flv',
|
71
|
-
%w[.avi] => 'video/avi'
|
72
60
|
}
|
73
61
|
end
|
74
62
|
end
|