digitalpardoe-rflickr 1.0.0.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.
@@ -0,0 +1,50 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Blogs < Flickr::APIBase
24
+
25
+ def getList()
26
+ return @flickr.blog_cache_lookup if @flickr.blog_cache_lookup
27
+ res = @flickr.call_method('flickr.blogs.getList')
28
+ list = []
29
+ res.elements['/blogs'].each_element do |e|
30
+ att = e.attributes
31
+ list << Flickr::Blog.new(att['id'], att['name'],
32
+ att['needspassword'].to_i == 1, att['url'])
33
+ end
34
+ @flickr.blog_cache_store(list)
35
+ return list
36
+ end
37
+
38
+ # blog can be either an integer blog ID or a Blog object
39
+ # photo can be either an integer photo ID or a Photo object
40
+ def postPhoto(blog, photo, title, description, blog_password=nil)
41
+ blog = blog.id if blog.class == Flickr::Blog
42
+ photo = photo.id if photo.class == Flickr::Photo
43
+
44
+ args={'blog'=>blog,'photo'=>photo,'title'=>title,
45
+ description=>'description'}
46
+ args['blogs_password'] = blog_password if blog_password
47
+
48
+ @flickr.call_method('flickr.blogs.postPhoto',args)
49
+ end
50
+ end
@@ -0,0 +1,68 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Contacts < Flickr::APIBase
24
+ def getList(filter=nil)
25
+ res = filter ?
26
+ @flickr.call_method('flickr.contacts.getList') :
27
+ @flickr.call_method('flickr.contacts.getList',
28
+ 'filter'=>filter)
29
+ list = []
30
+ res.elements['/contacts'].each_element do |e|
31
+ att = e.attributes
32
+ nsid = att['nsid']
33
+
34
+ person = @flickr.person_cache_lookup(nsid)
35
+ person ||= Flickr::Person.new(nsid,att['username'])
36
+
37
+ person.realname = att['realname']
38
+ person.friend = (att['friend'].to_i == 1)
39
+ person.family = (att['family'].to_i == 1)
40
+ person.ignored = (att['ignored'].to_i == 1)
41
+
42
+ list << person
43
+
44
+ @flickr.person_cache_store(person)
45
+ end
46
+ return list
47
+ end
48
+
49
+ # User can be either the NSID String or a Contact
50
+ def getPublicList(user)
51
+ user = user.nsid if user.class == Flickr::Person
52
+ res = @flickr.call_method('flickr.contacts.getPublicList',
53
+ 'user_id'=>user)
54
+ list = []
55
+ res.elements['/contacts'].each_element do |e|
56
+ att = e.attributes
57
+ nsid = att['nsid']
58
+
59
+ person = @flickr.person_cache_lookup(nsid)
60
+ person ||= Flickr::Person.new(nsid,att['username'])
61
+
62
+ person.ignored = (att['ignored'].to_i == 1)
63
+ @flickr.person_cache_store(person)
64
+ list << person
65
+ end
66
+ return list
67
+ end
68
+ end
@@ -0,0 +1,79 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Favorites < Flickr::APIBase
24
+ # photo can be either a Photo or numeric id
25
+ def add(photo)
26
+ photo = photo.id if photo.class == Flickr::Photo
27
+ return @flickr.call_method('flickr.favorites.add',
28
+ 'photo_id' => photo)
29
+ end
30
+
31
+ # photo can be either a Photo or numeric id
32
+ def remove(photo)
33
+ photo = photo.id if photo.class == Flickr::Photo
34
+ return @flickr.call_method('flickr.favorites.remove',
35
+ 'photo_id' => photo)
36
+ end
37
+
38
+ # This is a little weird because all the parametrs are optional,
39
+ # let's go with it, ok?
40
+ # user can be a Person or a user NSID
41
+ # No caching because it's just too hard.
42
+ def getList(user=nil,extras=nil,per_page=nil,page=nil)
43
+ args = {}
44
+
45
+ user = user.nsid if user.class == Flickr::Person
46
+ args['user_id'] = user if user
47
+ args['extras'] = extras.join(',') if extras.class == Array
48
+ args['per_page'] = per_page if per_page
49
+ args['page'] = page if page
50
+
51
+ res = @flickr.call_method('flickr.favorites.getList',args)
52
+ att = res.root.attributes
53
+ return Flickr::PhotoList.from_xml(res,@flickr)
54
+ end
55
+
56
+ # This is a little weird because all the parametrs are optional,
57
+ # let's go with it, ok?
58
+ # user can be a Person or a user NSID
59
+ # No caching because it's just too hard.
60
+ def getPublicList(user,extras=nil,per_page=nil,page=nil)
61
+ args = {}
62
+
63
+ user = user.nsid if user.class == Flickr::Person
64
+
65
+ args['user_id'] = user if user
66
+ args['extras'] = extras.join(',') if extras.class == Array
67
+ args['per_page'] = per_page if per_page
68
+ args['page'] = page if page
69
+
70
+ res = @flickr.call_method('flickr.favorites.getPublicList',args)
71
+ att = res.root.attributes
72
+ list = Flickr::PhotoList.new(att['page'].to_i,att['pages'].to_i,
73
+ att['perpage'].to_i,att['total'].to_i)
74
+ res.elements['/photos'].each_element do |e|
75
+ list << Flick::Photo.from_xml(e,@flickr)
76
+ end
77
+ return list
78
+ end
79
+ end
@@ -0,0 +1,102 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Groups < Flickr::APIBase
24
+ def pools() @pools ||= Flickr::Pools.new(@flickr,self) end
25
+
26
+ # category can be a Category or nsid string
27
+ def browse(category=nil)
28
+ category=category.id if (category.class == Flickr::Category ||
29
+ category.class == Flickr::SubCategory )
30
+
31
+ args = category ? {'cat_id' => category } : {}
32
+ res = @flickr.call_method('flickr.groups.browse',args)
33
+ att = res.root.attributes
34
+ cat=Flickr::Category.new(att['name'],att['path'],att['pathids'])
35
+ res.elements['/category'].each_element('subcat') do |e|
36
+ att = e.attributes
37
+ cat.subcats << Flickr::SubCategory.new(att['name'],
38
+ att['id'],att['count'].to_i)
39
+ end
40
+ res.elements['/category'].each_element('group') do |e|
41
+ att = e.attributes
42
+ nsid = att['nsid']
43
+
44
+ g = @flickr.group_cache_lookup(nsid)
45
+ g ||= Flickr::Group.new(@flickr,nsid)
46
+
47
+ g.name = att['name']
48
+ g.members = att['members'].to_i
49
+ g.online = att['online'].to_i
50
+ g.chatnsid = att['chatnsid']
51
+ g.inchat = att['inchat'].to_i
52
+
53
+ @flickr.group_cache_store(g)
54
+ cat.groups << g
55
+ end
56
+
57
+ return cat
58
+ end
59
+
60
+ # group can be a Group or group nsid
61
+ def getInfo(group)
62
+ group = group.nsid if group.class == Flickr::Group
63
+ g = @flickr.group_cache_lookup(group)
64
+ return g if g && g.fully_fetched
65
+
66
+ res = @flickr.call_method('flickr.groups.getInfo',
67
+ 'group_id' => group)
68
+ group = res.elements['/group'].attributes['id']
69
+ g ||= Flickr::Group.new(@flickr,nsid)
70
+ g.name = res.elements['/group/name'].text
71
+ g.description = res.elements['/group/description'].text
72
+ g.members = res.elements['/group/members'].text.to_i
73
+ g.privacy = res.elements['/group/privacy'].text.to_i
74
+ g.fully_fetched = true
75
+
76
+ @flickr.group_cache_store(g)
77
+ return g
78
+ end
79
+
80
+ def search(text,per_page=nil,page=nil)
81
+ args = { 'text' => text }
82
+ args['per_page'] = per_page if per_page
83
+ args['page'] = page if page
84
+ res = @flickr.call_method('flickr.groups.search',args)
85
+ att = res.root.attributes
86
+ list = Flickr::GroupList.new(att['page'].to_i,att['pages'].to_i,
87
+ att['perpage'].to_i,att['total'].to_i)
88
+ res.elements['/groups'].each_element('group') do |e|
89
+ att = e.attributes
90
+ nsid = att['nsid']
91
+ g = @flickr.group_cache_lookup(nsid) ||
92
+ Flickr::Group.new(@flickr,nsid)
93
+ g.name = att['name']
94
+ g.eighteenplus = att['eighteenplus'].to_i == 1
95
+
96
+ @flickr.group_cache_store(g)
97
+ list << g
98
+ end
99
+ return list
100
+ end
101
+
102
+ end
@@ -0,0 +1,39 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Interestingness < Flickr::APIBase
24
+ def getList(date=nil,extras=nil,per_page=nil,page=nil)
25
+ args = {}
26
+ if date
27
+ args['date'] = date if date.is_a?(String)
28
+ args['date'] = date.to_s if date.is_a?(Date)
29
+ args['date'] = @flickr.mysql_date(date) if
30
+ date.is_a?(Time)
31
+ end
32
+ extras = extras.join(',') if extras.class == Array
33
+ args['extras'] = extras if extras
34
+ args['per_page'] = per_page if per_page
35
+ args['page'] = page if page
36
+ res = @flickr.call_method('flickr.interestingness.getList',args)
37
+ return Flickr::PhotoSet.from_xml(res.root,@flickr)
38
+ end
39
+ end
@@ -0,0 +1,43 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Licenses < Flickr::APIBase
24
+ def getInfo
25
+ return @flickr.license_cache_lookup if
26
+ @flickr.license_cache_lookup
27
+ list = {}
28
+ res = @flickr.call_method('flickr.photos.licenses.getInfo')
29
+ res.elements['/licenses'].each_element do |el|
30
+ lic = Flickr::License.from_xml(el)
31
+ list[lic.id] = lic
32
+ end
33
+ @flickr.license_cache_store(list)
34
+ return list
35
+ end
36
+
37
+ def setLicense(photo,license)
38
+ photo = photo.id if photo.class == Flickr::Photo
39
+ license = license.id if license.class == Flickr::License
40
+ @flickr.call_method('flickr.photos.licenses.setLicense',
41
+ 'photo_id' => photo, 'license_id' => license)
42
+ end
43
+ end
@@ -0,0 +1,44 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::Notes < Flickr::APIBase
24
+ def add(photo,x,y,w,h,text)
25
+ photo = photo.id if photo.class == Flickr::Photo
26
+ res = @flickr.call_method('flickr.photos.notes.add',
27
+ 'photo_id' => photo, 'note_x' => x, 'note_y' => y,
28
+ 'note_w' => w, 'note_h' => h, 'note_text' => text)
29
+ return res.elements['/note'].attributes['id']
30
+ end
31
+
32
+ def delete(note)
33
+ note = note.id if note.class == Flickr::Note
34
+ res = @flickr.call_method('flickr.photos.notes.delete',
35
+ 'note_id' => note)
36
+ end
37
+
38
+ def edit(note,x,y,w,h,text)
39
+ note = note.id if note.class == Flickr::Note
40
+ res = @flickr.call_method('flickr.photos.notes.edit',
41
+ 'note_id' => note, 'note_x' => x, 'note_y' => y,
42
+ 'note_w' => w, 'note_h' => h, 'note_text' => text)
43
+ end
44
+ end
@@ -0,0 +1,99 @@
1
+ # rFlickr: A Ruby based Flickr API implementation.
2
+ # Copyright (C) 2009, Alex Pardoe (digital:pardoe)
3
+ #
4
+ # Derrived from work by Trevor Schroeder, see here:
5
+ # http://rubyforge.org/projects/rflickr/.
6
+ #
7
+ # This program is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU General Public License
9
+ # as published by the Free Software Foundation; either version 2
10
+ # of the License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'flickr/base'
22
+
23
+ class Flickr::People < Flickr::APIBase
24
+ def findByEmail(find_email)
25
+ res = @flickr.call_method('flickr.people.findByEmail',
26
+ 'find_email' => find_email)
27
+ p = Flickr::Person.from_xml(res,@flickr)
28
+ return p
29
+ end
30
+
31
+ def findByUsername(username)
32
+ res = @flickr.call_method('flickr.people.findByUsername',
33
+ 'username' => username)
34
+ p = Flickr::Person.from_xml(res,@flickr)
35
+ return p
36
+ end
37
+
38
+ # user can be a Person or an nsid
39
+ def getInfo(user)
40
+ user = user.nsid if user.class == Flickr::Person
41
+ res = @flickr.call_method('flickr.people.getInfo',
42
+ 'user_id'=>user)
43
+ person = Flickr::Person.from_xml(res,@flickr)
44
+ return person
45
+ end
46
+
47
+ # user can be a Person or an nsid
48
+ def getPublicGroups(user)
49
+ require 'flickr/groups'
50
+ groups = @flickr.groups
51
+ user = user.nsid if user.class == Flickr::Person
52
+ res = @flickr.call_method('flickr.people.getPublicGroups',
53
+ 'user_id' => user)
54
+ list = []
55
+ res.elements['/groups'].each_element('group') do |e|
56
+ att = e.attributes
57
+ nsid = att['nsid']
58
+
59
+ g = @flickr.group_cache_lookup(nsid) ||
60
+ Flickr::Group.new(@flickr,nsid)
61
+
62
+ g.name = att['name']
63
+ g.eighteenplus = att['eighteenplus'].to_i == 1
64
+
65
+ @flickr.group_cache_store(g)
66
+ list << g
67
+ end
68
+ return list
69
+ end
70
+
71
+ def getPublicPhotos(user,extras=nil,per_page=nil,page=nil)
72
+ args = {}
73
+
74
+ user = user.nsid if user.class == Flickr::Person
75
+
76
+ args['user_id'] = user if user
77
+ args['extras'] = extras.join(',') if extras.class == Array
78
+ args['per_page'] = per_page if per_page
79
+ args['page'] = page if page
80
+
81
+ res = @flickr.call_method('flickr.people.getPublicPhotos',args)
82
+ att = res.root.attributes
83
+ list = Flickr::PhotoList.new(att['page'].to_i,att['pages'].to_i,
84
+ att['perpage'].to_i,att['total'].to_i)
85
+ res.elements['/photos'].each_element do |e|
86
+ list << Flickr::Photo.from_xml(e,@flickr)
87
+ end
88
+ return list
89
+ end
90
+
91
+ # user can be a Person or an nsid
92
+ def getUploadStatus(user)
93
+ user = user.nsid if user.class == Flickr::Person
94
+ res = @flickr.call_method('flickr.people.getUploadStatus',
95
+ 'user_id'=>user)
96
+ person = Flickr::Person.from_xml(res,@flickr)
97
+ return person
98
+ end
99
+ end