peatio_client 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: