myflickr 0.0.6 → 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/History.txt +4 -0
- data/lib/myflickr.rb +1 -1
- data/lib/myflickr/query.rb +46 -2
- data/lib/myflickr/version.rb +2 -2
- data/spec/query_spec.rb +9 -0
- metadata +2 -2
data/History.txt
CHANGED
data/lib/myflickr.rb
CHANGED
data/lib/myflickr/query.rb
CHANGED
@@ -1,10 +1,54 @@
|
|
1
|
+
# All memcached references have been stolen straight
|
2
|
+
# from the implementation in the `rubyweather` gem.
|
3
|
+
# It just seemed too simple to roll in.
|
4
|
+
|
1
5
|
module Myflickr
|
2
6
|
class Query #:nodoc:
|
3
7
|
def self.api_call(method, resource_uri='') #:nodoc:
|
4
8
|
resource = "#{API_BASE}/?method=#{method}&api_key=#{API_KEY}&user_id=#{USER_ID}"
|
5
9
|
resource += "&#{resource_uri}" unless resource_uri.empty?
|
6
|
-
|
7
|
-
|
10
|
+
|
11
|
+
if cache?
|
12
|
+
begin
|
13
|
+
document = cache.get "#{USER_ID}:#{method}:#{resource_uri}"
|
14
|
+
rescue
|
15
|
+
puts "Querying: #{resource} [CACHE MISS]"
|
16
|
+
document = false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# No cached version exists
|
21
|
+
unless document
|
22
|
+
puts "Querying: #{resource}"
|
23
|
+
|
24
|
+
# Query the resource
|
25
|
+
document = open(resource).read
|
26
|
+
|
27
|
+
# Write a new cache if available
|
28
|
+
cache.set("#{USER_ID}:#{method}:#{resource_uri}", document, cache_validity) if cache?
|
29
|
+
puts "[CACHING...]" if cache?
|
30
|
+
end
|
31
|
+
|
32
|
+
# Create a Hpricot object
|
33
|
+
Hpricot.XML(document)
|
34
|
+
end
|
35
|
+
|
36
|
+
@cache = false
|
37
|
+
|
38
|
+
# Turns on query caching.
|
39
|
+
# See Myflickr::Query::Cache
|
40
|
+
def self.enable_cache(enable = true)
|
41
|
+
if enable
|
42
|
+
extend Cache
|
43
|
+
@cache = true
|
44
|
+
else
|
45
|
+
@cache = false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# True if caching is enabled and at least one memcached server is alive, false otherwise.
|
50
|
+
def self.cache?
|
51
|
+
@cache and cache.active? and servers = cache.instance_variable_get(:@servers) and servers.collect{|s| s.alive?}.include?(true)
|
8
52
|
end
|
9
53
|
end
|
10
54
|
end
|
data/lib/myflickr/version.rb
CHANGED
data/spec/query_spec.rb
CHANGED
@@ -4,4 +4,13 @@ describe Query, "class" do
|
|
4
4
|
it "should return a Hpricot Document object response" do
|
5
5
|
Query.api_call('flickr.test.echo').should be_an_instance_of Hpricot::Doc
|
6
6
|
end
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Query, "with memcached caching for queries" do
|
10
|
+
it "should return a Hpricot Document object response" do
|
11
|
+
Query.enable_cache true
|
12
|
+
Query.cache.servers = ["127.0.0.1:11211"]
|
13
|
+
Query.api_call('flickr.test.echo').should be_an_instance_of Hpricot::Doc
|
14
|
+
end
|
15
|
+
|
7
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: myflickr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Schwarz
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2008-01-06 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|