bter-ruby 0.0.5 → 0.0.6

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: c011715d8724a1dfe889ba35b4ac5d34c9adf893
4
- data.tar.gz: f73e85d0c94534d98c2bd2806a7d0f58e138be63
3
+ metadata.gz: e450fe92759644777b68b408c8233222342c3368
4
+ data.tar.gz: 06be7c0ea828bfe0c72d24147b3510befffdc9a4
5
5
  SHA512:
6
- metadata.gz: 3f1f3e669d2fb8d221cf4f9484fab6224c2de16e82bcfe9da47d167f4d44decb20a7bbc155f01a77069c8c62f8d1fe6779b9115a3ab623a9ccd1d56bd7b51bad
7
- data.tar.gz: 1ea2f82d46d3473d262f39cfbe227a9ad5a11c8612632b9dade9f9b9e792c2f82f17f163777f786a96a47c2070525612d52baa127e4a660d87be01c31ad5f518
6
+ metadata.gz: 950566bd7ab675f5ac58747e17cfc573de427e50ccd41f223dd4c14bff749579ec55efe0c08bb0f63714b9168242d708c5528e4fcb0832118b8d2d7f37d2d89b
7
+ data.tar.gz: 711817483e659b969d5d9641202b09e127c5aca1f4effedff60e67f6643c2e64d2ce4e97addec9d88b7c0f1e2cb102a9b8f8db824b2c07647cb750109a22d4a2
data/README.md CHANGED
@@ -10,16 +10,21 @@ require 'bter'
10
10
  ```
11
11
  The library has two parts , one for the public api and one for the trading one.
12
12
 
13
- The public api has 3 methods which return the ticker , market depth
14
- and current trades for a given pair(check bter for the available pairs)
13
+ The public api has the following methods
15
14
 
16
15
  ```ruby
17
16
  bt = Bter::Public.new
18
-
19
- puts bt.ticker("btc_cny")
20
- puts bt.depth("btc_cny")
21
- puts bt.trades("btc_cny")
17
+ bt.pairs
18
+ bt.tickers
19
+ bt.ticker("btc_cny")
20
+ bt.depth("btc_cny")
21
+ bt.info
22
+ bt.details
23
+ bt.trades("btc_cny", tid) # alias .history
22
24
  ```
25
+ tid parameter is optional on trades method and if omitted will return the most recent 80 trade history records.
26
+
27
+
23
28
  To use the trading api , you need to supply your key and secret
24
29
  ```ruby
25
30
  bt = Bter::Trade.new
@@ -31,24 +36,13 @@ Then you can use the available methods:
31
36
  ```ruby
32
37
  bt.get_info
33
38
  bt.active_orders
39
+ bt.my_trades(pair)
34
40
  bt.order_status(order_id)
35
41
  bt.cancel_order(order_id)
36
42
  bt.buy(pair, amount, rate)
37
43
  bt.sell(pair, amount, rate)
38
44
  ```
39
-
40
- rate parameter is optional on buy and sell methods.
41
-
42
-
43
- You can enable the logger for public and trading requests.
44
- It logs successful or failed requests and response info.(off by default)
45
- ```ruby
46
- bt = Bter::Public.new
47
- bt.logging :on
48
-
49
- bt2 = Bter::Trade.new
50
- bt2.logging :on
51
- ```
45
+ rate parameter is optional on buy and sell methods and if omitted the current rate will be used.
52
46
 
53
47
 
54
48
  Also check the two examples in the examples folder.
data/lib/bter/public.rb CHANGED
@@ -1,45 +1,49 @@
1
+ require_relative 'request.rb'
2
+
1
3
  module Bter
2
4
  class Public
3
-
4
- def initialize
5
- @logging = false
5
+ include Request
6
+ def pairs
7
+ query = public_request("pairs")
8
+ JSON.parse(query, {:symbolize_names => true})
6
9
  end
7
-
8
- def logging(p)
9
- if p == :on
10
- @logging = true
11
- end
12
- end
13
-
14
- def public_request(method, pair)
15
- request = Typhoeus::Request.new("https://data.bter.com/api/1/#{method}/#{pair}")
16
- if @logging
17
- RequestLogger.error_log(request)
18
- end
19
- hydra = Typhoeus::Hydra.hydra
20
- hydra.queue(request)
21
- hydra.run
22
- response = request.response
23
- if @logging
24
- RequestLogger.info_log(response.code, response.total_time, response.headers_hash)
25
- end
26
- response.body
27
- end
28
-
10
+
29
11
  def ticker(pair)
30
- query = public_request "ticker", pair
31
- info = JSON.parse query, {:symbolize_names => true}
12
+ query = public_request("ticker", pair)
13
+ JSON.parse(query, {:symbolize_names => true})
14
+ end
15
+
16
+ def tickers
17
+ query = public_request("tickers")
18
+ JSON.parse(query, {:symbolize_names => true})
32
19
  end
33
20
 
34
21
  def depth(pair)
