xstreamly 0.6.1 → 0.6.2
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/xstreamly.rb +119 -48
- metadata +3 -3
data/lib/xstreamly.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'json' #gem install json
|
2
|
-
require '
|
3
|
-
require '
|
2
|
+
require 'base64'
|
3
|
+
require 'cgi'
|
4
|
+
require 'openssl'
|
5
|
+
require 'net/https'
|
6
|
+
require 'net/http'
|
4
7
|
|
5
8
|
module XStreamly
|
6
9
|
class Client
|
@@ -8,7 +11,7 @@ module XStreamly
|
|
8
11
|
@appKey = appKey
|
9
12
|
@email = email
|
10
13
|
@password = password
|
11
|
-
@http = Net::HTTP.new('x-stream.ly',
|
14
|
+
@http = Net::HTTP.new('secure.x-stream.ly', 443)
|
12
15
|
@http.use_ssl = true
|
13
16
|
|
14
17
|
end
|
@@ -19,57 +22,125 @@ module XStreamly
|
|
19
22
|
|
20
23
|
req.body = data
|
21
24
|
response = @http.request(req)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
case response.code.to_i
|
26
|
+
when 202
|
27
|
+
return true
|
28
|
+
else
|
29
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
30
|
+
end
|
31
|
+
end
|
29
32
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
+
def setCallback(channel,endPoint,secret,eventName)
|
34
|
+
req = Net::HTTP::Post.new(URI.encode('/api/v1.1/'+@appKey+'/feeds/out/custom'), initheader = {'Content-Type' =>'application/json'})
|
35
|
+
req.basic_auth @email, @password
|
33
36
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
req.body = '{"channel":"'+channel+'","endpoint":"'+endPoint+'", "secret":"'+secret+'"}'
|
38
|
+
response = @http.request(req)
|
39
|
+
|
40
|
+
case response.code.to_i
|
41
|
+
when 200
|
42
|
+
return true
|
43
|
+
else
|
44
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
45
|
+
end
|
46
|
+
end
|
42
47
|
|
43
|
-
|
48
|
+
def removeCallback(index)
|
49
|
+
req = Net::HTTP::Delete.new(URI.encode('/api/v1.1/'+@appKey+'/feeds/out/custom/'+index.to_s), initheader = {'Content-Type' =>'application/json'})
|
50
|
+
req.basic_auth @email, @password
|
51
|
+
response = @http.request(req)
|
52
|
+
|
53
|
+
case response.code.to_i
|
54
|
+
when 202
|
55
|
+
return true
|
56
|
+
else
|
57
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
58
|
+
end
|
59
|
+
end
|
44
60
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
61
|
+
def getCallbacks()
|
62
|
+
req = Net::HTTP::Get.new(URI.encode('/api/v1.1/'+@appKey+'/feeds/out/custom'), initheader = {'Content-Type' =>'application/json'})
|
63
|
+
req.basic_auth @email, @password
|
64
|
+
response = @http.request(req)
|
65
|
+
|
66
|
+
case response.code.to_i
|
67
|
+
when 200
|
68
|
+
return (JSON(response.body))['items']
|
69
|
+
else
|
70
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def setTwitterStream(channel,event,requestData)
|
75
|
+
req = Net::HTTP::Post.new(URI.encode('/api/v1.1/'+@appKey+'/feeds/in/twitter'), initheader = {'Content-Type' =>'application/json'})
|
76
|
+
req.basic_auth @email, @password
|
77
|
+
|
78
|
+
req.body = '{"channel":"'+channel+'","event":"'+event+'", "requestData":"'+requestData+'"}'
|
79
|
+
response = @http.request(req)
|
80
|
+
|
81
|
+
case response.code.to_i
|
82
|
+
when 202
|
83
|
+
return true
|
84
|
+
else
|
85
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def generateRequestData(trackParameter,consumerKey,consumerSecret,accessToken,accessTokenSecret)
|
90
|
+
#generate a random nonce
|
91
|
+
nonce =(0...10).map{65.+(rand(25)).chr}.join
|
92
|
+
timestamp = (Time.now.to_i).to_s
|
93
|
+
track = CGI.escape(trackParameter)
|
94
|
+
|
95
|
+
base = "POST&https%3A%2F%2Fstream.twitter.com%2F1%2Fstatuses%2Ffilter.json&" +
|
96
|
+
"oauth_consumer_key%3D" + consumerKey +
|
97
|
+
"%26oauth_nonce%3D"+nonce +
|
98
|
+
"%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D" + timestamp +
|
99
|
+
"%26oauth_token%3D" + accessToken +
|
100
|
+
"%26oauth_version%3D1.0"+
|
101
|
+
"%26track%3D" +track
|
57
102
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
103
|
+
key = consumerSecret +'&'+CGI.escape(accessTokenSecret);
|
104
|
+
|
105
|
+
digest = OpenSSL::Digest::Digest.new('sha1')
|
106
|
+
signature=CGI.escape(Base64.encode64(OpenSSL::HMAC.digest(digest,key,base)).strip)
|
107
|
+
|
108
|
+
requestData = "oauth_signature=" + signature +
|
109
|
+
"&oauth_token=" + accessToken +
|
110
|
+
"&track=" + track +
|
111
|
+
"&oauth_consumer_key=" + consumerKey +
|
112
|
+
"&oauth_signature_method=HMAC-SHA1&oauth_version=1.0" +
|
113
|
+
"&oauth_nonce=" + nonce +
|
114
|
+
"&oauth_timestamp=" + timestamp
|
115
|
+
|
116
|
+
return requestData
|
117
|
+
end
|
70
118
|
|
71
|
-
|
119
|
+
def removeTwitterStream(index)
|
120
|
+
req = Net::HTTP::Delete.new(URI.encode('/api/v1.1/'+@appKey+'/feeds/in/twitter/'+index.to_s), initheader = {'Content-Type' =>'application/json'})
|
121
|
+
req.basic_auth @email, @password
|
122
|
+
response = @http.request(req)
|
123
|
+
|
124
|
+
case response.code.to_i
|
125
|
+
when 202
|
126
|
+
return true
|
127
|
+
else
|
128
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
129
|
+
end
|
130
|
+
end
|
72
131
|
|
73
|
-
|
132
|
+
def getTwitterStreams()
|
133
|
+
req = Net::HTTP::Get.new(URI.encode('/api/v1.1/'+@appKey+'/feeds/in/twitter'), initheader = {'Content-Type' =>'application/json'})
|
134
|
+
req.basic_auth @email, @password
|
135
|
+
response = @http.request(req)
|
136
|
+
|
137
|
+
case response.code.to_i
|
138
|
+
when 200
|
139
|
+
return (JSON(response.body))['items']
|
140
|
+
else
|
141
|
+
raise RuntimeError, "Unknown error (status code #{response.code} ): #{response.body}"
|
142
|
+
end
|
74
143
|
end
|
144
|
+
|
145
|
+
end
|
75
146
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xstreamly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 2
|
10
|
+
version: 0.6.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brian Willard
|