btcturk 0.0.3 → 0.0.4

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: 89a971d828afaad8b615f9f3609c0c3ce492097c
4
- data.tar.gz: d08e15ab3f8bbb5d630caf301293219cd04f92d5
3
+ metadata.gz: c35ab1a286023f149031e49ee63baa742adc3e63
4
+ data.tar.gz: 97de83d1b37d66339ed17bffe23c1d244de09e93
5
5
  SHA512:
6
- metadata.gz: 6c89b6b12bbd29712b1b75dc09940adcd30bf6e826672145f7887b95773a2f1e5aeae6095a81b892a6223db05e44ad4d32351bf12476739039c7084d6871f0f8
7
- data.tar.gz: 67efbb9f47183503d4936366ab944850cfa1db99c0e22cd7c274fbe3c93360419060e386001421ce784a774dd364282c8f6ff8a702ffb29f00feb1655b71e096
6
+ metadata.gz: 33c1dcd39c67510a3d23ad06e12ad44051efb80921d5e5ee0f2f723be212bff408bd22e92723cff363e0eb3efe60694761ee91c608415c7e6efee728bb16730a
7
+ data.tar.gz: a3b50cf5be543c78cc861f1082cbc2bbe6dbc6672d52de35e7c1d93e154a8f258ca7d36f3843fccf05d6d981885409b1603d3838002bfd92ab43e25683febeb9
data/README.md CHANGED
@@ -44,26 +44,33 @@ BTCTurk::ticker
44
44
  ```
45
45
 
46
46
  #### List all open orders:
47
-
48
- BTCTurk::orderbook
47
+ ```rb
48
+ BTCTurk::orderbook
49
+ ```
49
50
 
50
51
  #### List all trades:
51
-
52
- BTCTurk::trades
52
+ ```rb
53
+ BTCTurk::trades
54
+ ```
53
55
 
54
56
  #### List all trades after a specific trade-id:
55
57
  ```rb
56
58
  BTCTurk::trades_since('532ded923ab47520bc5841d9')
59
+ ```
57
60
 
58
- => [{"date"=>1395518866.0,
59
- "tid"=>"532ded923ab47520bc5841da",
60
- "price"=>1255.98,
61
- "amount"=>0.15},
62
-
63
- {"date"=>1395542633.0,
64
- "tid"=>"532e4a693ab47520bc5841e1",
65
- "price"=>1275.0,
66
- "amount"=>0.31497106}]
61
+ #### See your balance:
62
+ ```rb
63
+ BTCTurk::balance
64
+ ```
65
+
66
+ #### See your open orders:
67
+ ```rb
68
+ BTCTurk::orders
69
+ ```
70
+
71
+ #### See your transaction history:
72
+ ```rb
73
+ BTCTurk::orders
67
74
  ```
68
75
 
69
76
  ## Contributing
@@ -1,5 +1,9 @@
1
+ require 'uri'
1
2
  require 'json'
2
- require 'open-uri'
3
+ require 'yaml'
4
+ require 'base64'
5
+ require 'openssl'
6
+ require 'net/http'
3
7
  require 'btcturk/version'
4
8
 
5
9
  module BTCTurk
@@ -7,24 +11,109 @@ module BTCTurk
7
11
  BASE_URL = 'https://www.btcturk.com/api/'
8
12
 
9
13
  def self.ticker
10
- fetch 'ticker'
14
+ get 'ticker'
11
15
  end
12
16
 
13
17
  def self.orderbook
14
- fetch 'orderbook'
18
+ get 'orderbook'
15
19
  end
16
20
 
17
21
  def self.trades
18
- fetch 'trades'
22
+ get 'trades'
19
23
  end
20
24
 
21
25
  def self.trades_since(id)
22
- fetch "trades?sinceid=#{id}"
26
+ get "trades?sinceid=#{id}"
27
+ end
28
+
29
+ def self.balance
30
+ get 'balance'
31
+ end
32
+
33
+ def self.orders
34
+ get 'openOrders'
35
+ end
36
+
37
+ # Check lines [61-64]
38
+ def self.transactions(offset = '0', limit = '100', sort = 'desc')
39
+ post 'userTransactions', offset, limit, sort
40
+ end
41
+
42
+ def self.get(action)
43
+ @settings = get_config
44
+
45
+ uri = URI.parse(BASE_URL + action)
46
+ timestamp = Time.now.to_i.to_s
47
+
48
+ http = Net::HTTP.new(uri.host, uri.port)
49
+ http.use_ssl = true
50
+
51
+ request = Net::HTTP::Get.new(uri.request_uri)
52
+
53
+ request['X-PCK'] = @settings[:api_key]
54
+ request['X-Stamp'] = timestamp
55
+ request['X-Signature'] = get_signature(timestamp)
56
+
57
+ response = http.request(request)
58
+ JSON.parse(response.body)
59
+ end
60
+
61
+ # User Transactions do not work at the moment
62
+ # Not sure if it's my code or the API to blame
63
+ # I'll try to solve it ASAP. In the meanwhile,
64
+ # Please do not hesitate to send pull requests!
65
+
66
+ def self.post(action, offset, limit, sort)
67
+ @settings = get_config
68
+ uri = URI.parse(BASE_URL + action)
69
+ timestamp = Time.now.to_i.to_s
70
+
71
+ http = Net::HTTP.new(uri.host, uri.port)
72
+ http.use_ssl = true
73
+
74
+ request = Net::HTTP::Post.new(uri.request_uri)
75
+
76
+ request.set_form_data({'offset' => offset, 'limit' => limit, 'sort' => sort})
77
+ # request.set_body_internal({'offset' => offset, 'limit' => limit, 'sort' => sort})
78
+ # request.body = 'offset=0&limit=100&sort=desc'
79
+
80
+ request['X-PCK'] = @settings[:api_key]
81
+ request['X-Stamp'] = timestamp
82
+ request['X-Signature'] = get_signature(timestamp)
83
+
84
+ response = http.request(request)
85
+ response.body
86
+ end
87
+
88
+ def self.get_signature(timestamp)
89
+ message = @settings[:api_key] + timestamp
90
+ private_key = Base64.decode64(@settings[:private_key]).strip
91
+ digest = OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), private_key, message)
92
+ Base64.encode64(digest).strip
93
+ end
94
+
95
+ def self.set_config
96
+ settings = {}
97
+ printf('Please enter your API key: ')
98
+ settings[:api_key] = gets.chomp
99
+ printf('Please enter your Private key: ')
100
+ settings[:private_key] = gets.chomp
101
+ printf("(Saved under #{Dir.home}/.btcturk ...)\n\n")
102
+
103
+ File.open("#{Dir.home}/.btcturk", 'w') do |file|
104
+ file.write settings.to_yaml
105
+ end
23
106
 
107
+ get_config
24
108
  end
25
109
 
26
- def self.fetch(request)
27
- JSON.parse(open(BASE_URL + request).read)
110
+ def self.get_config
111
+ file = "#{Dir.home}/.btcturk"
112
+ if File.exist? file
113
+ YAML::load_file file
114
+ else
115
+ set_config
116
+ end
28
117
  end
29
118
 
30
119
  end
@@ -1,3 +1,3 @@
1
1
  module Btcturk
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: btcturk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerem Bozdas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-23 00:00:00.000000000 Z
11
+ date: 2014-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  version: '0'
90
90
  requirements: []
91
91
  rubyforge_project:
92
- rubygems_version: 2.1.10
92
+ rubygems_version: 2.2.2
93
93
  signing_key:
94
94
  specification_version: 4
95
95
  summary: A simple ruby library to interface with BTCTurk API.