peatio1.9 0.4.4 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 21e80cf48d4e7fdde91bdcc54415b5de89382fc3d771f4a1d10ae10593e1c209
4
- data.tar.gz: 3e9328c73c580e323ad011c1c1c54f21c9d2aa5baf0a7ec4c4f933801c975188
3
+ metadata.gz: 9c27f83d3d8bcd476b619d1935c563452c4b7290300907326c651d4a24bcc0b0
4
+ data.tar.gz: 45a725ae726b661d0a787db208a03b02864c3079863ba4aa5516fa339d3cfede
5
5
  SHA512:
6
- metadata.gz: 777ac8d99de880e823479b65987d689f4ebf353b79d6faab850d2e263530e4f2aeafe4cef938771743ba49ab4cde091626373a50ca4ae69eb4c9a5ba3f27c372
7
- data.tar.gz: 13081c7908134089e5c5b4842fdeac92ffeed6a9c00165d38ef98239e9c5a6f47def17610342fc4cd6686fe354a5e85cb8f22cc5b9776085128be23c98e8b158
6
+ metadata.gz: ef2e5cea2866ffc70d4fb0498da9ba8d26ad3120f9dac860f7a8402c93d37fe4d176eee0f485a1923b73ba938636f951d70844bf284df02143f306e526a99a80
7
+ data.tar.gz: 76aaf1deab676935b9ebb52a81966682963497c17ea7010d8aed09ae92259fbcec94717e6e5b604162f943d826c792a1751eae023853561752ba8b63070d01c1
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- peatio1.9 (0.4.4)
4
+ peatio1.9 (0.4.5)
5
5
  amqp
6
6
  bunny
7
7
  clamp
@@ -40,7 +40,6 @@ GEM
40
40
  jaro_winkler (1.5.1)
41
41
  json (2.3.1)
42
42
  jwt (2.2.1)
43
- mysql2 (0.5.3)
44
43
  mysql2 (0.5.3-x64-mingw32)
45
44
  parallel (1.12.1)
46
45
  parser (2.5.1.2)
data/README.md CHANGED
@@ -9,7 +9,7 @@ TODO: Delete this and the text above, and describe your gem
9
9
  Add this line to your application's Gemfile:
10
10
 
11
11
  ```ruby
12
- gem 'peatio'
12
+ gem 'peatio1.9', '0.4.4', require: 'peatio'
13
13
  ```
14
14
 
15
15
  And then execute:
@@ -18,7 +18,7 @@ And then execute:
18
18
 
19
19
  Or install it yourself as:
20
20
 
21
- $ gem install peatio
21
+ $ gem install peatio1.9
22
22
 
23
23
  ## Usage
24
24
 
@@ -35,7 +35,7 @@ module Peatio::MQ::Events
35
35
  end
36
36
  end
37
37
 
38
- def initialize(socket, streams)
38
+ def initialize(socket, streams = {})
39
39
  @socket = socket
40
40
  @streams = streams
41
41
 
@@ -4,7 +4,6 @@ module Peatio::Ranger
4
4
  @authenticator = authenticator
5
5
  @socket = socket
6
6
  @logger = logger
7
- @streams = []
8
7
  end
9
8
 
10
9
  def send(method, data)
@@ -13,21 +12,36 @@ module Peatio::Ranger
13
12
  @socket.send payload
14
13
  end
15
14
 
16
- def handle(msg)
17
- authorized = false
18
- begin
19
- data = JSON.parse(msg)
15
+ def update_streams
16
+ @socket.instance_variable_set(:@connection_handler, @client)
17
+ end
20
18
 
21
- token = data["jwt"]
19
+ def subscribe(streams)
20
+ raise "Streams must be an array of strings" unless streams.is_a?(Array)
21
+ streams.each do |stream|
22
+ next if stream.nil?
23
+ @client.streams[stream] = true
24
+ end
25
+ send :success, message: "subscribed", streams: @client.streams.keys
26
+ end
22
27
 
23
- payload = @authenticator.authenticate!(token)
28
+ def unsubscribe(streams)
29
+ raise "Streams must be an array of strings" unless streams.is_a?(Array)
30
+ streams.each do |stream|
31
+ next if stream.nil?
32
+ @client.streams.delete(stream)
33
+ end
34
+ send :success, message: "unsubscribed", streams: @client.streams.keys
35
+ end
24
36
 
37
+ def authenticate(jwt)
38
+ begin
39
+ token = data["jwt"]
40
+ payload = @authenticator.authenticate!(token)
25
41
  authorized = true
26
- rescue JSON::ParserError
27
42
  rescue => error
28
43
  @logger.error error.message
29
44
  end
30
-
31
45
  if !authorized
32
46
  send :error, message: "Authentication failed."
33
47
  return
@@ -36,27 +50,50 @@ module Peatio::Ranger
36
50
  @client.user = payload[:uid]
37
51
  @client.authorized = true
38
52
 
39
- @logger.info "ranger: user #{@client.user} authenticated #{@streams}"
40
-
53
+ @logger.info "ranger: user #{@client.user} authenticated"
41
54
  send :success, message: "Authenticated."
55
+
42
56
  end
43
57
 
44
- def handshake(handshake)
45
- query = URI::decode_www_form(handshake.query_string)
58
+ def handle(msg)
59
+ authorized = false
60
+ begin
61
+ data = JSON.parse(msg)
62
+
63
+ case data["event"]
64
+ when "subscribe"
65
+ subscribe data["streams"]
66
+ when "unsubscribe"
67
+ unsubscribe data["streams"]
68
+ when "jwt"
69
+ authenticate data["jwt"]
46
70
 
47
- @streams = query.map do |item|
48
- if item.first == "stream"
49
- item.last
50
71
  end
72
+ rescue JSON::ParserError
73
+ rescue => error
74
+ @logger.error error.message
51
75
  end
76
+ end
52
77
 
53
- @logger.info "ranger: WebSocket connection openned, streams: #{@streams}"
54
-
55
- @client = Peatio::MQ::Events::Client.new(
56
- @socket, @streams,
57
- )
58
-
59
- @socket.instance_variable_set(:@connection_handler, @client)
78
+ def handshake(hs)
79
+ @client = Peatio::MQ::Events::Client.new(@socket)
80
+ query = URI::decode_www_form(hs.query_string)
81
+ subscribe(query.map {|item| item.last if item.first == "stream"})
82
+ @logger.info "ranger: WebSocket connection openned"
83
+
84
+ if hs.headers_downcased.key?("authorization")
85
+ authorized, payload = authenticate(hs.headers["authorization"])
86
+
87
+ if !authorized
88
+ @logger.info "ranger: #{@client.user} authentication failed"
89
+ raise EM::WebSocket::HandshakeError, "Authorization failed"
90
+ else
91
+ @logger.info [authorized, payload].inspect
92
+ @client.user = payload[:uid]
93
+ @client.authorized = true
94
+ @logger.info "ranger: user #{@client.user} authenticated #{@client.streams}"
95
+ end
96
+ end
60
97
  end
61
98
  end
62
99
 
@@ -91,6 +128,10 @@ module Peatio::Ranger
91
128
  connection.handle(msg)
92
129
  end
93
130
 
131
+ socket.onping do |value|
132
+ logger.info "Received ping: #{value}"
133
+ end
134
+
94
135
  socket.onclose do
95
136
  logger.info "ranger: WebSocket connection closed"
96
137
  end
@@ -1,3 +1,3 @@
1
1
  module Peatio
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peatio1.9
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - topdev