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