fotonauts-flickr_fu 0.3.2 → 0.3.3
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/Rakefile +0 -1
- data/VERSION.yml +1 -1
- data/flickr_fu.gemspec +1 -4
- data/lib/flickr_fu.rb +96 -2
- metadata +4 -27
data/Rakefile
CHANGED
data/VERSION.yml
CHANGED
data/flickr_fu.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{fotonauts-flickr_fu}
|
5
|
-
s.version = "0.3.
|
5
|
+
s.version = "0.3.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Ben Wyrosdick", "Maciej Bilas", "Fotonauts"]
|
@@ -105,13 +105,10 @@ Gem::Specification.new do |s|
|
|
105
105
|
|
106
106
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
107
107
|
s.add_runtime_dependency(%q<mime-types>, ["> 0.0.0"])
|
108
|
-
s.add_runtime_dependency(%q<xml-magic>, ["> 0.0.0"])
|
109
108
|
else
|
110
109
|
s.add_dependency(%q<mime-types>, ["> 0.0.0"])
|
111
|
-
s.add_dependency(%q<xml-magic>, ["> 0.0.0"])
|
112
110
|
end
|
113
111
|
else
|
114
112
|
s.add_dependency(%q<mime-types>, ["> 0.0.0"])
|
115
|
-
s.add_dependency(%q<xml-magic>, ["> 0.0.0"])
|
116
113
|
end
|
117
114
|
end
|
data/lib/flickr_fu.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'xml_magic'
|
3
2
|
require 'net/http'
|
4
3
|
require 'cgi'
|
5
4
|
require 'uri'
|
@@ -37,7 +36,102 @@ require 'date'
|
|
37
36
|
require File.join(File.dirname(__FILE__), 'flickr', file)
|
38
37
|
end
|
39
38
|
|
40
|
-
|
39
|
+
module Flickr
|
40
|
+
|
41
|
+
if RUBY_VERSION =~ /1.8/
|
42
|
+
# Credit to Jim Weirich at http://onestepback.org/index.cgi/Tech/Ruby/BlankSlate.rdoc
|
43
|
+
class BlankSlate
|
44
|
+
instance_methods.each { |m| undef_method m unless m =~ /^__/ }
|
45
|
+
end
|
46
|
+
else
|
47
|
+
BlankSlate = BasicObject
|
48
|
+
end
|
49
|
+
|
50
|
+
# Class that makes accessing xml objects more like any other ruby object
|
51
|
+
# thanks to the magic of method missing
|
52
|
+
class XmlMagic < BlankSlate
|
53
|
+
require 'rexml/document'
|
54
|
+
|
55
|
+
def initialize(xml, namespace="")
|
56
|
+
if xml.class == REXML::Element or xml.class == Array
|
57
|
+
@element = xml
|
58
|
+
else
|
59
|
+
@xml = REXML::Document.new(xml)
|
60
|
+
@element = @xml.root
|
61
|
+
end
|
62
|
+
@namespace = namespace
|
63
|
+
end
|
64
|
+
|
65
|
+
def each
|
66
|
+
@element.each {|e| yield CommonThread::XML::XmlMagic.new(e, @namespace)}
|
67
|
+
end
|
68
|
+
|
69
|
+
def method_missing(method, selection=nil)
|
70
|
+
evaluate(method.to_s, selection)
|
71
|
+
end
|
72
|
+
|
73
|
+
def namespace=(namespace)
|
74
|
+
if namespace and namespace.length > 0 # caca
|
75
|
+
@namespace = namespace + ":"
|
76
|
+
else
|
77
|
+
@namespace = ""
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def to_s
|
82
|
+
if @element.class == Array
|
83
|
+
@element.collect{|e| e.text}.join
|
84
|
+
else
|
85
|
+
@element.text
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def [](index, count = nil)
|
90
|
+
if index.is_a?(Fixnum) or index.is_a?(Bignum) or index.is_a?(Integer) or index.is_a?(Range)
|
91
|
+
if @element.is_a?(Array)
|
92
|
+
if count
|
93
|
+
CommonThread::XML::XmlMagic.new(@element[index, count], @namespace)
|
94
|
+
else
|
95
|
+
CommonThread::XML::XmlMagic.new(@element[index], @namespace)
|
96
|
+
end
|
97
|
+
else
|
98
|
+
nil
|
99
|
+
end
|
100
|
+
elsif index.is_a?(Symbol)
|
101
|
+
if @element.is_a?(Array)
|
102
|
+
if @element.empty?
|
103
|
+
nil
|
104
|
+
else
|
105
|
+
@element[0].attributes[index.to_s]
|
106
|
+
end
|
107
|
+
else
|
108
|
+
@element.attributes[index.to_s]
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
def evaluate(name, selection)
|
115
|
+
|
116
|
+
if @element.is_a?(Array)
|
117
|
+
elements = @element[0].get_elements(@namespace + name)
|
118
|
+
else
|
119
|
+
elements = @element.get_elements(@namespace + name)
|
120
|
+
end
|
121
|
+
|
122
|
+
if elements.empty?
|
123
|
+
nil
|
124
|
+
else
|
125
|
+
if selection == :count
|
126
|
+
elements.length
|
127
|
+
else
|
128
|
+
CommonThread::XML::XmlMagic.new(elements, @namespace)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end # module Flickr
|
134
|
+
|
41
135
|
|
42
136
|
class Object
|
43
137
|
# returning allows you to pass an object to a block that you can manipulate returning the manipulated object
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fotonauts-flickr_fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 23
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
8
|
+
- 3
|
9
|
+
version: 0.3.3
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Ben Wyrosdick
|
@@ -17,18 +16,16 @@ autorequire:
|
|
17
16
|
bindir: bin
|
18
17
|
cert_chain: []
|
19
18
|
|
20
|
-
date: 2009-05-19 00:00:00 +
|
19
|
+
date: 2009-05-19 00:00:00 +02:00
|
21
20
|
default_executable:
|
22
21
|
dependencies:
|
23
22
|
- !ruby/object:Gem::Dependency
|
24
23
|
name: mime-types
|
25
24
|
prerelease: false
|
26
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
26
|
requirements:
|
29
27
|
- - ">"
|
30
28
|
- !ruby/object:Gem::Version
|
31
|
-
hash: 31
|
32
29
|
segments:
|
33
30
|
- 0
|
34
31
|
- 0
|
@@ -36,22 +33,6 @@ dependencies:
|
|
36
33
|
version: 0.0.0
|
37
34
|
type: :runtime
|
38
35
|
version_requirements: *id001
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: xml-magic
|
41
|
-
prerelease: false
|
42
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
|
-
requirements:
|
45
|
-
- - ">"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
hash: 31
|
48
|
-
segments:
|
49
|
-
- 0
|
50
|
-
- 0
|
51
|
-
- 0
|
52
|
-
version: 0.0.0
|
53
|
-
type: :runtime
|
54
|
-
version_requirements: *id002
|
55
36
|
description: Provides a ruby interface to flickr via the REST api
|
56
37
|
email: ben@commonthread.com
|
57
38
|
executables: []
|
@@ -139,27 +120,23 @@ rdoc_options:
|
|
139
120
|
require_paths:
|
140
121
|
- lib
|
141
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
123
|
requirements:
|
144
124
|
- - ">="
|
145
125
|
- !ruby/object:Gem::Version
|
146
|
-
hash: 3
|
147
126
|
segments:
|
148
127
|
- 0
|
149
128
|
version: "0"
|
150
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
130
|
requirements:
|
153
131
|
- - ">="
|
154
132
|
- !ruby/object:Gem::Version
|
155
|
-
hash: 3
|
156
133
|
segments:
|
157
134
|
- 0
|
158
135
|
version: "0"
|
159
136
|
requirements: []
|
160
137
|
|
161
138
|
rubyforge_project:
|
162
|
-
rubygems_version: 1.3.
|
139
|
+
rubygems_version: 1.3.6
|
163
140
|
signing_key:
|
164
141
|
specification_version: 3
|
165
142
|
summary: Provides a ruby interface to flickr via the REST api
|