35
- query = public_request "depth", pair
36
- info = JSON.parse query, {:symbolize_names => true}
22
+ query = public_request("depth", pair)
23
+ JSON.parse(query, {:symbolize_names => true})
37
24
  end
38
-
39
- def trades(pair)
40
- query = public_request "trade", pair
41
- info = JSON.parse query, {:symbolize_names => true}
25
+
26
+ def info
27
+ query = public_request("marketinfo")
28
+ JSON.parse(query, {:symbolize_names => true})
29
+ end
30
+
31
+ def details
32
+ query = public_request("markelist")
33
+ JSON.parse(query, {:symbolize_names => true})
34
+ end
35
+
36
+ def trades(pair, tid='')
37
+ query = public_request("trade", pair + "/#{tid}")
38
+ JSON.parse(query, {:symbolize_names => true})
39
+ end
40
+
41
+ def logging(log)
42
+ raise "Logger is no longer available , please remove it"
42
43
  end
43
44
 
45
+ alias_method :market_info, :info
46
+ alias_method :marke_list, :details
47
+ alias_method :history, :trades
44
48
  end
45
49
  end
@@ -0,0 +1,38 @@
1
+ module Bter
2
+ module Request
3
+ extend self
4
+ PUBLIC_URL = 'https://data.bter.com/api/1'
5
+ TRADE_URL = 'https://bter.com/api/1/private'
6
+
7
+ def public_request(method, pair='')
8
+ HTTParty.get("#{PUBLIC_URL}/#{method}/#{pair}").body
9
+ end
10
+
11
+ def trade_request(method, params=nil)
12
+ if params.nil?
13
+ @params = {:method => method}
14
+ else
15
+ @params = {:method => method}
16
+ params.each do |param|
17
+ @params.merge!(param)
18
+ end
19
+ end
20
+ HTTParty.post(
21
+ "#{TRADE_URL}/#{method}",
22
+ :body => @params,
23
+ :headers => {
24
+ 'KEY' => @key,
25
+ 'Sign' => sign,
26
+ "Content-type" => "application/x-www-form-urlencoded",
27
+ "Accept" => "application/x-www-form-urlencoded"
28
+ }
29
+ ).body
30
+ end
31
+
32
+ def sign
33
+ hmac = OpenSSL::HMAC.new(@secret,OpenSSL::Digest::SHA512.new)
34
+ @params = @params.collect {|k,v| "#{k}=#{v}"}.join('&')
35
+ hmac.update(@params).to_s
36
+ end
37
+ end
38
+ end
data/lib/bter/trading.rb CHANGED
@@ -1,68 +1,21 @@
1
+ require_relative 'request.rb'
1
2
 
2
3
  module Bter
3
4
  class Trade
5
+ include Request
4
6
 
5
7
  attr_accessor :key, :secret
6
-
7
- def initialize
8
- @logging = false
9
- end
10
-
11
- def logging(p)
12
- if p == :on
13
- @logging = true
14
- end
15
- end
16
-
17
- def trade_request(method, params=nil)
18
- if params.nil?
19
- @params = {:method => method}
20
- else
21
- @params = {:method => method}
22
- params.each do |param|
23
- @params.merge!(param)
24
- end
25
- end
26
- request = Typhoeus::Request.new(
27
- "https://bter.com/api/1/private/#{method}",
28
- method: :post,
29
- body: @params,
30
- headers: { Key: @key, Sign: sign }
31
- )
32
- if @logging
33
- RequestLogger.error_log(request)
34
- end
35
- hydra = Typhoeus::Hydra.hydra
36
- hydra.queue(request)
37
- hydra.run
38
- response = request.response
39
- if @logging
40
- RequestLogger.info_log(response.code, response.total_time, response.headers_hash)
41
- end
42
- response.body
43
- end
44
-
45
- def sign
46
- hmac = OpenSSL::HMAC.new(@secret,OpenSSL::Digest::SHA512.new)
47
- @params = @params.collect {|k,v| "#{k}=#{v}"}.join('&')
48
- signed = hmac.update @params
49
- end
50
8
 
51
9
  def get_info
52
- query = trade_request "getfunds"
53
- info = JSON.parse query, {:symbolize_names => true}
10
+ query = trade_request("getfunds")
11
+ JSON.parse(query, {:symbolize_names => true})
54
12
  end
55
13
 
56
14
  def active_orders
57
- query = trade_request "orderlist"
58
- info = JSON.parse query, {:symbolize_names => true}
15
+ query = trade_request("orderlist")
16
+ JSON.parse(query, {:symbolize_names => true})
59
17
  end
60
18
 
61
- def trade(*params)
62
- query = trade_request "placeorder", params
63
- info = JSON.parse query, {:symbolize_names => true}
64
- end
65
-
66
19
  #abstract the trade to buy and sell
67
20
  def buy(pair, amount, rate=nil)
68
21
  rate ||= get_rate(pair)
