blekko-search 0.0.4 → 0.0.5
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/lib/blekko-search/blekko.rb +17 -17
- data/lib/blekko-search/version.rb +1 -1
- metadata +2 -2
data/lib/blekko-search/blekko.rb
CHANGED
@@ -3,16 +3,16 @@ class Blekko
|
|
3
3
|
DEFAULT_MAX_FREQUENCY_PER_SECOND = 1
|
4
4
|
SECURE_PROTOCOL = "https://"
|
5
5
|
NON_SECURE_PROTOCOL = "http://"
|
6
|
-
|
6
|
+
|
7
7
|
class << self
|
8
8
|
attr_accessor :last_request_at
|
9
9
|
def last_request_at
|
10
10
|
@last_request_at ||= {}
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
attr_accessor :protocol, :api_key, :max_frequency_per_second, :username, :password, :login_cookie, :headers
|
15
|
-
|
15
|
+
|
16
16
|
def initialize(args={})
|
17
17
|
@api_key = args[:api_key]
|
18
18
|
@protocol = args[:secure] ? SECURE_PROTOCOL : NON_SECURE_PROTOCOL
|
@@ -21,33 +21,33 @@ class Blekko
|
|
21
21
|
@max_frequency_per_second = args[:max_frequency_per_second] || DEFAULT_MAX_FREQUENCY_PER_SECOND
|
22
22
|
login if @api_key && @username && @password
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def host
|
26
26
|
HOST
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def search(query, args={})
|
30
30
|
Blekko::Search.new(self, query, args).search
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def slashtag(name, args={})
|
34
34
|
Blekko::Slashtag.new(self, name, args)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def request(url)
|
38
38
|
sleep(seconds_until_next_request)
|
39
39
|
self.last_request_at = Time.now
|
40
40
|
open(url, headers)
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
def login_uri
|
44
44
|
URI("#{SECURE_PROTOCOL}#{HOST}/login?u=#{CGI.escape(username)}&p=#{CGI.escape(password)}&auth=#{api_key}")
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
def headers
|
48
|
-
@headers ||= {}
|
48
|
+
@headers ||= { "User-Agent" => "blekko-search-#{BlekkoSearch::VERSION}" }
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def login
|
52
52
|
raise ArgumentError, "Username and password are required" unless username && password
|
53
53
|
Net::HTTP.start(login_uri.host, login_uri.port, use_ssl: true) do |http|
|
@@ -57,25 +57,25 @@ class Blekko
|
|
57
57
|
headers["User-Agent"] = "blekko-search-#{BlekkoSearch::VERSION}"
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
def delay_between_requests
|
62
62
|
1 / max_frequency_per_second.to_f
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
def last_request_at
|
66
66
|
self.class.last_request_at[api_key]
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
def last_request_at=(value)
|
70
70
|
self.class.last_request_at[api_key] = value
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
def earliest_next_request
|
74
74
|
last_request_at ? last_request_at + delay_between_requests : Time.now
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
def seconds_until_next_request
|
78
78
|
[earliest_next_request - Time.now, 0].max
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blekko-search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-19 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Search and manage slashtags for blekko.com
|
15
15
|
email:
|