tikkie-api 0.2.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +20 -16
- data/.travis.yml +5 -5
- data/Gemfile +3 -2
- data/Gemfile.lock +23 -24
- data/LICENSE.txt +1 -1
- data/README.md +198 -69
- data/lib/tikkie/api.rb +52 -25
- data/lib/tikkie/api/amount.rb +35 -0
- data/lib/tikkie/api/client.rb +16 -8
- data/lib/tikkie/api/clients/base.rb +16 -0
- data/lib/tikkie/api/clients/payment_requests.rb +25 -0
- data/lib/tikkie/api/clients/payment_requests_subscription.rb +20 -0
- data/lib/tikkie/api/clients/payments.rb +20 -0
- data/lib/tikkie/api/clients/refunds.rb +20 -0
- data/lib/tikkie/api/clients/sandbox_apps.rb +15 -0
- data/lib/tikkie/api/configuration.rb +8 -47
- data/lib/tikkie/api/exception.rb +28 -8
- data/lib/tikkie/api/request.rb +51 -27
- data/lib/tikkie/api/resources/base.rb +66 -0
- data/lib/tikkie/api/{responses → resources}/error.rb +11 -9
- data/lib/tikkie/api/resources/list.rb +52 -0
- data/lib/tikkie/api/resources/payment.rb +68 -0
- data/lib/tikkie/api/resources/payment_request.rb +97 -0
- data/lib/tikkie/api/resources/payment_requests.rb +40 -0
- data/lib/tikkie/api/resources/payment_requests_subscription.rb +24 -0
- data/lib/tikkie/api/resources/payments.rb +48 -0
- data/lib/tikkie/api/resources/refund.rb +71 -0
- data/lib/tikkie/api/resources/sandbox_app.rb +20 -0
- data/lib/tikkie/api/response.rb +64 -0
- data/lib/tikkie/api/v1/access_token.rb +21 -0
- data/lib/tikkie/api/v1/authentication.rb +67 -0
- data/lib/tikkie/api/v1/client.rb +26 -0
- data/lib/tikkie/api/v1/configuration.rb +64 -0
- data/lib/tikkie/api/v1/exception.rb +24 -0
- data/lib/tikkie/api/v1/request.rb +59 -0
- data/lib/tikkie/api/v1/requests/payment_requests.rb +59 -0
- data/lib/tikkie/api/v1/requests/platforms.rb +34 -0
- data/lib/tikkie/api/v1/requests/users.rb +33 -0
- data/lib/tikkie/api/v1/responses/bank_account.rb +24 -0
- data/lib/tikkie/api/v1/responses/base.rb +69 -0
- data/lib/tikkie/api/v1/responses/error.rb +36 -0
- data/lib/tikkie/api/v1/responses/pagination.rb +22 -0
- data/lib/tikkie/api/v1/responses/payment.rb +50 -0
- data/lib/tikkie/api/v1/responses/payment_request.rb +68 -0
- data/lib/tikkie/api/v1/responses/payment_request_created.rb +24 -0
- data/lib/tikkie/api/v1/responses/payment_requests.rb +44 -0
- data/lib/tikkie/api/v1/responses/platform.rb +46 -0
- data/lib/tikkie/api/v1/responses/platforms.rb +34 -0
- data/lib/tikkie/api/v1/responses/user.rb +43 -0
- data/lib/tikkie/api/v1/responses/users.rb +38 -0
- data/lib/tikkie/api/v1/types/payment_request_status.rb +17 -0
- data/lib/tikkie/api/v1/types/payment_status.rb +16 -0
- data/lib/tikkie/api/v1/types/platform_status.rb +14 -0
- data/lib/tikkie/api/v1/types/platform_usage.rb +14 -0
- data/lib/tikkie/api/v1/types/user_status.rb +14 -0
- data/lib/tikkie/api/version.rb +1 -1
- data/lib/tikkie/notification.rb +23 -0
- data/lib/tikkie/notifications/bundle_notification.rb +28 -0
- data/lib/tikkie/notifications/payment_notification.rb +32 -0
- data/lib/tikkie/notifications/refund_notification.rb +36 -0
- data/tikkie-api.gemspec +3 -2
- metadata +69 -43
- data/lib/tikkie/api/access_token.rb +0 -19
- data/lib/tikkie/api/authentication.rb +0 -65
- data/lib/tikkie/api/requests/payment_requests.rb +0 -57
- data/lib/tikkie/api/requests/platforms.rb +0 -32
- data/lib/tikkie/api/requests/users.rb +0 -31
- data/lib/tikkie/api/responses/bank_account.rb +0 -22
- data/lib/tikkie/api/responses/base.rb +0 -67
- data/lib/tikkie/api/responses/pagination.rb +0 -20
- data/lib/tikkie/api/responses/payment.rb +0 -48
- data/lib/tikkie/api/responses/payment_request.rb +0 -66
- data/lib/tikkie/api/responses/payment_request_created.rb +0 -22
- data/lib/tikkie/api/responses/payment_requests.rb +0 -42
- data/lib/tikkie/api/responses/platform.rb +0 -44
- data/lib/tikkie/api/responses/platforms.rb +0 -32
- data/lib/tikkie/api/responses/user.rb +0 -41
- data/lib/tikkie/api/responses/users.rb +0 -36
- data/lib/tikkie/api/types/payment_request_status.rb +0 -15
- data/lib/tikkie/api/types/payment_status.rb +0 -14
- data/lib/tikkie/api/types/platform_status.rb +0 -12
- data/lib/tikkie/api/types/platform_usage.rb +0 -12
- data/lib/tikkie/api/types/user_status.rb +0 -12
data/lib/tikkie/api.rb
CHANGED
@@ -1,32 +1,59 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "tikkie/api/
|
4
|
-
|
3
|
+
require "tikkie/api/version"
|
4
|
+
|
5
|
+
require "tikkie/api/amount"
|
5
6
|
require "tikkie/api/client"
|
6
7
|
require "tikkie/api/configuration"
|
7
8
|
require "tikkie/api/exception"
|
8
9
|
require "tikkie/api/request"
|
9
|
-
require "tikkie/api/
|
10
|
+
require "tikkie/api/response"
|
11
|
+
|
12
|
+
require "tikkie/api/clients/base"
|
13
|
+
require "tikkie/api/clients/payment_requests"
|
14
|
+
require "tikkie/api/clients/payment_requests_subscription"
|
15
|
+
require "tikkie/api/clients/payments"
|
16
|
+
require "tikkie/api/clients/refunds"
|
17
|
+
require "tikkie/api/clients/sandbox_apps"
|
18
|
+
|
19
|
+
require "tikkie/api/resources/base"
|
20
|
+
require "tikkie/api/resources/error"
|
21
|
+
require "tikkie/api/resources/list"
|
22
|
+
require "tikkie/api/resources/payment_request"
|
23
|
+
require "tikkie/api/resources/payment_requests"
|
24
|
+
require "tikkie/api/resources/payment_requests_subscription"
|
25
|
+
require "tikkie/api/resources/payment"
|
26
|
+
require "tikkie/api/resources/payments"
|
27
|
+
require "tikkie/api/resources/refund"
|
28
|
+
require "tikkie/api/resources/sandbox_app"
|
29
|
+
|
30
|
+
# Below the deprecated Tikkie v1 API code which will be removed after 01-01-2021.
|
31
|
+
require "tikkie/api/v1/access_token"
|
32
|
+
require "tikkie/api/v1/authentication"
|
33
|
+
require "tikkie/api/v1/client"
|
34
|
+
require "tikkie/api/v1/configuration"
|
35
|
+
require "tikkie/api/v1/exception"
|
36
|
+
require "tikkie/api/v1/request"
|
37
|
+
|
38
|
+
require "tikkie/api/v1/requests/payment_requests"
|
39
|
+
require "tikkie/api/v1/requests/platforms"
|
40
|
+
require "tikkie/api/v1/requests/users"
|
41
|
+
|
42
|
+
require "tikkie/api/v1/responses/base"
|
43
|
+
require "tikkie/api/v1/responses/bank_account"
|
44
|
+
require "tikkie/api/v1/responses/error"
|
45
|
+
require "tikkie/api/v1/responses/pagination"
|
46
|
+
require "tikkie/api/v1/responses/payment_request_created"
|
47
|
+
require "tikkie/api/v1/responses/payment_request"
|
48
|
+
require "tikkie/api/v1/responses/payment_requests"
|
49
|
+
require "tikkie/api/v1/responses/payment"
|
50
|
+
require "tikkie/api/v1/responses/platform"
|
51
|
+
require "tikkie/api/v1/responses/platforms"
|
52
|
+
require "tikkie/api/v1/responses/user"
|
53
|
+
require "tikkie/api/v1/responses/users"
|
10
54
|
|
11
|
-
require "tikkie/api/
|
12
|
-
require "tikkie/api/
|
13
|
-
require "tikkie/api/
|
14
|
-
|
15
|
-
require "tikkie/api/
|
16
|
-
require "tikkie/api/responses/bank_account"
|
17
|
-
require "tikkie/api/responses/error"
|
18
|
-
require "tikkie/api/responses/pagination"
|
19
|
-
require "tikkie/api/responses/payment_request_created"
|
20
|
-
require "tikkie/api/responses/payment_request"
|
21
|
-
require "tikkie/api/responses/payment_requests"
|
22
|
-
require "tikkie/api/responses/payment"
|
23
|
-
require "tikkie/api/responses/platform"
|
24
|
-
require "tikkie/api/responses/platforms"
|
25
|
-
require "tikkie/api/responses/user"
|
26
|
-
require "tikkie/api/responses/users"
|
27
|
-
|
28
|
-
require "tikkie/api/types/payment_request_status"
|
29
|
-
require "tikkie/api/types/payment_status"
|
30
|
-
require "tikkie/api/types/platform_status"
|
31
|
-
require "tikkie/api/types/platform_usage"
|
32
|
-
require "tikkie/api/types/user_status"
|
55
|
+
require "tikkie/api/v1/types/payment_request_status"
|
56
|
+
require "tikkie/api/v1/types/payment_status"
|
57
|
+
require "tikkie/api/v1/types/platform_status"
|
58
|
+
require "tikkie/api/v1/types/platform_usage"
|
59
|
+
require "tikkie/api/v1/types/user_status"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bigdecimal'
|
4
|
+
|
5
|
+
module Tikkie
|
6
|
+
module Api
|
7
|
+
# Helper for converting amounts to cents and back.
|
8
|
+
class Amount
|
9
|
+
class << self
|
10
|
+
def from_cents(cents)
|
11
|
+
amount = BigDecimal(cents) / 100
|
12
|
+
new(amount)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(amount)
|
17
|
+
@amount = BigDecimal(amount.to_s)
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_d
|
21
|
+
@amount
|
22
|
+
end
|
23
|
+
|
24
|
+
# Convert the amount to a String with 2 decimals.
|
25
|
+
def to_s
|
26
|
+
format("%.2f", @amount)
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_cents
|
30
|
+
cents = @amount * 100
|
31
|
+
cents.to_i
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/tikkie/api/client.rb
CHANGED
@@ -4,20 +4,28 @@ module Tikkie
|
|
4
4
|
module Api
|
5
5
|
# Tikkie API client.
|
6
6
|
class Client
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize(api_key:, app_token: nil, sandbox: false)
|
8
|
+
@config = Tikkie::Api::Configuration.new(api_key: api_key, app_token: app_token, sandbox: sandbox)
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
Tikkie::Api::
|
11
|
+
def payment_requests_subscription
|
12
|
+
Tikkie::Api::Clients::PaymentRequestsSubscription.new(@config)
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
16
|
-
Tikkie::Api::
|
15
|
+
def payment_requests
|
16
|
+
Tikkie::Api::Clients::PaymentRequests.new(@config)
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
Tikkie::Api::
|
19
|
+
def payments
|
20
|
+
Tikkie::Api::Clients::Payments.new(@config)
|
21
|
+
end
|
22
|
+
|
23
|
+
def refunds
|
24
|
+
Tikkie::Api::Clients::Refunds.new(@config)
|
25
|
+
end
|
26
|
+
|
27
|
+
def sandbox_apps
|
28
|
+
Tikkie::Api::Clients::SandboxApps.new(@config)
|
21
29
|
end
|
22
30
|
end
|
23
31
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module Clients
|
6
|
+
# Payment Request endpoint at Tikkie.
|
7
|
+
class PaymentRequests < Base
|
8
|
+
def list(options = {})
|
9
|
+
payment_requests = Tikkie::Api::Resources::PaymentRequests.new(config, options)
|
10
|
+
payment_requests.load
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(payment_request_token, options = {})
|
14
|
+
payment_request = Tikkie::Api::Resources::PaymentRequest.new(config, options.merge(payment_request_token: payment_request_token))
|
15
|
+
payment_request.load
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(attributes = {}, options = {})
|
19
|
+
payment_request = Tikkie::Api::Resources::PaymentRequest.new(config, options)
|
20
|
+
payment_request.save(attributes)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module Clients
|
6
|
+
# Payment Request Subscription endpoint at Tikkie.
|
7
|
+
class PaymentRequestsSubscription < Base
|
8
|
+
def create(attributes = {}, options = {})
|
9
|
+
payment_request = Tikkie::Api::Resources::PaymentRequestsSubscription.new(config, options)
|
10
|
+
payment_request.save(attributes)
|
11
|
+
end
|
12
|
+
|
13
|
+
def delete(options = {})
|
14
|
+
payment_request = Tikkie::Api::Resources::PaymentRequestsSubscription.new(config, options)
|
15
|
+
payment_request.delete
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module Clients
|
6
|
+
# Payment endpoint at Tikkie.
|
7
|
+
class Payments < Base
|
8
|
+
def list(payment_request_token, options = {})
|
9
|
+
payments = Tikkie::Api::Resources::Payments.new(config, options.merge(payment_request_token: payment_request_token))
|
10
|
+
payments.load
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(payment_request_token, payment_token, options = {})
|
14
|
+
payment = Tikkie::Api::Resources::Payment.new(config, options.merge(payment_request_token: payment_request_token, payment_token: payment_token))
|
15
|
+
payment.load
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module Clients
|
6
|
+
# Refund endpoint at Tikkie.
|
7
|
+
class Refunds < Base
|
8
|
+
def get(payment_request_token, payment_token, refund_token, options = {})
|
9
|
+
payment = Tikkie::Api::Resources::Refund.new(config, options.merge(payment_request_token: payment_request_token, payment_token: payment_token, refund_token: refund_token))
|
10
|
+
payment.load
|
11
|
+
end
|
12
|
+
|
13
|
+
def create(payment_request_token, payment_token, attributes = {}, options = {})
|
14
|
+
payment = Tikkie::Api::Resources::Refund.new(config, options.merge(payment_request_token: payment_request_token, payment_token: payment_token))
|
15
|
+
payment.save(attributes)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tikkie
|
4
|
+
module Api
|
5
|
+
module Clients
|
6
|
+
# Sandbox App endpoint at Tikkie.
|
7
|
+
class SandboxApps < Base
|
8
|
+
def create(attributes = {}, options = {})
|
9
|
+
payment = Tikkie::Api::Resources::SandboxApp.new(config, options)
|
10
|
+
payment.save(attributes)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -2,60 +2,21 @@
|
|
2
2
|
|
3
3
|
module Tikkie
|
4
4
|
module Api
|
5
|
-
# Tikkie API
|
6
|
-
# see https://developer.abnamro.com/get-started
|
5
|
+
# Tikkie API configuration.
|
7
6
|
class Configuration
|
8
|
-
SANDBOX_API_URL = "https://api-sandbox.abnamro.com/
|
9
|
-
PRODUCTION_API_URL = "https://api.abnamro.com/
|
7
|
+
SANDBOX_API_URL = "https://api-sandbox.abnamro.com/v2/tikkie/"
|
8
|
+
PRODUCTION_API_URL = "https://api.abnamro.com/v2/tikkie/"
|
10
9
|
|
11
|
-
|
12
|
-
PRODUCTION_OAUTH_TOKEN_URL = "https://auth.abnamro.com/oauth/token"
|
10
|
+
attr_reader :api_key, :app_token, :sandbox
|
13
11
|
|
14
|
-
|
15
|
-
VALID_HASHING_ALGORITHMS = %w[RS256 RS384 RS512].freeze
|
16
|
-
|
17
|
-
attr_reader :api_key, :private_key, :options
|
18
|
-
|
19
|
-
def initialize(api_key, private_key, options = {})
|
12
|
+
def initialize(api_key:, app_token: nil, sandbox: false)
|
20
13
|
@api_key = api_key
|
21
|
-
@
|
22
|
-
@
|
23
|
-
end
|
24
|
-
|
25
|
-
def private_data
|
26
|
-
unless File.exist?(@private_key)
|
27
|
-
raise Tikkie::Api::Exception, "Private key does not exist: #{@private_key}"
|
28
|
-
end
|
29
|
-
|
30
|
-
OpenSSL::PKey::RSA.new(File.read(@private_key))
|
31
|
-
end
|
32
|
-
|
33
|
-
def jwt_hashing_algorithm
|
34
|
-
if @options[:hashing_algorithm]
|
35
|
-
unless VALID_HASHING_ALGORITHMS.include?(@options[:hashing_algorithm])
|
36
|
-
raise Tikkie::Api::Exception, "Invalid hashing algorithm provided: #{@options[:hashing_algorithm]} (expected: #{VALID_HASHING_ALGORITHMS.join(', ')})"
|
37
|
-
end
|
38
|
-
|
39
|
-
@options[:hashing_algorithm]
|
40
|
-
else
|
41
|
-
DEFAULT_HASHING_ALGORITHM
|
42
|
-
end
|
14
|
+
@app_token = app_token
|
15
|
+
@sandbox = sandbox
|
43
16
|
end
|
44
17
|
|
45
18
|
def api_url
|
46
|
-
|
47
|
-
SANDBOX_API_URL
|
48
|
-
else
|
49
|
-
PRODUCTION_API_URL
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def oauth_token_url
|
54
|
-
if @options[:test]
|
55
|
-
SANDBOX_OAUTH_TOKEN_URL
|
56
|
-
else
|
57
|
-
PRODUCTION_OAUTH_TOKEN_URL
|
58
|
-
end
|
19
|
+
@sandbox ? SANDBOX_API_URL : PRODUCTION_API_URL
|
59
20
|
end
|
60
21
|
end
|
61
22
|
end
|
data/lib/tikkie/api/exception.rb
CHANGED
@@ -2,20 +2,40 @@
|
|
2
2
|
|
3
3
|
module Tikkie
|
4
4
|
module Api
|
5
|
-
# Tikkie
|
6
|
-
class Exception <
|
5
|
+
# Generic Tikkie Exception.
|
6
|
+
class Exception < StandardError
|
7
7
|
end
|
8
8
|
|
9
|
-
# Exception when
|
10
|
-
class
|
11
|
-
|
9
|
+
# Exception when an HTTP request fails.
|
10
|
+
class RequestError < Tikkie::Api::Exception
|
11
|
+
attr_accessor :response
|
12
12
|
|
13
13
|
def initialize(response)
|
14
14
|
@response = response
|
15
|
-
|
15
|
+
end
|
16
|
+
|
17
|
+
def errors
|
18
|
+
response.errors
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_uri
|
22
|
+
response.request_uri
|
23
|
+
end
|
24
|
+
|
25
|
+
def http_code
|
26
|
+
response.http_code
|
27
|
+
end
|
28
|
+
|
29
|
+
def http_message
|
30
|
+
response.http_message
|
31
|
+
end
|
32
|
+
|
33
|
+
def messages
|
34
|
+
errors.map(&:message)
|
35
|
+
end
|
16
36
|
|
17
|
-
|
18
|
-
|
37
|
+
def to_s
|
38
|
+
"#{http_code} #{http_message}: #{messages.join(', ')}"
|
19
39
|
end
|
20
40
|
end
|
21
41
|
end
|
data/lib/tikkie/api/request.rb
CHANGED
@@ -2,55 +2,79 @@
|
|
2
2
|
|
3
3
|
require 'net/http'
|
4
4
|
require 'uri'
|
5
|
+
require 'logger'
|
5
6
|
|
6
7
|
module Tikkie
|
7
8
|
module Api
|
8
9
|
# Make authenticated HTTP requests to the Tikkie API.
|
9
10
|
class Request
|
11
|
+
attr_reader :config
|
12
|
+
|
10
13
|
def initialize(config)
|
11
14
|
@config = config
|
12
15
|
end
|
13
16
|
|
14
17
|
def get(path, params = {})
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
request = Net::HTTP::Get.new(uri)
|
19
|
-
request["Api-Key"] = @config.api_key
|
20
|
-
request["Authorization"] = "Bearer #{access_token}"
|
18
|
+
request(:get, path, params)
|
19
|
+
end
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
def post(path, params = {}, body = {})
|
22
|
+
request(:post, path, params, body)
|
23
|
+
end
|
25
24
|
|
26
|
-
|
25
|
+
def delete(path, params = {})
|
26
|
+
request(:delete, path, params)
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
uri = URI.parse(File.join(@config.api_url, path))
|
29
|
+
private
|
31
30
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
request["Content-Type"] = "application/json"
|
36
|
-
request.body = params.to_json
|
31
|
+
def request(http_method, path, params = {}, body = {})
|
32
|
+
uri = URI.join(config.api_url, path)
|
33
|
+
uri.query = URI.encode_www_form(params) unless params.empty?
|
37
34
|
|
38
|
-
|
39
|
-
|
35
|
+
logger.debug("[Tikkie] Request: #{http_method.upcase} #{uri}") if ENV['TIKKIE_DEBUG']
|
36
|
+
|
37
|
+
case http_method
|
38
|
+
when :get
|
39
|
+
request = Net::HTTP::Get.new(uri)
|
40
|
+
when :post
|
41
|
+
request = Net::HTTP::Post.new(uri)
|
42
|
+
request.body = body.to_json
|
43
|
+
when :delete
|
44
|
+
request = Net::HTTP::Delete.new(uri)
|
45
|
+
else
|
46
|
+
raise Tikkie::Api::Exception, "Invalid HTTP method: #{http_method}"
|
40
47
|
end
|
41
48
|
|
42
|
-
|
43
|
-
|
49
|
+
request["Accept"] = "application/json"
|
50
|
+
request["Content-Type"] = "application/json"
|
51
|
+
request["Api-Key"] = config.api_key
|
52
|
+
request["X-App-Token"] = config.app_token if config.app_token
|
53
|
+
request["User-Agent"] = "Ruby tikkie-api/#{Tikkie::Api::VERSION}"
|
44
54
|
|
45
|
-
|
55
|
+
client = Net::HTTP.new(uri.hostname, uri.port)
|
56
|
+
client.use_ssl = uri.scheme == "https"
|
57
|
+
client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
46
58
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
59
|
+
begin
|
60
|
+
response = Tikkie::Api::Response.new(client.request(request))
|
61
|
+
# Try to catch some common exceptions Net::HTTP might raise.
|
62
|
+
rescue Errno::ETIMEDOUT, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, Errno::EHOSTUNREACH,
|
63
|
+
IOError, SocketError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::OpenTimeout,
|
64
|
+
Net::ProtocolError, Net::ReadTimeout, OpenSSL::SSL::SSLError => e
|
65
|
+
raise Tikkie::Api::Exception, e.message
|
51
66
|
end
|
52
67
|
|
53
|
-
|
68
|
+
logger.debug("[Tikkie] Response: #{response.http_code}, body: #{response.body}") if ENV['TIKKIE_DEBUG']
|
69
|
+
|
70
|
+
raise Tikkie::Api::Exception, "Invalid payload" if response.invalid?
|
71
|
+
raise Tikkie::Api::RequestError, response if response.error?
|
72
|
+
|
73
|
+
response
|
74
|
+
end
|
75
|
+
|
76
|
+
def logger
|
77
|
+
@logger ||= Logger.new(STDOUT)
|
54
78
|
end
|
55
79
|
end
|
56
80
|
end
|