gdax_client 0.0.0
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 +7 -0
- data/lib/gdax_client.rb +13 -0
- data/lib/gdax_client/controls.rb +9 -0
- data/lib/gdax_client/controls/endpoint.rb +9 -0
- data/lib/gdax_client/controls/http.rb +27 -0
- data/lib/gdax_client/controls/http/product_ticker/get/response.rb +88 -0
- data/lib/gdax_client/controls/product.rb +15 -0
- data/lib/gdax_client/controls/ticker.rb +41 -0
- data/lib/gdax_client/controls/time.rb +5 -0
- data/lib/gdax_client/gdax_client.rb +45 -0
- data/lib/gdax_client/http/product_ticker/get.rb +61 -0
- data/lib/gdax_client/http/product_ticker/get/response.rb +45 -0
- data/lib/gdax_client/settings.rb +15 -0
- metadata +125 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5c8dbb4dc974079d834762032b74fd1a866b506f
|
4
|
+
data.tar.gz: 7b0dece0f18174d58fb6040761d8601ca40da538
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: '0859655e5d723db8c862dee08cc2aee23c49d4e3bb12b88f907b91c9ad513e068e2556f7f3c4e8f58028820037b5d95efad77d04df5a17ae0cd074636fe10a59'
|
7
|
+
data.tar.gz: cf507c5f4e7e4be4f9bd7b3637f70560c8d4da54a2bc36bd8e849bda5cbbc5d8b2b36608cf5aebc64e6c13da52871a4c2645bc2a08a77135fb45b8688716604f
|
data/lib/gdax_client.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'configure'; Configure.activate
|
2
|
+
require 'log'
|
3
|
+
require 'net/http'
|
4
|
+
require 'schema'
|
5
|
+
require 'settings'; Settings.activate
|
6
|
+
require 'telemetry'
|
7
|
+
require 'transform'
|
8
|
+
|
9
|
+
require 'gdax_client/settings'
|
10
|
+
|
11
|
+
require 'gdax_client/gdax_client'
|
12
|
+
require 'gdax_client/http/product_ticker/get'
|
13
|
+
require 'gdax_client/http/product_ticker/get/response'
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'clock/controls'
|
2
|
+
|
3
|
+
require 'gdax_client/controls/endpoint'
|
4
|
+
require 'gdax_client/controls/http'
|
5
|
+
require 'gdax_client/controls/product'
|
6
|
+
require 'gdax_client/controls/ticker'
|
7
|
+
require 'gdax_client/controls/time'
|
8
|
+
|
9
|
+
require 'gdax_client/controls/http/product_ticker/get/response'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class GDAXClient
|
2
|
+
module Controls
|
3
|
+
module HTTP
|
4
|
+
module Code
|
5
|
+
def self.example
|
6
|
+
'some-code'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module Message
|
11
|
+
def self.example
|
12
|
+
'Some Message'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module Body
|
17
|
+
def self.example
|
18
|
+
::JSON.generate(data)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.data
|
22
|
+
{ 'some_key' => 'some_value' }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
class GDAXClient
|
2
|
+
module Controls
|
3
|
+
module HTTP
|
4
|
+
module ProductTicker
|
5
|
+
module Get
|
6
|
+
module Response
|
7
|
+
def self.example
|
8
|
+
Success.example
|
9
|
+
end
|
10
|
+
|
11
|
+
module Success
|
12
|
+
def self.example
|
13
|
+
response = GDAXClient::HTTP::ProductTicker::Get::Response.build
|
14
|
+
response.data = GDAXClient::HTTP::ProductTicker::Get::Response::Data.build
|
15
|
+
|
16
|
+
response.data.trade_id = Ticker::TradeID.example
|
17
|
+
response.data.price = Ticker::Price.example
|
18
|
+
response.data.size = Ticker::Size.example
|
19
|
+
response.data.bid = Ticker::Bid.example
|
20
|
+
response.data.ask = Ticker::Ask.example
|
21
|
+
response.data.volume = Ticker::Volume.example
|
22
|
+
response.data.time = Time.example
|
23
|
+
|
24
|
+
response.status_code = StatusCode.sample
|
25
|
+
response.message = Message.sample
|
26
|
+
|
27
|
+
response
|
28
|
+
end
|
29
|
+
|
30
|
+
module StatusCode
|
31
|
+
def self.sample
|
32
|
+
'200'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module Message
|
37
|
+
def self.sample
|
38
|
+
'OK'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module Failure
|
44
|
+
def self.example
|
45
|
+
response = GDAXClient::HTTP::ProductTicker::Get::Response.build
|
46
|
+
|
47
|
+
response.status_code = StatusCode.sample
|
48
|
+
response.message = Message.sample
|
49
|
+
|
50
|
+
response
|
51
|
+
end
|
52
|
+
|
53
|
+
module StatusCode
|
54
|
+
def self.sample
|
55
|
+
'404'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
module Message
|
60
|
+
def self.sample
|
61
|
+
'Not Found'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
module JSON
|
67
|
+
def self.text
|
68
|
+
::JSON.generate(data)
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.data
|
72
|
+
{
|
73
|
+
'trade_id' => Ticker::TradeID.example,
|
74
|
+
'price' => Ticker::Price.example,
|
75
|
+
'size' => Ticker::Size.example,
|
76
|
+
'bid' => Ticker::Bid.example,
|
77
|
+
'ask' => Ticker::Ask.example,
|
78
|
+
'volume' => Ticker::Volume.example,
|
79
|
+
'time' => Time.example
|
80
|
+
}
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class GDAXClient
|
2
|
+
module Controls
|
3
|
+
module Ticker
|
4
|
+
module TradeID
|
5
|
+
def self.example
|
6
|
+
11111111
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module Price
|
11
|
+
def self.example
|
12
|
+
1000.00000000
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module Size
|
17
|
+
def self.example
|
18
|
+
0.12345678
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module Bid
|
23
|
+
def self.example
|
24
|
+
999.99
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module Ask
|
29
|
+
def self.example
|
30
|
+
1000.00
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Volume
|
35
|
+
def self.example
|
36
|
+
100.00000000
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class GDAXClient
|
2
|
+
include Log::Dependency
|
3
|
+
|
4
|
+
setting :url
|
5
|
+
|
6
|
+
configure :client
|
7
|
+
|
8
|
+
def self.build
|
9
|
+
instance = new
|
10
|
+
Settings.set(instance)
|
11
|
+
instance
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(endpoint)
|
15
|
+
uri = URI(url + endpoint)
|
16
|
+
|
17
|
+
logger.trace "Sending HTTP GET request (URI: #{uri})"
|
18
|
+
|
19
|
+
response = Net::HTTP.get_response(uri)
|
20
|
+
|
21
|
+
logger.debug "HTTP GET response received (URI: #{uri}, Code: #{response.code}, Message: #{response.message})"
|
22
|
+
|
23
|
+
response
|
24
|
+
end
|
25
|
+
|
26
|
+
class Substitute
|
27
|
+
attr_accessor :http_code
|
28
|
+
attr_accessor :http_message
|
29
|
+
attr_accessor :response_body
|
30
|
+
|
31
|
+
def self.build
|
32
|
+
new
|
33
|
+
end
|
34
|
+
|
35
|
+
def get(endpoint)
|
36
|
+
self.http_code ||= '200'
|
37
|
+
self.http_message ||= 'OK'
|
38
|
+
self.response_body ||= {}
|
39
|
+
|
40
|
+
Response.new(http_code, http_message, response_body)
|
41
|
+
end
|
42
|
+
|
43
|
+
Response = Struct.new :code, :message, :body
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class GDAXClient
|
2
|
+
module HTTP
|
3
|
+
module ProductTicker
|
4
|
+
class Get
|
5
|
+
include Log::Dependency
|
6
|
+
|
7
|
+
dependency :client, GDAXClient
|
8
|
+
|
9
|
+
configure :get_ticker
|
10
|
+
|
11
|
+
def self.call(product_id)
|
12
|
+
instance = build
|
13
|
+
instance.(product_id)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.build
|
17
|
+
instance = new
|
18
|
+
GDAXClient.configure(instance)
|
19
|
+
instance
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(product_id)
|
23
|
+
endpoint = "/products/#{product_id}/ticker"
|
24
|
+
|
25
|
+
logger.trace "Getting ticker (ProductID: #{product_id}, Endpoint: #{endpoint})"
|
26
|
+
|
27
|
+
raw_response = client.get(endpoint)
|
28
|
+
|
29
|
+
if raw_response.code == '200'
|
30
|
+
logger.debug "Retrieved ticker (ProductID: #{product_id}, Endpoint: #{endpoint}, Status: #{raw_response.code}, Message: #{raw_response.message})"
|
31
|
+
response = Transform::Read.(raw_response.body, Response, :json)
|
32
|
+
else
|
33
|
+
logger.debug "Failed to retrieve ticker (ProductID: #{product_id}, Endpoint: #{endpoint}, Status: #{raw_response.code}, Message: #{raw_response.message})"
|
34
|
+
response = Response.new
|
35
|
+
end
|
36
|
+
|
37
|
+
response.status_code = raw_response.code
|
38
|
+
response.message = raw_response.message
|
39
|
+
|
40
|
+
response
|
41
|
+
end
|
42
|
+
|
43
|
+
class Substitute
|
44
|
+
attr_writer :response
|
45
|
+
|
46
|
+
def self.build
|
47
|
+
new
|
48
|
+
end
|
49
|
+
|
50
|
+
def call(product_id)
|
51
|
+
response
|
52
|
+
end
|
53
|
+
|
54
|
+
def response
|
55
|
+
@response ||= Response.new
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class GDAXClient
|
2
|
+
module HTTP
|
3
|
+
module ProductTicker
|
4
|
+
class Get
|
5
|
+
class Response
|
6
|
+
include Schema::DataStructure
|
7
|
+
|
8
|
+
attribute :data
|
9
|
+
attribute :status_code
|
10
|
+
attribute :message
|
11
|
+
|
12
|
+
class Data
|
13
|
+
include Schema::DataStructure
|
14
|
+
|
15
|
+
attribute :trade_id
|
16
|
+
attribute :price
|
17
|
+
attribute :size
|
18
|
+
attribute :bid
|
19
|
+
attribute :ask
|
20
|
+
attribute :volume
|
21
|
+
attribute :time
|
22
|
+
end
|
23
|
+
|
24
|
+
module Transformer
|
25
|
+
def self.json
|
26
|
+
JSON
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.instance(raw_data)
|
30
|
+
response = Response.build
|
31
|
+
response.data = Response::Data.build(raw_data)
|
32
|
+
response
|
33
|
+
end
|
34
|
+
|
35
|
+
module JSON
|
36
|
+
def self.read(text)
|
37
|
+
::JSON.parse text, :symbolize_names => true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gdax_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- BTC-Labs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: evt-configure
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: evt-schema
|
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'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: evt-settings
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: evt-transform
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: test_bench
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Client library for GDAX (Global Digital Assest Exchange) REST API
|
84
|
+
email:
|
85
|
+
executables: []
|
86
|
+
extensions: []
|
87
|
+
extra_rdoc_files: []
|
88
|
+
files:
|
89
|
+
- lib/gdax_client.rb
|
90
|
+
- lib/gdax_client/controls.rb
|
91
|
+
- lib/gdax_client/controls/endpoint.rb
|
92
|
+
- lib/gdax_client/controls/http.rb
|
93
|
+
- lib/gdax_client/controls/http/product_ticker/get/response.rb
|
94
|
+
- lib/gdax_client/controls/product.rb
|
95
|
+
- lib/gdax_client/controls/ticker.rb
|
96
|
+
- lib/gdax_client/controls/time.rb
|
97
|
+
- lib/gdax_client/gdax_client.rb
|
98
|
+
- lib/gdax_client/http/product_ticker/get.rb
|
99
|
+
- lib/gdax_client/http/product_ticker/get/response.rb
|
100
|
+
- lib/gdax_client/settings.rb
|
101
|
+
homepage: https://github.com/btc-labs/gdax-client
|
102
|
+
licenses:
|
103
|
+
- MIT
|
104
|
+
metadata: {}
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '2.4'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
requirements: []
|
120
|
+
rubyforge_project:
|
121
|
+
rubygems_version: 2.6.11
|
122
|
+
signing_key:
|
123
|
+
specification_version: 4
|
124
|
+
summary: GDAX Client
|
125
|
+
test_files: []
|