@@ -75,17 +28,33 @@ module Bter
75
28
  end
76
29
 
77
30
  def order_status(order_id)
78
- query = trade_request "getorder", [{:id => order_id}]
79
- info = JSON.parse query, {:symbolize_names => true}
31
+ query = trade_request("getorder", [{:order_id => order_id}])
32
+ JSON.parse(query, {:symbolize_names => true})
80
33
  end
81
34
 
82
35
  def cancel_order(order_id)
83
- query = trade_request "cancelorder", [{:id => order_id}]
84
- info = JSON.parse query, {:symbolize_names => true}
36
+ query = trade_request("cancelorder", [{:order_id => order_id}])
37
+ JSON.parse(query, {:symbolize_names => true})
38
+ end
39
+
40
+ def my_trades(pair)
41
+ query = trade_request("mytrades", [{:pair => pair}])
42
+ JSON.parse(query, {:symbolize_names => true})
85
43
  end
86
44
 
45
+ #soon to be removed
46
+ def logging(log)
47
+ raise "Logger is no longer available , please remove it"
48
+ end
49
+
50
+ private
51
+ def trade(*params)
52
+ query = trade_request("placeorder", params)
53
+ JSON.parse(query, {:symbolize_names => true})
54
+ end
55
+
87
56
  def get_rate(pair)
88
- Public.new.ticker(pair).values_at(:last).flatten
57
+ Public.new.ticker(pair).values_at(:last).flatten.first
89
58
  end
90
59
 
91
60
  end
data/lib/bter.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'bundler/setup'
2
2
  require 'json'
3
- require 'typhoeus'
3
+ require 'httparty'
4
4
  require 'openssl'
5
5
 
6
6
  require_relative 'bter/public.rb'
7
7
  require_relative 'bter/trading.rb'
8
- require_relative 'bter/request_logger.rb'
8
+ require_relative 'bter/request.rb'
9
9
 
10
10
  module Bter
11
11
 
metadata CHANGED
@@ -1,75 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bter-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zisis Maras
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-15 00:00:00.000000000 Z
11
+ date: 2014-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.8'
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.8.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1.8'
30
- - - '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.8.1
33
33
  - !ruby/object:Gem::Dependency
34
- name: typhoeus
34
+ name: httparty
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.6'
40
- - - '>='
39
+ version: '0.13'
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.6.8
42
+ version: 0.13.1
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '0.6'
50
- - - '>='
49
+ version: '0.13'
50
+ - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.6.8
53
- - !ruby/object:Gem::Dependency
54
- name: logger
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - ~>
58
- - !ruby/object:Gem::Version
59
- version: '1.2'
60
- - - '>='
61
- - !ruby/object:Gem::Version
62
- version: 1.2.8
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '1.2'
70
- - - '>='
71
- - !ruby/object:Gem::Version
72
- version: 1.2.8
52
+ version: 0.13.1
73
53
  description: Ruby api for the bter.com cryptocurrency exchange
74
54
  email: zisismaras@gmail.com
75
55
  executables: []
@@ -81,7 +61,7 @@ files:
81
61
  - README.md
82
62
  - lib/bter.rb
83
63
  - lib/bter/public.rb
84
- - lib/bter/request_logger.rb
64
+ - lib/bter/request.rb
85
65
  - lib/bter/trading.rb
86
66
  homepage: https://github.com/zisismaras/bter-ruby
87
67
  licenses:
@@ -93,12 +73,12 @@ require_paths:
93
73
  - lib
94
74
  required_ruby_version: !ruby/object:Gem::Requirement
95
75
  requirements:
96
- - - '>='
76
+ - - ">="
97
77
  - !ruby/object:Gem::Version
98
78
  version: '0'
99
79
  required_rubygems_version: !ruby/object:Gem::Requirement
100
80
  requirements:
101
- - - '>='
81
+ - - ">="
102
82
  - !ruby/object:Gem::Version
103
83
  version: '0'
104
84
  requirements: []
@@ -1,37 +0,0 @@
1
- require 'logger'
2
-
3
- module Bter
4
- module RequestLogger
5
- extend self
6
-
7
- def error_log(request)
8
- logger = Logger.new('logfile.log')
9
- logger.level = Logger::INFO
10
-
11
- request.on_complete do |response|
12
- if response.success?
13
- logger.info("Success")
14
- true
15
- elsif response.timed_out?
16
- logger.error("Got a time out")
17
- false
18
- elsif response.code == 0
19
- logger.error(response.return_message)
20
- false
21
- else
22
- logger.error("HTTP request failed: " + response.code.to_s)
23
- false
24
- end
25
- end
26
- end
27
-
28
- def info_log(code, total_time, header_hash)
29
- logger = Logger.new('logfile.log')
30
- logger.level = Logger::INFO
31
- logger.info("response code : #{code}")
32
- logger.info("Total_time: #{total_time}")
33
- logger.info("Header_hash: #{header_hash}")
34
- end
35
-
36
- end
37
- end