shove 1.0.2 → 1.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.
- data/Gemfile.lock +3 -3
- data/bin/shove +10 -0
- data/lib/shove/app.rb +7 -2
- data/lib/shove/client/connection.rb +7 -1
- data/lib/shove/http/channel_context.rb +2 -2
- data/lib/shove/http/request.rb +11 -5
- data/lib/shove.rb +3 -2
- data/shove.gemspec +1 -1
- metadata +9 -9
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shove (1.0.
|
4
|
+
shove (1.0.3)
|
5
5
|
confstruct (>= 0.2.1)
|
6
6
|
em-http-request (>= 1.0.0)
|
7
7
|
em-ws-client (>= 0.1.2)
|
@@ -13,11 +13,11 @@ GEM
|
|
13
13
|
addressable (2.2.6)
|
14
14
|
albino (1.3.3)
|
15
15
|
posix-spawn (>= 0.3.6)
|
16
|
-
confstruct (0.2.
|
16
|
+
confstruct (0.2.2)
|
17
17
|
cookiejar (0.3.0)
|
18
18
|
crack (0.3.1)
|
19
19
|
diff-lcs (1.1.3)
|
20
|
-
em-http-request (1.0.
|
20
|
+
em-http-request (1.0.2)
|
21
21
|
addressable (>= 2.2.3)
|
22
22
|
cookiejar
|
23
23
|
em-socksify
|
data/bin/shove
CHANGED
@@ -107,12 +107,21 @@ begin
|
|
107
107
|
client = Shove.connect
|
108
108
|
client.authorize(app_dir.key(app))
|
109
109
|
|
110
|
+
client.on("connect") do |error|
|
111
|
+
puts "Connected"
|
112
|
+
end
|
113
|
+
|
110
114
|
client.on("error") do |error|
|
111
115
|
puts "Watch Error #{error}"
|
112
116
|
EM.stop
|
113
117
|
end
|
114
118
|
|
115
119
|
channel = client.channel(channel)
|
120
|
+
|
121
|
+
channel.on("subscribe_denied") do
|
122
|
+
puts "Subscribe Denied"
|
123
|
+
end
|
124
|
+
|
116
125
|
channel.on("subscribe") do
|
117
126
|
puts "Subscribed"
|
118
127
|
end
|
@@ -120,6 +129,7 @@ begin
|
|
120
129
|
channel.on("message") do |msg|
|
121
130
|
puts "#{Time.now}: #{msg}"
|
122
131
|
end
|
132
|
+
|
123
133
|
end
|
124
134
|
|
125
135
|
else
|
data/lib/shove/app.rb
CHANGED
@@ -17,6 +17,11 @@ module Shove
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def configure params={}, &block
|
20
|
+
|
21
|
+
@config.configure do
|
22
|
+
api_url Shove.config.api_url || "https://api.shove.io"
|
23
|
+
end
|
24
|
+
|
20
25
|
if params
|
21
26
|
@config.configure params
|
22
27
|
end
|
@@ -25,8 +30,8 @@ module Shove
|
|
25
30
|
@config.configure(&block)
|
26
31
|
end
|
27
32
|
|
28
|
-
unless @config.app_id
|
29
|
-
raise ShoveException.new("App ID
|
33
|
+
unless @config.app_id
|
34
|
+
raise ShoveException.new("App ID required")
|
30
35
|
end
|
31
36
|
end
|
32
37
|
|
@@ -24,6 +24,12 @@ module Shove
|
|
24
24
|
def authorize app_key=nil
|
25
25
|
send_data :opcode => AUTHORIZE, :data => (app_key || @config.app_key)
|
26
26
|
end
|
27
|
+
|
28
|
+
# Enable or disable debugging
|
29
|
+
# +on+ true to enable debugging
|
30
|
+
def debug on=true
|
31
|
+
@debug = on
|
32
|
+
end
|
27
33
|
|
28
34
|
# Connect to the shove stream server
|
29
35
|
def connect
|
@@ -89,7 +95,7 @@ module Shove
|
|
89
95
|
if @hosts.empty?
|
90
96
|
raise "Error fetching hosts for app #{@app_id}"
|
91
97
|
end
|
92
|
-
@url = "ws://#{@hosts.first}
|
98
|
+
@url = "ws://#{@hosts.first}/#{@config.app_id}"
|
93
99
|
end
|
94
100
|
@url
|
95
101
|
end
|
@@ -15,8 +15,8 @@ module Shove
|
|
15
15
|
def publish message, &block
|
16
16
|
if @channel == "*"
|
17
17
|
raise ShoveException.new("Cannot publish to *")
|
18
|
-
elsif message.size >
|
19
|
-
raise ShoveException.new("Max message size is
|
18
|
+
elsif message.size > 2048
|
19
|
+
raise ShoveException.new("Max message size is 2 KiB")
|
20
20
|
end
|
21
21
|
@app.request("publish?channel=#{@channel}").post(message, &block)
|
22
22
|
end
|
data/lib/shove/http/request.rb
CHANGED
@@ -43,9 +43,11 @@ module Shove
|
|
43
43
|
|
44
44
|
req.basic_auth "", key
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
47
|
+
http.use_ssl = uri.scheme == "https"
|
48
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
49
|
+
|
50
|
+
res = http.request(req, normalize_body(params))
|
49
51
|
|
50
52
|
result = Response.new(res.code, res.body, res.code.to_i >= 400)
|
51
53
|
if block_given?
|
@@ -65,13 +67,17 @@ module Shove
|
|
65
67
|
|
66
68
|
# handle error
|
67
69
|
http.errback {
|
68
|
-
block
|
70
|
+
if block
|
71
|
+
block.call(Response.new(http.response_header.status, http.response, true))
|
72
|
+
end
|
69
73
|
}
|
70
74
|
|
71
75
|
# handle success
|
72
76
|
http.callback {
|
73
77
|
status = http.response_header.status
|
74
|
-
block
|
78
|
+
if block
|
79
|
+
block.call(Response.new(status, http.response, status >= 400))
|
80
|
+
end
|
75
81
|
}
|
76
82
|
end
|
77
83
|
|
data/lib/shove.rb
CHANGED
@@ -2,6 +2,7 @@ $:.unshift File.dirname(__FILE__)
|
|
2
2
|
|
3
3
|
require "rubygems"
|
4
4
|
require "net/http"
|
5
|
+
require "net/https"
|
5
6
|
require "em-http-request"
|
6
7
|
require "em-ws-client"
|
7
8
|
require "yajl"
|
@@ -16,7 +17,7 @@ require "confstruct"
|
|
16
17
|
# See https://github.com/shove/shove for client documentation
|
17
18
|
module Shove
|
18
19
|
|
19
|
-
Version = "1.0.
|
20
|
+
Version = "1.0.3"
|
20
21
|
|
21
22
|
class ShoveException < Exception; end
|
22
23
|
|
@@ -31,7 +32,7 @@ module Shove
|
|
31
32
|
|
32
33
|
unless defined? @config
|
33
34
|
@config = Confstruct::Configuration.new do
|
34
|
-
api_url "https://api.shove.io
|
35
|
+
api_url "https://api.shove.io"
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
data/shove.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shove
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-08 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: em-http-request
|
16
|
-
requirement: &
|
16
|
+
requirement: &22523120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *22523120
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: em-ws-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &22522380 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.1.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *22522380
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yajl-ruby
|
38
|
-
requirement: &
|
38
|
+
requirement: &22521920 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.1.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *22521920
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: confstruct
|
49
|
-
requirement: &
|
49
|
+
requirement: &22521440 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 0.2.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *22521440
|
58
58
|
description: Client side implementation for the shove.io API. See http://shove.io/documentation
|
59
59
|
email: dan@shove.io
|
60
60
|
executables:
|