paxful_client 0.3.0 → 1.4.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 +4 -4
- data/.github/workflows/ruby.yml +4 -6
- data/CHANGELOG.md +20 -0
- data/Gemfile.lock +52 -19
- data/README.md +16 -5
- data/lib/paxful_client.rb +4 -0
- data/lib/paxful_client/requests/base_request.rb +5 -3
- data/lib/paxful_client/responses/base_response.rb +1 -0
- data/lib/paxful_client/responses/get_balance_response.rb +9 -3
- data/lib/paxful_client/responses/get_completed_trades_response.rb +10 -0
- data/lib/paxful_client/schemas/base_request_schema.rb +10 -0
- data/lib/paxful_client/schemas/get_balance_request_schema.rb +3 -0
- data/lib/paxful_client/schemas/get_completed_trades_request_schema.rb +3 -0
- data/lib/paxful_client/version.rb +1 -1
- data/paxful_client.gemspec +1 -0
- metadata +26 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 36845963975c5db9f0a3184a366c0958283e4eeb18dd583db1987c4c4aac98a8
|
|
4
|
+
data.tar.gz: 968fb3acba949cb42c2e9425af38655da1ed612ca6a1a9b4793c620bb3b9296e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 01e726e25a432383ab74b3ccde07c3cff7d1bf1c480afb8f9a4feaf0b52a0ca646f362fa427c2830e13a9996c21fe27112ec9af2d4f0394b99a58936fe8b3c85
|
|
7
|
+
data.tar.gz: d2b14a64416ba640ba0231c9bd2ea9f75d3d37eb7a41ccb71d40e3e110bb45a8160b7a0adf383da2099d24b3e9957e63c3a3be3e1b318c1441c587347079447b
|
data/.github/workflows/ruby.yml
CHANGED
|
@@ -20,14 +20,12 @@ jobs:
|
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
22
|
- uses: actions/checkout@v2
|
|
23
|
-
-
|
|
24
|
-
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
|
25
|
-
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
|
26
|
-
# uses: ruby/setup-ruby@v1
|
|
27
|
-
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
|
|
23
|
+
- uses: actions/setup-ruby@v1
|
|
28
24
|
with:
|
|
29
|
-
ruby-version: 2.
|
|
25
|
+
ruby-version: '2.7'
|
|
30
26
|
- name: Install dependencies
|
|
31
27
|
run: bundle install
|
|
28
|
+
- name: Copy config.yml
|
|
29
|
+
run: cp spec/config.yml{.sample,}
|
|
32
30
|
- name: Run tests
|
|
33
31
|
run: bundle exec rake
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [1.4.0] - 2021-06-15
|
|
8
|
+
### Added
|
|
9
|
+
- Update `dry-validation` to 1.x
|
|
10
|
+
|
|
11
|
+
## [1.3.0] - 2021-01-06
|
|
12
|
+
### Changed
|
|
13
|
+
- `get_balance#success?` now checks if the response body has a `data` element. Sometimes Paxful returns 200, but has an empty body
|
|
14
|
+
|
|
15
|
+
## [1.2.0] - 2020-12-15
|
|
16
|
+
### Changed
|
|
17
|
+
- Only consider success for `get_completed_trades` if it meets certain criteria
|
|
18
|
+
|
|
19
|
+
## [1.1.0] - 2020-11-25
|
|
20
|
+
### Added
|
|
21
|
+
- Add support for passing in `page` for completed trades
|
|
22
|
+
|
|
23
|
+
## [1.0.0] - 2020-11-19
|
|
24
|
+
### Added
|
|
25
|
+
- Ensure that `key` and `secret` are present; raise exception otherwise
|
|
26
|
+
|
|
7
27
|
## [0.3.0] - 2020-10-12
|
|
8
28
|
### Added
|
|
9
29
|
- add `trade/completed` endpoint
|
data/Gemfile.lock
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
paxful_client (
|
|
4
|
+
paxful_client (1.4.0)
|
|
5
5
|
activesupport
|
|
6
6
|
api_client_base
|
|
7
|
+
dry-validation (~> 1.0, < 2)
|
|
7
8
|
typhoeus
|
|
8
9
|
|
|
9
10
|
GEM
|
|
10
11
|
remote: https://rubygems.org/
|
|
11
12
|
specs:
|
|
12
|
-
activesupport (6.
|
|
13
|
+
activesupport (6.1.3.2)
|
|
13
14
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
14
|
-
i18n (>=
|
|
15
|
-
minitest (
|
|
16
|
-
tzinfo (~>
|
|
17
|
-
zeitwerk (~> 2.
|
|
15
|
+
i18n (>= 1.6, < 2)
|
|
16
|
+
minitest (>= 5.1)
|
|
17
|
+
tzinfo (~> 2.0)
|
|
18
|
+
zeitwerk (~> 2.3)
|
|
18
19
|
addressable (2.7.0)
|
|
19
20
|
public_suffix (>= 2.0.2, < 5.0)
|
|
20
|
-
api_client_base (1.
|
|
21
|
+
api_client_base (1.10.0)
|
|
21
22
|
activesupport (>= 3.0)
|
|
22
23
|
gem_config (>= 0.3.1)
|
|
23
24
|
virtus (>= 1.0)
|
|
@@ -28,23 +29,56 @@ GEM
|
|
|
28
29
|
coderay (1.1.3)
|
|
29
30
|
coercible (1.0.0)
|
|
30
31
|
descendants_tracker (~> 0.0.1)
|
|
31
|
-
concurrent-ruby (1.1.
|
|
32
|
+
concurrent-ruby (1.1.9)
|
|
32
33
|
crack (0.4.3)
|
|
33
34
|
safe_yaml (~> 1.0.0)
|
|
34
35
|
descendants_tracker (0.0.4)
|
|
35
36
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
36
37
|
diff-lcs (1.4.4)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
dry-configurable (0.12.1)
|
|
39
|
+
concurrent-ruby (~> 1.0)
|
|
40
|
+
dry-core (~> 0.5, >= 0.5.0)
|
|
41
|
+
dry-container (0.8.0)
|
|
42
|
+
concurrent-ruby (~> 1.0)
|
|
43
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
|
44
|
+
dry-core (0.6.0)
|
|
45
|
+
concurrent-ruby (~> 1.0)
|
|
46
|
+
dry-equalizer (0.3.0)
|
|
47
|
+
dry-inflector (0.2.0)
|
|
48
|
+
dry-initializer (3.0.4)
|
|
49
|
+
dry-logic (1.2.0)
|
|
50
|
+
concurrent-ruby (~> 1.0)
|
|
51
|
+
dry-core (~> 0.5, >= 0.5)
|
|
52
|
+
dry-schema (1.6.2)
|
|
53
|
+
concurrent-ruby (~> 1.0)
|
|
54
|
+
dry-configurable (~> 0.8, >= 0.8.3)
|
|
55
|
+
dry-core (~> 0.5, >= 0.5)
|
|
56
|
+
dry-initializer (~> 3.0)
|
|
57
|
+
dry-logic (~> 1.0)
|
|
58
|
+
dry-types (~> 1.5)
|
|
59
|
+
dry-types (1.5.1)
|
|
60
|
+
concurrent-ruby (~> 1.0)
|
|
61
|
+
dry-container (~> 0.3)
|
|
62
|
+
dry-core (~> 0.5, >= 0.5)
|
|
63
|
+
dry-inflector (~> 0.1, >= 0.1.2)
|
|
64
|
+
dry-logic (~> 1.0, >= 1.0.2)
|
|
65
|
+
dry-validation (1.6.0)
|
|
66
|
+
concurrent-ruby (~> 1.0)
|
|
67
|
+
dry-container (~> 0.7, >= 0.7.1)
|
|
68
|
+
dry-core (~> 0.4)
|
|
69
|
+
dry-equalizer (~> 0.2)
|
|
70
|
+
dry-initializer (~> 3.0)
|
|
71
|
+
dry-schema (~> 1.5, >= 1.5.2)
|
|
72
|
+
ethon (0.14.0)
|
|
73
|
+
ffi (>= 1.15.0)
|
|
74
|
+
ffi (1.15.1)
|
|
41
75
|
gem_config (0.3.2)
|
|
42
76
|
hashdiff (1.0.1)
|
|
43
|
-
i18n (1.8.
|
|
77
|
+
i18n (1.8.10)
|
|
44
78
|
concurrent-ruby (~> 1.0)
|
|
45
79
|
ice_nine (0.11.2)
|
|
46
80
|
method_source (1.0.0)
|
|
47
|
-
minitest (5.14.
|
|
81
|
+
minitest (5.14.4)
|
|
48
82
|
pry (0.13.1)
|
|
49
83
|
coderay (~> 1.1)
|
|
50
84
|
method_source (~> 1.0)
|
|
@@ -67,19 +101,18 @@ GEM
|
|
|
67
101
|
thread_safe (0.3.6)
|
|
68
102
|
typhoeus (1.4.0)
|
|
69
103
|
ethon (>= 0.9.0)
|
|
70
|
-
tzinfo (
|
|
71
|
-
|
|
104
|
+
tzinfo (2.0.4)
|
|
105
|
+
concurrent-ruby (~> 1.0)
|
|
72
106
|
vcr (3.0.3)
|
|
73
|
-
virtus (
|
|
107
|
+
virtus (2.0.0)
|
|
74
108
|
axiom-types (~> 0.1)
|
|
75
109
|
coercible (~> 1.0)
|
|
76
110
|
descendants_tracker (~> 0.0, >= 0.0.3)
|
|
77
|
-
equalizer (~> 0.0, >= 0.0.9)
|
|
78
111
|
webmock (2.3.2)
|
|
79
112
|
addressable (>= 2.3.6)
|
|
80
113
|
crack (>= 0.3.2)
|
|
81
114
|
hashdiff
|
|
82
|
-
zeitwerk (2.4.
|
|
115
|
+
zeitwerk (2.4.2)
|
|
83
116
|
|
|
84
117
|
PLATFORMS
|
|
85
118
|
ruby
|
data/README.md
CHANGED
|
@@ -22,18 +22,29 @@ Or install it yourself as:
|
|
|
22
22
|
|
|
23
23
|
```ruby
|
|
24
24
|
client = PaxfulClient.new(host: "host", key: "key", secret: "secret")
|
|
25
|
+
|
|
26
|
+
# Get balance
|
|
25
27
|
response = client.get_balance
|
|
26
28
|
wallet = response.wallet
|
|
27
|
-
|
|
28
|
-
# get the balance
|
|
29
29
|
wallet.balance
|
|
30
|
+
|
|
31
|
+
# Get completed trades (page = 1 by default)
|
|
32
|
+
response = client.get_completed_trades
|
|
33
|
+
|
|
34
|
+
# Get completed trades by page
|
|
35
|
+
response = client.get_completed_trades(page: page)
|
|
36
|
+
|
|
37
|
+
# Get response
|
|
38
|
+
order_book = response.order_book
|
|
39
|
+
order_book.trades
|
|
30
40
|
```
|
|
31
41
|
|
|
32
42
|
## Development
|
|
33
43
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
```
|
|
45
|
+
cp spec/config.yml{.sample,}
|
|
46
|
+
rspec
|
|
47
|
+
```
|
|
37
48
|
|
|
38
49
|
## Contributing
|
|
39
50
|
|
data/lib/paxful_client.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require "paxful_client/version"
|
|
2
2
|
require "api_client_base"
|
|
3
|
+
require "dry-validation"
|
|
3
4
|
|
|
4
5
|
require "json"
|
|
5
6
|
require "active_support/core_ext/hash/indifferent_access"
|
|
@@ -15,6 +16,9 @@ require "paxful_client/requests/get_completed_trades_request"
|
|
|
15
16
|
require "paxful_client/responses/base_response"
|
|
16
17
|
require "paxful_client/responses/get_balance_response"
|
|
17
18
|
require "paxful_client/responses/get_completed_trades_response"
|
|
19
|
+
require "paxful_client/schemas/base_request_schema"
|
|
20
|
+
require "paxful_client/schemas/get_balance_request_schema"
|
|
21
|
+
require "paxful_client/schemas/get_completed_trades_request_schema"
|
|
18
22
|
|
|
19
23
|
module PaxfulClient
|
|
20
24
|
include APIClientBase::Base.module
|
|
@@ -5,20 +5,22 @@ module PaxfulClient
|
|
|
5
5
|
|
|
6
6
|
attribute :key, String
|
|
7
7
|
attribute :secret, String
|
|
8
|
+
attribute :page, Integer, default: 1
|
|
8
9
|
|
|
9
10
|
private
|
|
10
11
|
|
|
11
12
|
def body
|
|
12
13
|
nonce = Time.now.to_i
|
|
13
14
|
apiseal = OpenSSL::HMAC.hexdigest(
|
|
14
|
-
"SHA256",
|
|
15
|
-
secret,
|
|
16
|
-
"apikey=#{key}&nonce=#{nonce}",
|
|
15
|
+
"SHA256",
|
|
16
|
+
secret,
|
|
17
|
+
"apikey=#{key}&nonce=#{nonce}&page=#{page}",
|
|
17
18
|
)
|
|
18
19
|
|
|
19
20
|
[
|
|
20
21
|
"apikey=#{key}",
|
|
21
22
|
"nonce=#{nonce}",
|
|
23
|
+
"page=#{page}",
|
|
22
24
|
"apiseal=#{apiseal}",
|
|
23
25
|
].join("&")
|
|
24
26
|
end
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
module PaxfulClient
|
|
2
|
-
class GetBalanceResponse
|
|
3
|
-
|
|
4
|
-
include APIClientBase::Response.module
|
|
2
|
+
class GetBalanceResponse < BaseResponse
|
|
5
3
|
|
|
6
4
|
attribute :wallet, PaxfulClient::Wallet, lazy: true, default: :default_wallet
|
|
7
5
|
attribute :body, Object, lazy: true, default: :default_body
|
|
@@ -9,6 +7,14 @@ module PaxfulClient
|
|
|
9
7
|
|
|
10
8
|
private
|
|
11
9
|
|
|
10
|
+
def default_success
|
|
11
|
+
unless parsed_body['data'].present?
|
|
12
|
+
self.error_message = 'GetBalanceResponse: data not present'
|
|
13
|
+
return false
|
|
14
|
+
end
|
|
15
|
+
raw_response.success?
|
|
16
|
+
end
|
|
17
|
+
|
|
12
18
|
def default_wallet
|
|
13
19
|
args = parsed_body["data"].each_with_object({}) do |(attr, val), hash|
|
|
14
20
|
hash[attr.underscore] = val
|
|
@@ -22,5 +22,15 @@ module PaxfulClient
|
|
|
22
22
|
order_book
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def default_success
|
|
26
|
+
code == 200 && present_parsed_body?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def present_parsed_body?
|
|
30
|
+
!parsed_body.nil? &&
|
|
31
|
+
!parsed_body["data"].nil? &&
|
|
32
|
+
!parsed_body["data"]["trades"].nil?
|
|
33
|
+
end
|
|
34
|
+
|
|
25
35
|
end
|
|
26
36
|
end
|
data/paxful_client.gemspec
CHANGED
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
spec.add_dependency "api_client_base"
|
|
29
29
|
spec.add_dependency "typhoeus"
|
|
30
30
|
spec.add_dependency "activesupport"
|
|
31
|
+
spec.add_dependency "dry-validation", "~> 1.0", "< 2"
|
|
31
32
|
|
|
32
33
|
spec.add_development_dependency "pry"
|
|
33
34
|
spec.add_development_dependency "vcr", "~> 3.0"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: paxful_client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Chavez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: api_client_base
|
|
@@ -52,6 +52,26 @@ dependencies:
|
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: dry-validation
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '1.0'
|
|
62
|
+
- - "<"
|
|
63
|
+
- !ruby/object:Gem::Version
|
|
64
|
+
version: '2'
|
|
65
|
+
type: :runtime
|
|
66
|
+
prerelease: false
|
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
68
|
+
requirements:
|
|
69
|
+
- - "~>"
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: '1.0'
|
|
72
|
+
- - "<"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '2'
|
|
55
75
|
- !ruby/object:Gem::Dependency
|
|
56
76
|
name: pry
|
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -124,6 +144,9 @@ files:
|
|
|
124
144
|
- lib/paxful_client/responses/base_response.rb
|
|
125
145
|
- lib/paxful_client/responses/get_balance_response.rb
|
|
126
146
|
- lib/paxful_client/responses/get_completed_trades_response.rb
|
|
147
|
+
- lib/paxful_client/schemas/base_request_schema.rb
|
|
148
|
+
- lib/paxful_client/schemas/get_balance_request_schema.rb
|
|
149
|
+
- lib/paxful_client/schemas/get_completed_trades_request_schema.rb
|
|
127
150
|
- lib/paxful_client/version.rb
|
|
128
151
|
- paxful_client.gemspec
|
|
129
152
|
homepage: https://github.com/MarkFChavez/paxful_client-ruby
|
|
@@ -148,8 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
148
171
|
- !ruby/object:Gem::Version
|
|
149
172
|
version: '0'
|
|
150
173
|
requirements: []
|
|
151
|
-
|
|
152
|
-
rubygems_version: 2.7.6
|
|
174
|
+
rubygems_version: 3.1.6
|
|
153
175
|
signing_key:
|
|
154
176
|
specification_version: 4
|
|
155
177
|
summary: API wrapper for Paxful
|