paymium 0.0.1
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/README.md +18 -0
- data/bin/paymium +8 -0
- data/lib/paymium.rb +11 -0
- data/lib/paymium/client.rb +76 -0
- data/lib/paymium/version.rb +3 -0
- metadata +138 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5706b4c947cafd84f95f3a346b094af2422c0d59
|
4
|
+
data.tar.gz: 36fc8e2eb461d4f75cd7410a4949a08a3d4c636c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 073d60640008402cdd82691b3958274f98b9cf8132a9cef45cc82c6763d03f4193d564238451732826098e3a12ab4710c56a6aea138544a424a45a3cb09b7d4c
|
7
|
+
data.tar.gz: 63e1e16c67d0f08e1597f775e8b4cb24ab94148ccb6ec79adf82583c3f0511a33dc6b64a502f9159159a6a85263a982d6ed04cdcb07efca55ef3d88c73e6e6b8
|
data/README.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Paymium ruby client [](http://travis-ci.org/Paymium/paymium_gem) [](https://coveralls.io/r/Paymium/paymium_gem?branch=master) [](http://badge.fury.io/rb/paymium_gem)
|
2
|
+
|
3
|
+
Simple ruby wrapper for the [Paymium API](https://github.com/Paymium/api-documentation).
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
paymium = Paymium::Api::Client.new({
|
9
|
+
host: 'https://paymium.com/api/v1',
|
10
|
+
key: '<api token>',
|
11
|
+
secret: '<api secret>'
|
12
|
+
})
|
13
|
+
|
14
|
+
paymium.get('/data/EUR/ticker')
|
15
|
+
|
16
|
+
paymium.get('/user')
|
17
|
+
````
|
18
|
+
|
data/bin/paymium
ADDED
data/lib/paymium.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'openssl'
|
3
|
+
require 'base64'
|
4
|
+
|
5
|
+
module Paymium
|
6
|
+
class Client
|
7
|
+
|
8
|
+
def initialize config = {}
|
9
|
+
@config = HashWithIndifferentAccess.new config
|
10
|
+
@host = URI.parse @config.delete(:host)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get path, params = {}, &block
|
14
|
+
uri = uri_from_path(path)
|
15
|
+
uri.query = URI.encode_www_form params unless params.empty?
|
16
|
+
request Net::HTTP::Get.new(uri), &block
|
17
|
+
end
|
18
|
+
|
19
|
+
def post path, params = {}, &block
|
20
|
+
req = Net::HTTP::Post.new(uri_from_path(path))
|
21
|
+
req.body = Oj.dump(params)
|
22
|
+
request req, &block
|
23
|
+
end
|
24
|
+
|
25
|
+
def delete path, params = {}, &block
|
26
|
+
uri = uri_from_path(path)
|
27
|
+
uri.query = URI.encode_www_form params unless params.empty?
|
28
|
+
request Net::HTTP::Delete.new(uri), &block
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def set_header_fields req
|
34
|
+
key = @config[:key]
|
35
|
+
nonce = (Time.now.to_f * 10**6).to_i
|
36
|
+
data = [nonce, req.uri.to_s, req.body].compact.join
|
37
|
+
sig = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @config[:secret], data).strip
|
38
|
+
req.add_field "Api-Key", key
|
39
|
+
req.add_field "Api-Nonce", nonce
|
40
|
+
req.add_field "Api-Signature", sig
|
41
|
+
req
|
42
|
+
end
|
43
|
+
|
44
|
+
def uri_from_path path
|
45
|
+
uri = @host.dup
|
46
|
+
uri.path = "#{@host.path}/#{path}".gsub('//','/')
|
47
|
+
uri
|
48
|
+
end
|
49
|
+
|
50
|
+
def request req, &block
|
51
|
+
req.content_type = 'application/json'
|
52
|
+
set_header_fields(req) if @config[:key].present? and @config[:secret].present?
|
53
|
+
Net::HTTP.start(@host.host, @host.port, :use_ssl => @host.scheme == 'https') do |http|
|
54
|
+
resp = http.request req
|
55
|
+
handle_response resp, &block
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
#todo use Oj to parse response to handle big decimal
|
60
|
+
def handle_response resp, &block
|
61
|
+
if resp.class < Net::HTTPSuccess
|
62
|
+
resp = Oj.load(resp.body)
|
63
|
+
block.nil? ? resp : block.call(resp)
|
64
|
+
else
|
65
|
+
if resp.content_type == 'application/json'
|
66
|
+
raise Error, [resp.message, Oj.load(resp.body)['errors']]
|
67
|
+
else
|
68
|
+
raise Error, resp.message
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class Error < RuntimeError; end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
metadata
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: paymium
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nicolas PAPON
|
8
|
+
- David FRANCOIS
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-10-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: oj
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '2'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '2'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '3'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: simplecov
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.10.0
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.10.0
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: yard
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: coveralls
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ~>
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0.7'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ~>
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0.7'
|
98
|
+
description: The client handles authentication and enables users to directly issue
|
99
|
+
requests to the Paymium API
|
100
|
+
email:
|
101
|
+
- nicolas.papon@paymium.com
|
102
|
+
- david.francois@paymium.com
|
103
|
+
executables:
|
104
|
+
- paymium
|
105
|
+
extensions: []
|
106
|
+
extra_rdoc_files: []
|
107
|
+
files:
|
108
|
+
- README.md
|
109
|
+
- bin/paymium
|
110
|
+
- lib/paymium.rb
|
111
|
+
- lib/paymium/client.rb
|
112
|
+
- lib/paymium/version.rb
|
113
|
+
homepage: https://paymium.com
|
114
|
+
licenses:
|
115
|
+
- MIT
|
116
|
+
metadata: {}
|
117
|
+
post_install_message:
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
requirements: []
|
132
|
+
rubyforge_project:
|
133
|
+
rubygems_version: 2.4.2
|
134
|
+
signing_key:
|
135
|
+
specification_version: 4
|
136
|
+
summary: Paymium API client
|
137
|
+
test_files: []
|
138
|
+
has_rdoc:
|