wegift-ruby-client 1.7.2 → 1.8.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 +5 -5
- data/.gitignore +3 -0
- data/Gemfile +2 -0
- data/README.md +2 -0
- data/Rakefile +5 -3
- data/bin/console +4 -3
- data/lib/wegift.rb +3 -2
- data/lib/wegift/client.rb +12 -12
- data/lib/wegift/models/initializable.rb +3 -1
- data/lib/wegift/models/order.rb +32 -22
- data/lib/wegift/models/product.rb +6 -4
- data/lib/wegift/models/products.rb +11 -6
- data/lib/wegift/models/response.rb +4 -3
- data/lib/wegift/version.rb +3 -1
- data/wegift-ruby-client.gemspec +7 -6
- metadata +43 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 93fcfceee73c751a093784421b2949ac0e220599fd88a9e74f7573d3ca9f9326
|
4
|
+
data.tar.gz: d9eb089ab2bbc0534d8bb08c30f3b38ea8bd6a9108316a648bfbd8ef5654c4c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 867d00650d5da67a8049bf44fd1a7dd03beddfa43a4b8b647298b6ca659a42a85c0bcc8ebaa7bf24046d4bbf399c27e07e3c1a5ca3346fbb3358a77a8afc6bb5
|
7
|
+
data.tar.gz: ff53bae7dae3bc129699d9b17f09558f20d7967320640480f740fb4b5f811d36af4dd7c0379675d965a7b938fc99178b793d8b1e2cfb529ad34bfadff39ffbbb
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'wegift'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "wegift"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start(__FILE__)
|
data/lib/wegift.rb
CHANGED
data/lib/wegift/client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'faraday'
|
3
4
|
|
4
5
|
require_relative 'models/response'
|
@@ -7,7 +8,6 @@ require_relative 'models/products'
|
|
7
8
|
require_relative 'models/order'
|
8
9
|
|
9
10
|
module Wegift
|
10
|
-
|
11
11
|
class Client
|
12
12
|
attr_accessor :api_host, :api_path, :api_key, :api_secret, :connection
|
13
13
|
|
@@ -19,18 +19,20 @@ module Wegift
|
|
19
19
|
@api_key = options[:api_key].to_s
|
20
20
|
@api_secret = options[:api_secret]
|
21
21
|
|
22
|
-
@connection = Faraday.new(:
|
22
|
+
@connection = Faraday.new(url: @api_host) do |c|
|
23
23
|
c.basic_auth(@api_key, @api_secret)
|
24
24
|
c.adapter Faraday.default_adapter
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
unless options[:proxy].nil?
|
26
|
+
c.options[:proxy] = {
|
27
|
+
uri: URI(options[:proxy])
|
28
|
+
}
|
29
|
+
end
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
33
|
def request(method, path, payload = {})
|
32
34
|
@connection.send(method) do |req|
|
33
|
-
req.url [@api_path, path].join
|
35
|
+
req.url [@api_path, path].join
|
34
36
|
req.headers['Content-Type'] = 'application/json'
|
35
37
|
req.body = payload.to_json if method.to_sym.eql?(:post)
|
36
38
|
req.params = payload if method.to_sym.eql?(:get)
|
@@ -42,13 +44,13 @@ module Wegift
|
|
42
44
|
|
43
45
|
# global methods
|
44
46
|
|
45
|
-
def products
|
46
|
-
products = Wegift::Products.new
|
47
|
+
def products
|
48
|
+
products = Wegift::Products.new
|
47
49
|
products.get(self)
|
48
50
|
end
|
49
51
|
|
50
52
|
def product(id = nil)
|
51
|
-
products = Wegift::Product.new(:
|
53
|
+
products = Wegift::Product.new(product_code: id)
|
52
54
|
products.get(self)
|
53
55
|
end
|
54
56
|
|
@@ -56,7 +58,5 @@ module Wegift
|
|
56
58
|
order = Wegift::Order.new(options)
|
57
59
|
order.post(self)
|
58
60
|
end
|
59
|
-
|
60
61
|
end
|
61
|
-
|
62
62
|
end
|
data/lib/wegift/models/order.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
class Wegift::Order < Wegift::Response
|
3
4
|
PATH = '/order-digital-card'
|
4
5
|
|
5
|
-
DELIVERY_METHODS = {:
|
6
|
-
DELIVERY_FORMATS = {:
|
6
|
+
DELIVERY_METHODS = { direct: 'direct', email: 'email' }.freeze
|
7
|
+
DELIVERY_FORMATS = { code: 'raw', url: 'url-instant' }.freeze
|
7
8
|
|
8
9
|
# request/payload
|
9
|
-
attr_accessor :product_code, :currency_code, :amount, :delivery_method,
|
10
|
-
:notification_email, :delivery_email,
|
10
|
+
attr_accessor :product_code, :currency_code, :amount, :delivery_method,
|
11
|
+
:delivery_format, :notification_email, :delivery_email,
|
12
|
+
:external_ref
|
11
13
|
|
12
14
|
# response/success
|
13
|
-
attr_accessor :code, :expiry_date, :pin, :order_id, :cvc2, :delivery_url
|
15
|
+
attr_accessor :code, :expiry_date, :pin, :order_id, :cvc2, :delivery_url,
|
16
|
+
:barcode_format, :barcode_string
|
14
17
|
|
15
18
|
def initialize(params = {})
|
16
19
|
super(params)
|
@@ -21,22 +24,22 @@ class Wegift::Order < Wegift::Response
|
|
21
24
|
|
22
25
|
def payload
|
23
26
|
{
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
product_code: @product_code,
|
28
|
+
currency_code: @currency_code,
|
29
|
+
amount: @amount,
|
30
|
+
delivery_method: @delivery_method,
|
31
|
+
delivery_format: @delivery_format,
|
32
|
+
notification_email: @notification_email,
|
33
|
+
delivery_email: @delivery_email,
|
34
|
+
external_ref: @external_ref
|
32
35
|
}
|
33
36
|
end
|
34
37
|
|
35
38
|
# Order Digital Card
|
36
39
|
# POST /api/b2b-sync/v1/order-digital-card
|
37
40
|
def post(ctx)
|
38
|
-
response = ctx.request(:post, PATH,
|
39
|
-
|
41
|
+
response = ctx.request(:post, PATH, payload)
|
42
|
+
parse(response)
|
40
43
|
end
|
41
44
|
|
42
45
|
def parse(response)
|
@@ -44,7 +47,7 @@ class Wegift::Order < Wegift::Response
|
|
44
47
|
|
45
48
|
# nested status/error object
|
46
49
|
# assuming root "status" is always "SUCCESS" if "e_code" is set
|
47
|
-
#{
|
50
|
+
# {
|
48
51
|
# "e_code": {
|
49
52
|
# "error_code": "EC001",
|
50
53
|
# "error_string": "Error retrieving E-Code from data processor",
|
@@ -55,14 +58,20 @@ class Wegift::Order < Wegift::Response
|
|
55
58
|
# "error_string": null,
|
56
59
|
# "order_id": 18,
|
57
60
|
# "status": "SUCCESS"
|
58
|
-
#}
|
61
|
+
# }
|
59
62
|
|
60
63
|
# override root "status" if set
|
61
64
|
if @payload['e_code'] && @payload['e_code']['status'].eql?(STATUS[:error])
|
62
65
|
@status = @payload['e_code']['status']
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
+
unless @payload['e_code']['error_code'].blank?
|
67
|
+
@error_code = @payload['e_code']['error_code']
|
68
|
+
end
|
69
|
+
unless @payload['e_code']['error_string'].blank?
|
70
|
+
@error_string = @payload['e_code']['error_string']
|
71
|
+
end
|
72
|
+
unless @payload['e_code']['error_details'].blank?
|
73
|
+
@error_details = @payload['e_code']['error_details']
|
74
|
+
end
|
66
75
|
end
|
67
76
|
|
68
77
|
# set valid data
|
@@ -72,11 +81,12 @@ class Wegift::Order < Wegift::Response
|
|
72
81
|
@pin = @payload['e_code']['pin']
|
73
82
|
@cvc2 = @payload['e_code']['cvc2']
|
74
83
|
@delivery_url = @payload['e_code']['delivery_url']
|
84
|
+
@barcode_string = @payload['e_code']['barcode_string']
|
85
|
+
@barcode_format = @payload['e_code']['barcode_format']
|
75
86
|
end
|
76
87
|
|
77
88
|
@order_id = @payload['order_id']
|
78
89
|
|
79
90
|
self
|
80
91
|
end
|
81
|
-
|
82
92
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
class Wegift::Product < Wegift::Response
|
3
4
|
PATH = '/products'
|
4
5
|
|
5
6
|
# request/payload
|
@@ -13,7 +14,8 @@ class Wegift::Product < Wegift::Response
|
|
13
14
|
:terms_and_conditions_html,
|
14
15
|
:terms_and_conditions_url,
|
15
16
|
:terms_and_conditions_pdf_url,
|
16
|
-
:e_code_usage_type
|
17
|
+
:e_code_usage_type,
|
18
|
+
:barcode_format
|
17
19
|
|
18
20
|
def initialize(params = {})
|
19
21
|
super
|
@@ -27,12 +29,12 @@ class Wegift::Product < Wegift::Response
|
|
27
29
|
# GET /api/b2b-sync/v1/products/ID
|
28
30
|
def get(ctx)
|
29
31
|
response = ctx.request(:get, path)
|
30
|
-
|
32
|
+
parse(response)
|
31
33
|
end
|
32
34
|
|
33
35
|
def parse(response)
|
34
36
|
super(response)
|
37
|
+
|
35
38
|
Wegift::Product.new(@payload)
|
36
39
|
end
|
37
|
-
|
38
40
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
class Wegift::Products < Wegift::Response
|
3
4
|
PATH = '/products'
|
4
5
|
|
5
6
|
attr_accessor :all
|
@@ -8,16 +9,21 @@ class Wegift::Products < Wegift::Response
|
|
8
9
|
# GET /api/b2b-sync/v1/products/
|
9
10
|
def get(ctx)
|
10
11
|
response = ctx.request(:get, PATH)
|
11
|
-
|
12
|
+
parse(response)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Find all products by fieldname.
|
16
|
+
def find(name, value)
|
17
|
+
Wegift::Products.new(all: all.select! { |p| p.send(name).eql?(value) })
|
12
18
|
end
|
13
19
|
|
14
20
|
def parse(response)
|
15
21
|
super(response)
|
16
22
|
|
17
|
-
if
|
18
|
-
# TODO separate?
|
23
|
+
if is_successful?
|
24
|
+
# TODO: separate?
|
19
25
|
if @payload['products']
|
20
|
-
@all = @payload['products'].map{|p| Wegift::Product.new(p)}
|
26
|
+
@all = @payload['products'].map { |p| Wegift::Product.new(p) }
|
21
27
|
end
|
22
28
|
else
|
23
29
|
@all = []
|
@@ -25,5 +31,4 @@ class Wegift::Products < Wegift::Response
|
|
25
31
|
|
26
32
|
self
|
27
33
|
end
|
28
|
-
|
29
34
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'initializable'
|
2
4
|
|
3
5
|
class Wegift::Response
|
4
6
|
include Initializable
|
5
7
|
|
6
|
-
STATUS = {:
|
8
|
+
STATUS = { success: 'SUCCESS', error: 'ERROR' }.freeze
|
7
9
|
|
8
10
|
# Field Name Contents
|
9
11
|
#
|
@@ -16,7 +18,7 @@ class Wegift::Response
|
|
16
18
|
attr_accessor :payload, :status, :error_code, :error_string, :error_details
|
17
19
|
|
18
20
|
def is_successful?
|
19
|
-
@status
|
21
|
+
@status&.eql?(STATUS[:success])
|
20
22
|
end
|
21
23
|
|
22
24
|
def parse(response = {})
|
@@ -37,5 +39,4 @@ class Wegift::Response
|
|
37
39
|
@error_details = response.reason_phrase
|
38
40
|
end
|
39
41
|
end
|
40
|
-
|
41
42
|
end
|
data/lib/wegift/version.rb
CHANGED
data/wegift-ruby-client.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'wegift/version'
|
5
6
|
|
@@ -9,11 +10,10 @@ Gem::Specification.new do |spec|
|
|
9
10
|
spec.authors = ['Klaas Endrikat']
|
10
11
|
spec.email = ['klaas.endrikat@googlemail.com']
|
11
12
|
|
12
|
-
spec.summary =
|
13
|
+
spec.summary = 'A simple Ruby client for the WEGIFT API'
|
13
14
|
spec.homepage = 'https://github.com/kendrikat/wegift-ruby-client'
|
14
15
|
spec.license = 'MIT'
|
15
16
|
|
16
|
-
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ['lib']
|
@@ -24,9 +24,10 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency 'json', '~> 1.7', '>= 1.7.7'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'bundler', '~> 1.14'
|
27
|
+
spec.add_development_dependency 'byebug', '~> 11'
|
28
|
+
spec.add_development_dependency 'dotenv', '~> 2.2', '>= 2.2.0'
|
27
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
28
30
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
31
|
spec.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.3'
|
30
|
-
spec.add_development_dependency 'webmock', '~>
|
31
|
-
spec.add_development_dependency 'dotenv', '~> 2.2', '>= 2.2.0'
|
32
|
+
spec.add_development_dependency 'webmock', '~> 3.5', '>= 3.5.0'
|
32
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wegift-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Klaas Endrikat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -64,6 +64,40 @@ dependencies:
|
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '1.14'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: byebug
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '11'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '11'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: dotenv
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 2.2.0
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '2.2'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 2.2.0
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '2.2'
|
67
101
|
- !ruby/object:Gem::Dependency
|
68
102
|
name: rake
|
69
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,42 +150,22 @@ dependencies:
|
|
116
150
|
name: webmock
|
117
151
|
requirement: !ruby/object:Gem::Requirement
|
118
152
|
requirements:
|
119
|
-
- - "~>"
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: '2.3'
|
122
153
|
- - ">="
|
123
154
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
-
type: :development
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
155
|
+
version: 3.5.0
|
129
156
|
- - "~>"
|
130
157
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
132
|
-
- - ">="
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: 2.3.2
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
name: dotenv
|
137
|
-
requirement: !ruby/object:Gem::Requirement
|
138
|
-
requirements:
|
139
|
-
- - "~>"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '2.2'
|
142
|
-
- - ">="
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: 2.2.0
|
158
|
+
version: '3.5'
|
145
159
|
type: :development
|
146
160
|
prerelease: false
|
147
161
|
version_requirements: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
|
-
- - "~>"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: '2.2'
|
152
163
|
- - ">="
|
153
164
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
165
|
+
version: 3.5.0
|
166
|
+
- - "~>"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '3.5'
|
155
169
|
description:
|
156
170
|
email:
|
157
171
|
- klaas.endrikat@googlemail.com
|
@@ -199,8 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
213
|
- !ruby/object:Gem::Version
|
200
214
|
version: '0'
|
201
215
|
requirements: []
|
202
|
-
|
203
|
-
rubygems_version: 2.5.2
|
216
|
+
rubygems_version: 3.0.6
|
204
217
|
signing_key:
|
205
218
|
specification_version: 4
|
206
219
|
summary: A simple Ruby client for the WEGIFT API
|