fortenet 3.0.2 → 3.0.3
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/README.md +17 -14
- data/lib/fortenet.rb +2 -1
- data/lib/fortenet/client.rb +12 -16
- data/lib/fortenet/options.rb +35 -0
- data/lib/fortenet/request.rb +19 -33
- data/lib/fortenet/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ef7780ec10bbeaeb46a6972034216bf7f891462
|
4
|
+
data.tar.gz: e5a55d9e20235b79aedc8635732a01511b15441f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 023e76cb886af4dbd45432d8fadea074314acb3cf337ed1d38921ceda17788f172e69c1bb3ea35b742af5551ea2968fc49eb9395af47b8678613cdf4cfe0bc65
|
7
|
+
data.tar.gz: fdf169c1efbab195c7a79236f0061428cfaf213fd290be10cf518e21f6e3bf193d04f6e142448cd13415e42a448dfe885bf4ed9873bcc4492a7d090617d14935
|
data/README.md
CHANGED
@@ -2,19 +2,18 @@
|
|
2
2
|
|
3
3
|
Simple Ruby wrapper for Forte Payments REST API
|
4
4
|
|
5
|
-
Learn about the Forte Payments REST API
|
5
|
+
Learn about the [Forte Payments REST API](https://www.forte.net/devdocs/api_resources/forte_api_v3.htm)
|
6
6
|
|
7
7
|
### Installation
|
8
|
-
Add this line to your application's Gemfile:
|
9
8
|
```ruby
|
10
9
|
# in your Gemfile
|
11
|
-
gem 'fortenet'
|
10
|
+
gem 'fortenet'
|
12
11
|
|
13
12
|
# then...
|
14
13
|
bundle install
|
15
14
|
```
|
16
15
|
|
17
|
-
###
|
16
|
+
### Setup
|
18
17
|
Create an initializer
|
19
18
|
```ruby
|
20
19
|
# config/initializers/fortenet.rb
|
@@ -23,6 +22,7 @@ Create an initializer
|
|
23
22
|
config.endpoint = ENV['FORTE_ENDPOINT']
|
24
23
|
config.api_login_id = ENV['FORTE_API_LOGIN_ID']
|
25
24
|
config.secure_transaction_key = ENV['FORTE_SECURE_TRANSACTION_KEY']
|
25
|
+
|
26
26
|
# use the ID values without the prefixes ie. 123456 and not org_123456
|
27
27
|
config.account_id = ENV['FORTE_ACCOUNT_ID'] # this is also called organization ID
|
28
28
|
config.location_id = ENV['FORTE_LOCATION_ID']
|
@@ -34,12 +34,23 @@ Create an initializer
|
|
34
34
|
# optionally configure proxy
|
35
35
|
config.proxy_host = ENV['FORTE_PROXY_HOST']
|
36
36
|
config.proxy_port = ENV['FORTE_PROXY_PORT']
|
37
|
-
config.proxy_user =ENV['FORTE_PROXY_USER']
|
37
|
+
config.proxy_user = ENV['FORTE_PROXY_USER']
|
38
38
|
config.proxy_password = ENV['FORTE_PROXY_PASSWORD']
|
39
39
|
end
|
40
40
|
```
|
41
41
|
|
42
|
-
|
42
|
+
### Usage
|
43
|
+
|
44
|
+
`Fortenet::Client` implements `find`, `create`, `update`, and `destroy` for interacting with Forte.
|
45
|
+
|
46
|
+
The first arg for all commands is the relative path without any leading backslashes. The second arg for find/create/update is the request data and may either be a hash or a json string.
|
47
|
+
|
48
|
+
For example `Fortenet::Client.new.create('transactions, data)` will ensure data is a json string and post to forteat "/organizations/org_#{account_id}/locations/loc_#{location_id}/transactions" with headers setup using initializer config settings for authentication.
|
49
|
+
|
50
|
+
Forte client calls will return an [`HTTParty::Response`](http://www.rubydoc.info/github/jnunemaker/httparty/HTTParty/Response) which you can interact with. You can also call `parsed_response` on the actual `Fortenet::Client` instance to get back json parsed hash with symbolized keys.
|
51
|
+
|
52
|
+
#### Examples
|
53
|
+
|
43
54
|
```ruby
|
44
55
|
client = Fortenet::Client.new
|
45
56
|
|
@@ -67,11 +78,3 @@ client.create('transactions', request)
|
|
67
78
|
# sample PUT request
|
68
79
|
client.update('transactions', request)
|
69
80
|
```
|
70
|
-
|
71
|
-
## Contributing
|
72
|
-
|
73
|
-
1. Fork it ( https://github.com/[my-github-username]/fortenet/fork )
|
74
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
75
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
76
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
77
|
-
5. Create a new Pull Request
|
data/lib/fortenet.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'httparty'
|
2
|
+
require 'json'
|
2
3
|
require 'fortenet/version'
|
3
4
|
|
4
5
|
module Fortenet
|
@@ -29,9 +30,9 @@ module Fortenet
|
|
29
30
|
|
30
31
|
end
|
31
32
|
|
33
|
+
require 'fortenet/options'
|
32
34
|
require 'fortenet/request'
|
33
35
|
require 'fortenet/client'
|
34
36
|
|
35
|
-
|
36
37
|
# default starting point
|
37
38
|
Fortenet.debug_output = $stdout
|
data/lib/fortenet/client.rb
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
module Fortenet
|
2
2
|
class Client < Fortenet::Request
|
3
|
-
|
4
|
-
|
5
|
-
@location_id = location_id
|
6
|
-
@account_id = account_id
|
7
|
-
end
|
8
|
-
|
9
|
-
def base_path
|
10
|
-
"/organizations/org_#{@account_id}/locations/loc_#{@location_id}/"
|
3
|
+
def initialize(account_id = Fortenet.account_id, location_id = Fortenet.location_id)
|
4
|
+
self.base_path = "/organizations/org_#{account_id}/locations/loc_#{location_id}/"
|
11
5
|
end
|
12
6
|
|
13
7
|
def find(relative_path, data = nil)
|
14
|
-
|
8
|
+
get(base_path + relative_path, query: data)
|
15
9
|
end
|
16
10
|
|
17
11
|
def create(relative_path, data = nil)
|
18
|
-
|
12
|
+
post(base_path + relative_path, body: data_to_json(data))
|
19
13
|
end
|
20
14
|
|
21
15
|
def update(relative_path, data = nil)
|
22
|
-
|
16
|
+
put(base_path + relative_path, body: data_to_json(data))
|
23
17
|
end
|
24
18
|
|
25
19
|
def destroy(relative_path)
|
26
|
-
|
20
|
+
delete(base_path + relative_path)
|
27
21
|
end
|
28
22
|
|
29
23
|
private
|
30
24
|
|
31
|
-
|
32
|
-
|
33
|
-
|
25
|
+
attr_accessor :base_path
|
26
|
+
|
27
|
+
def data_to_json(data)
|
28
|
+
data.is_a?(Hash) ? data.to_json : data
|
29
|
+
end
|
34
30
|
|
35
31
|
end
|
36
|
-
end
|
32
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Fortenet
|
2
|
+
class Options
|
3
|
+
def initialize(options)
|
4
|
+
self.options = options
|
5
|
+
end
|
6
|
+
|
7
|
+
def call
|
8
|
+
{
|
9
|
+
format: :plan,
|
10
|
+
headers: header_settings
|
11
|
+
}.merge(proxy_settings).merge(options)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
attr_accessor :options
|
17
|
+
|
18
|
+
def proxy_settings
|
19
|
+
{}.tap do |options|
|
20
|
+
options[:http_proxyaddr] = Fortenet.proxy_host if Fortenet.proxy_host.present?
|
21
|
+
options[:http_proxyport] = Fortenet.proxy_port if Fortenet.proxy_port.present?
|
22
|
+
options[:http_proxyuser] = Fortenet.proxy_user if Fortenet.proxy_user.present?
|
23
|
+
options[:http_proxypass] = Fortenet.proxy_password if Fortenet.proxy_user.present?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def header_settings
|
28
|
+
{
|
29
|
+
'X-Forte-Auth-Organization-Id' => "org_#{Fortenet.account_id}",
|
30
|
+
'Content-Type' => 'application/json',
|
31
|
+
'Authorization' => "Basic #{Base64.strict_encode64("#{Fortenet.api_login_id}:#{Fortenet.secure_transaction_key}")}"
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/fortenet/request.rb
CHANGED
@@ -1,56 +1,42 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
|
4
1
|
module Fortenet
|
5
2
|
class Request
|
6
3
|
include HTTParty
|
4
|
+
|
7
5
|
format :json
|
8
6
|
headers 'Accept' => 'application/json'
|
9
7
|
|
10
|
-
|
11
|
-
set_auth(options)
|
12
|
-
@response = self.class.get(Fortenet.endpoint + path, options)
|
13
|
-
end
|
8
|
+
attr_reader :response
|
14
9
|
|
15
|
-
def
|
16
|
-
set_auth(options)
|
17
|
-
@response = self.class.post(Fortenet.endpoint + path, options)
|
10
|
+
def get(path, **options)
|
11
|
+
self.response = self.class.get(Fortenet.endpoint + path, set_auth(options))
|
18
12
|
end
|
19
13
|
|
20
|
-
def
|
21
|
-
set_auth(options)
|
22
|
-
@response = self.class.put(Fortenet.endpoint + path, options)
|
14
|
+
def post(path, **options)
|
15
|
+
self.response = self.class.post(Fortenet.endpoint + path, set_auth(options))
|
23
16
|
end
|
24
17
|
|
25
|
-
def
|
26
|
-
set_auth(options)
|
27
|
-
@response = self.class.delete(Fortenet.endpoint + path, options)
|
18
|
+
def put(path, **options)
|
19
|
+
self.response = self.class.put(Fortenet.endpoint + path, set_auth(options))
|
28
20
|
end
|
29
21
|
|
30
|
-
def
|
31
|
-
|
22
|
+
def delete(path, **options)
|
23
|
+
self.response = self.class.delete(Fortenet.endpoint + path, set_auth(options))
|
32
24
|
end
|
33
25
|
|
34
26
|
def parsed_response
|
35
|
-
|
27
|
+
return if response.nil?
|
28
|
+
|
29
|
+
JSON.parse response.body, symbolize_names: true
|
36
30
|
end
|
37
31
|
|
38
32
|
private
|
39
33
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
options[:headers]["Content-Type"] = "application/json"
|
46
|
-
options[:headers]['Authorization'] = "Basic #{client_id_and_secret}"
|
47
|
-
|
48
|
-
options[:http_proxyaddr] = Fortenet.proxy_host if Fortenet.proxy_host.present?
|
49
|
-
options[:http_proxyport] = Fortenet.proxy_port if Fortenet.proxy_port.present?
|
50
|
-
options[:http_proxyuser] = Fortenet.proxy_user if Fortenet.proxy_user.present?
|
51
|
-
options[:http_proxypass] = Fortenet.proxy_password if Fortenet.proxy_user.present?
|
52
|
-
end
|
34
|
+
attr_writer :response
|
35
|
+
|
36
|
+
def set_auth(options)
|
37
|
+
Fortenet::Options.new(options).call
|
38
|
+
end
|
53
39
|
|
54
40
|
end
|
55
41
|
|
56
|
-
end
|
42
|
+
end
|
data/lib/fortenet/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fortenet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iwo Dziechciarow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- fortenet.gemspec
|
68
68
|
- lib/fortenet.rb
|
69
69
|
- lib/fortenet/client.rb
|
70
|
+
- lib/fortenet/options.rb
|
70
71
|
- lib/fortenet/request.rb
|
71
72
|
- lib/fortenet/version.rb
|
72
73
|
homepage: https://github.com/ArcadiaPower/fortenet
|