gnip-client 0.2.2 → 0.2.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/gnip/gnip-rules/rules.rb +40 -18
- data/lib/gnip/gnip-stream/replay.rb +10 -3
- data/lib/gnip/gnip-stream/stream.rb +11 -3
- data/lib/gnip/power_track_client.rb +15 -13
- data/lib/gnip/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e5af33e34017bd7f0dc599a4c4e9e4d1af97322
|
4
|
+
data.tar.gz: b9b6a7c5f9875acca7a789cff3a713229aac83e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b480d84ed09647a2fc7f79f7d8a3edbf36ac69b940aaff4740f77ccc9340be37980229098fb2b9eb10f3014bf5104447423d477ff73af0dccbfccaacf328300f
|
7
|
+
data.tar.gz: 40dc53a68f67f0fcdb3530e51f57716b679b549f342974910f761e4551a85bb459ba48e8a2a9bd86e4ad1afd9ec66b6f721ad826c07d1238c3a3e695d5b9b8c6
|
data/.gitignore
CHANGED
@@ -4,10 +4,22 @@ module Gnip
|
|
4
4
|
|
5
5
|
include HTTParty
|
6
6
|
|
7
|
-
attr_reader :rules_url
|
7
|
+
attr_reader :rules_url, :version
|
8
8
|
|
9
9
|
def initialize(client, replay=false)
|
10
|
-
@
|
10
|
+
@version = client.power_track_version
|
11
|
+
case self.version
|
12
|
+
when '1.0'
|
13
|
+
@rules_url = "https://api.gnip.com:443/accounts/#{client.account}/publishers/#{client.publisher}/#{replay ? "replay" : "streams"}/track/#{client.label}/rules.json"
|
14
|
+
when '2.0'
|
15
|
+
if replay
|
16
|
+
@rules_url = "https://gnip-api.twitter.com/rules/powertrack-replay/accounts/#{client.account}/publishers/#{client.publisher}/#{client.replay_label}.json"
|
17
|
+
else
|
18
|
+
@rules_url = "https://gnip-api.twitter.com/rules/powertrack/accounts/#{client.account}/publishers/#{client.publisher}/#{client.label}.json"
|
19
|
+
end
|
20
|
+
else
|
21
|
+
raise Exception.new("version #{self.version} is not supported from this gem.")
|
22
|
+
end
|
11
23
|
@auth = { username: client.username, password: client.password }
|
12
24
|
end
|
13
25
|
|
@@ -15,11 +27,12 @@ module Gnip
|
|
15
27
|
#rules should be an hash in the format {"rules": [{"value": "rule1", "tag": "tag1"}, {"value":"rule2"}]}"
|
16
28
|
def add(rules)
|
17
29
|
begin
|
18
|
-
response = self.class.post(self.rules_url, basic_auth: @auth, body: rules.to_json)
|
19
|
-
|
20
|
-
|
30
|
+
response = self.class.post( self.rules_url, basic_auth: @auth, body: rules.to_json, headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }, type: :json )
|
31
|
+
parsed_response = safe_parsed_response(response.parsed_response)
|
32
|
+
if parsed_response.present? && parsed_response["error"].present?
|
33
|
+
{ status: :error, code: response.response.code, error: parsed_response["error"]["message"] }
|
21
34
|
else
|
22
|
-
{ status: :success, code: 200 }
|
35
|
+
{ status: :success, code: 200, response: parsed_response }
|
23
36
|
end
|
24
37
|
rescue Exception => e
|
25
38
|
{ status: :error, code: 500, error: e.message }
|
@@ -31,11 +44,12 @@ module Gnip
|
|
31
44
|
#rules should be an hash in the format {"rules": [{"value": "rule1", "tag": "tag1"}, {"value":"rule2"}]}"
|
32
45
|
def remove(rules)
|
33
46
|
begin
|
34
|
-
response = self.class.
|
35
|
-
|
36
|
-
|
47
|
+
response = self.class.post(self.rules_url, query: { _method: 'delete'}, basic_auth: @auth, body: rules.to_json)
|
48
|
+
parsed_response = safe_parsed_response(response.parsed_response)
|
49
|
+
if parsed_response.present? && parsed_response["error"].present?
|
50
|
+
{ status: :error, code: response.response.code, error: parsed_response["error"]["message"] }
|
37
51
|
else
|
38
|
-
{ status: :success, code: 200 }
|
52
|
+
{ status: :success, code: 200, response: parsed_response }
|
39
53
|
end
|
40
54
|
rescue Exception => e
|
41
55
|
{ status: :error, code: 500, error: e.message }
|
@@ -46,11 +60,12 @@ module Gnip
|
|
46
60
|
#Get the full list of rules
|
47
61
|
def list
|
48
62
|
begin
|
49
|
-
response = self.class.get(self.rules_url, basic_auth: @auth)
|
50
|
-
|
51
|
-
|
63
|
+
response = self.class.get(self.rules_url, basic_auth: @auth, headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }, type: :json )
|
64
|
+
parsed_response = safe_parsed_response(response.parsed_response)
|
65
|
+
if parsed_response.present? && parsed_response["error"].present?
|
66
|
+
{ status: :error, code: response.response.code, error: parsed_response["error"]["message"] }
|
52
67
|
else
|
53
|
-
{ status: :success, code: 200, rules:
|
68
|
+
{ status: :success, code: 200, rules: parsed_response["rules"] }
|
54
69
|
end
|
55
70
|
rescue Exception => e
|
56
71
|
{ status: :error, code: 500, error: e.message }
|
@@ -60,11 +75,12 @@ module Gnip
|
|
60
75
|
#Get the full list of rules by tag
|
61
76
|
def list_by_tag(tag)
|
62
77
|
begin
|
63
|
-
response = self.class.get(self.rules_url, basic_auth: @auth)
|
64
|
-
|
65
|
-
|
78
|
+
response = self.class.get(self.rules_url, basic_auth: @auth)
|
79
|
+
parsed_response = safe_parsed_response(response.parsed_response)
|
80
|
+
if parsed_response.present? && parsed_response["error"].present?
|
81
|
+
{ status: :error, code: response.response.code, error: parsed_response["error"]["message"] }
|
66
82
|
else
|
67
|
-
rules =
|
83
|
+
rules = parsed_response["rules"]
|
68
84
|
{ status: :success, code: 200, rules: rules.select{ |rule| rule["tag"] == tag } }
|
69
85
|
end
|
70
86
|
rescue Exception => e
|
@@ -101,6 +117,12 @@ module Gnip
|
|
101
117
|
|
102
118
|
end
|
103
119
|
|
120
|
+
private
|
121
|
+
def safe_parsed_response(parsed_response)
|
122
|
+
ret = parsed_response.present? ? (parsed_response.is_a?(String) ? JSON.parse(parsed_response).with_indifferent_access : parsed_response) : nil
|
123
|
+
ret
|
124
|
+
end
|
125
|
+
|
104
126
|
end
|
105
127
|
end
|
106
128
|
end
|
@@ -3,13 +3,20 @@ module Gnip
|
|
3
3
|
class Replay < Stream
|
4
4
|
|
5
5
|
def initialize(client)
|
6
|
-
super
|
7
|
-
|
6
|
+
super #version is setted in the super
|
7
|
+
case self.version
|
8
|
+
when '1.0'
|
9
|
+
@url = "https://stream.gnip.com:443/accounts/#{client.account}/publishers/#{client.publisher}/replay/track/#{client.replay_label}.json"
|
10
|
+
when '2.0'
|
11
|
+
@url = "https://gnip-stream.gnip.com/replay/powertrack/accounts/#{client.account}/publishers/#{client.publisher}/#{client.replay_label}.json"
|
12
|
+
else
|
13
|
+
raise Exception.new("version #{self.version} is not supported from this gem.")
|
14
|
+
end
|
8
15
|
end
|
9
16
|
|
10
17
|
def configure_handlers
|
11
18
|
self.on_error { |error| @error_handler.attempt_to_reconnect("Gnip Connection Error. Reason was: #{error.inspect}") }
|
12
|
-
self.on_connection_close { puts '
|
19
|
+
self.on_connection_close { puts 'Gnip::GnipStream::Replay -> Connection closed' }
|
13
20
|
end
|
14
21
|
|
15
22
|
def consume(options={}, &block)
|
@@ -7,10 +7,18 @@ module Gnip
|
|
7
7
|
|
8
8
|
EventMachine.threadpool_size = 5
|
9
9
|
|
10
|
-
attr_accessor :url, :backfill_client
|
10
|
+
attr_accessor :url, :backfill_client, :version
|
11
11
|
|
12
|
-
def initialize(client)
|
13
|
-
|
12
|
+
def initialize(client)
|
13
|
+
self.version = client.power_track_version
|
14
|
+
case self.version
|
15
|
+
when '1.0'
|
16
|
+
@url = "https://stream.gnip.com:443/accounts/#{client.account}/publishers/#{client.publisher}/streams/track/#{client.label}.json"
|
17
|
+
when '2.0'
|
18
|
+
@url = "https://gnip-stream.twitter.com/stream/powertrack/accounts/#{client.account}/publishers/#{client.publisher}/#{client.label}.json"
|
19
|
+
else
|
20
|
+
raise Exception.new("version #{self.version} is not supported from this gem.")
|
21
|
+
end
|
14
22
|
@backfill_client = client.backfill_client
|
15
23
|
@processor = JsonDataBuffer.new("\r\n", Regexp.new(/^\{.*\}\r\n/))
|
16
24
|
@headers = {'authorization' => [client.username, client.password], 'accept-encoding' => 'gzip, compressed'}
|
@@ -3,22 +3,24 @@ module Gnip
|
|
3
3
|
|
4
4
|
attr_accessor :publisher, :label, :account,
|
5
5
|
:username, :password,
|
6
|
-
:backfill_client
|
6
|
+
:backfill_client, :replay_label
|
7
7
|
|
8
|
-
attr_reader :rules, :replay_rules, :full_archive, :stream, :replay
|
8
|
+
attr_reader :rules, :replay_rules, :full_archive, :stream, :replay, :power_track_version
|
9
9
|
|
10
10
|
def initialize(options = {})
|
11
|
-
@account
|
12
|
-
@publisher
|
13
|
-
@label
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
11
|
+
@account = options[:account]
|
12
|
+
@publisher = options[:publisher]||"twitter"
|
13
|
+
@label = options[:label]||"dev"
|
14
|
+
@replay_label = options[:replay_label]||@label
|
15
|
+
@username = options[:username]
|
16
|
+
@password = options[:password]
|
17
|
+
@backfill_client = options[:backfill_client]||nil
|
18
|
+
@power_track_version = options[:power_track_version]||'2.0'
|
19
|
+
@rules = Gnip::GnipRules::Rules.new(self)
|
20
|
+
@replay_rules = Gnip::GnipRules::Rules.new(self, true)
|
21
|
+
@full_archive = Gnip::GnipFullArchive::FullArchive.new(self)
|
22
|
+
@stream = Gnip::GnipStream::Stream.new(self)
|
23
|
+
@replay = Gnip::GnipStream::Replay.new(self)
|
22
24
|
end
|
23
25
|
|
24
26
|
end
|
data/lib/gnip/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gnip-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Duccio Giovannelli
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|