peatio_client 0.0.1 → 0.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ebced0663c94ea971c0c1e812693fa215141f91e
4
- data.tar.gz: 86ebc990d3b7302ec103c351ac3b44632a45b0cf
3
+ metadata.gz: 98c2291071d88410d4cd20b5259fc61f4c7b7b16
4
+ data.tar.gz: ad9a146bd8bc4692236a79804bb8690c1a9fbd35
5
5
  SHA512:
6
- metadata.gz: b0a06eedcae95c3ce95178b611e76b9c1345d0626c188197c1019b931f52934c4ee5ec166e5df97084c8f1cca7123aff736ba1a448cedde4bdfe0fb889d53f96
7
- data.tar.gz: 1bfc45f0a3b52eeac45f7fc500b660ee572bbf420f309f1a824b882e6ecd44e1a3fd99b0586f19a0f2954eab78e92dcfe2075757435ffb74217175177fba83ce
6
+ metadata.gz: 94b49dc941ab5de47c65140c55152a5779fc0b3f25e76c8e5f5281085119164f0d37afc6eddedc33572f5b8099fa67e76db30743c4f4e81049b628354da07ae3
7
+ data.tar.gz: 14098e0252d281539a9f090679fc625396f6203f5fa88899090aa443c76c0a35e43a9bb37c50ce95c2b986a6ea3ac6f82dc386d9f841a963ca12a065fad8df67
data/README.markdown CHANGED
@@ -20,7 +20,7 @@ Ruby client for Peatio API
20
20
 
21
21
  TBD
22
22
 
23
- #### Library ####
23
+ #### REST API client ####
24
24
 
25
25
  Use `#get` or `#post` to access API after you created a `PeatioAPI::Client`:
26
26
 
@@ -45,6 +45,19 @@ Use `#get` or `#post` to access API after you created a `PeatioAPI::Client`:
45
45
 
46
46
  Check [Peatio API v2 Documents](https://peatio.com/documents/api_v2) for details on Peatio API.
47
47
 
48
+ ### Streaming API client ###
49
+
50
+ Streaming API client is built upon eventmachine, it will start an endless loop to accept updates from server side, you only need to provide a callback block:
51
+
52
+ ```ruby
53
+ require 'peatio_client'
54
+
55
+ client = PeatioAPI::StreamingClient.new access_key: 'your_access_key', secret_key: 'your_secret_key', endpoint: 'wss://peatio.com:8080'
56
+ client.run do |message|
57
+ # do whatever you want with message
58
+ end
59
+ ```
60
+
48
61
  ### License ###
49
62
 
50
63
  `peatio-client-ruby` is released under MIT license. See [http://peatio.mit-license.org](http://peatio.mit-license.org) for more information.
@@ -6,6 +6,11 @@ module PeatioAPI
6
6
  @secret_key = secret_key
7
7
  end
8
8
 
9
+ def signed_challenge(challenge)
10
+ signature = OpenSSL::HMAC.hexdigest 'SHA256', @secret_key, "#{@access_key}#{challenge}"
11
+ {auth: {access_key: @access_key, answer: signature}}
12
+ end
13
+
9
14
  def signed_params(verb, path, params={})
10
15
  params = format_params params
11
16
  signature = sign verb, path, URI.unescape(params.to_query)
@@ -34,11 +34,7 @@ module PeatioAPI
34
34
  private
35
35
 
36
36
  def parse(response)
37
- if response.code =~ /2../
38
- JSON.parse response.body
39
- else
40
- raise "Request failed: #{response.body}"
41
- end
37
+ JSON.parse response.body
42
38
  end
43
39
 
44
40
  def setup_auth_keys(options)
@@ -1,5 +1,5 @@
1
1
  module PeatioAPI
2
2
  class Client
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
@@ -0,0 +1,50 @@
1
+ require 'json'
2
+ require 'eventmachine'
3
+ require 'websocket-eventmachine-client'
4
+
5
+ module PeatioAPI
6
+ class StreamingClient < Client
7
+
8
+ def initialize(options={})
9
+ super
10
+ @endpoint = options[:endpoint] || 'wss://peatio.com:8080'
11
+ @logger = options[:logger] || Logger.new(STDOUT)
12
+ end
13
+
14
+ def run(&callback)
15
+ EM.run do
16
+ ws = WebSocket::EventMachine::Client.connect(uri: @endpoint)
17
+
18
+ ws.onopen do
19
+ @logger.info "Connected."
20
+ end
21
+
22
+ ws.onmessage do |payload, type|
23
+ msg = JSON.parse(payload)
24
+
25
+ key = msg.keys.first
26
+ data = msg[key]
27
+ case key
28
+ when 'challenge'
29
+ ws.send JSON.dump(@auth.signed_challenge(data))
30
+ else
31
+ begin
32
+ callback.call msg
33
+ rescue
34
+ @logger.error "Failed to process message: #{payload}"
35
+ @logger.error $!
36
+ end
37
+ end
38
+ end
39
+
40
+ ws.onclose do
41
+ @logger.info "Closed."
42
+ EM.stop
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+ end
data/lib/peatio_client.rb CHANGED
@@ -4,3 +4,4 @@ require 'active_support/hash_with_indifferent_access'
4
4
  require_relative 'peatio_api/config'
5
5
  require_relative 'peatio_api/auth'
6
6
  require_relative 'peatio_api/client'
7
+ require_relative 'peatio_api/streaming_client'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peatio_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peatio Opensource
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-26 00:00:00.000000000 Z
11
+ date: 2014-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: websocket-eventmachine-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: A ruby client which can access all Peatio's API.
28
42
  email:
29
43
  - community@peatio.com
@@ -36,6 +50,7 @@ files:
36
50
  - lib/peatio_api/client.rb
37
51
  - lib/peatio_api/client/version.rb
38
52
  - lib/peatio_api/config.rb
53
+ - lib/peatio_api/streaming_client.rb
39
54
  - lib/peatio_client.rb
40
55
  homepage: https://github.com/peatio/peatio-client-ruby
41
56
  licenses: