scrobbler-ng-utils 2.0.2 → 2.0.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.
@@ -32,16 +32,18 @@ module Scrobbler
32
32
  # @return [boolean]
33
33
  def has?(params={})
34
34
  # Check if there is a matching chache entry with no extra parameters
35
+ found = false
35
36
  @collection.find(params).each do |doc|
36
37
  if verify(doc, params) then
37
38
  @hits += 1
38
- return true
39
+ found = true
40
+ break
39
41
  end
40
42
  end
41
43
 
42
44
  # We have not found a mathing cache entry.
43
- @misses += 1
44
- false
45
+ @misses += 1 unless found
46
+ found
45
47
  end
46
48
 
47
49
  # Store a result into the database.
@@ -51,7 +53,7 @@ module Scrobbler
51
53
  # @return [void]
52
54
  def set(data, params={})
53
55
  if not has?(params) then
54
- @collection.insert(params.merge({:xml => data, :timestamp => Time.now.to_i}))
56
+ @collection.insert(params.merge({:xml => data, :timestamp => Time.now.to_i}))
55
57
  end
56
58
  end
57
59
 
@@ -60,9 +62,14 @@ module Scrobbler
60
62
  # @param [Hash] params
61
63
  # @return [String]
62
64
  def get(params={})
65
+ found = nil
63
66
  @collection.find(params).each do |doc|
64
- return doc['xml'] if verify(doc)
67
+ if verify(doc, params) then
68
+ found = doc['xml']
69
+ break
70
+ end
65
71
  end
72
+ found
66
73
  end
67
74
 
68
75
  # Verify that a specific document matches exactly the request cache.
@@ -0,0 +1,17 @@
1
+ module Scrobbler
2
+ class Base
3
+ @@fetch_http_lastcall = 0
4
+ class << self
5
+ alias :orig_fetch_http :fetch_http
6
+ def fetch_http(request_method, paramlist)
7
+ now = ("%10.6f" % Time.now.to_f).to_f
8
+ threshold = now - 1
9
+ if (@@fetch_http_lastcall > threshold) then
10
+ sleep(now - @@fetch_http_lastcall)
11
+ end
12
+ @@fetch_http_lastcall = now
13
+ return orig_fetch_http(request_method, paramlist)
14
+ end
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrobbler-ng-utils
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 2
10
- version: 2.0.2
9
+ - 3
10
+ version: 2.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Uwe L. Korn
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-05 00:00:00 +02:00
18
+ date: 2010-08-06 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -60,6 +60,7 @@ extra_rdoc_files:
60
60
  files:
61
61
  - lib/scrobbler-ng-utils.rb
62
62
  - lib/scrobbler-ng-utils/cache/mongo.rb
63
+ - lib/scrobbler-ng-utils/misc/rate-limiter.rb
63
64
  - LICENSE
64
65
  - README.rdoc
65
66
  - spec/spec_helper.rb