truelayer 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9433f24480b37dbca16d0b284c2e4903c6f5a7bc0e2f02da44a469f33248b86a
4
- data.tar.gz: 287b0ac98b7739d47ad1f29d585c83c440d77af8d7e043cbb296552bca43215a
3
+ metadata.gz: 3f918a55249b4f60e7cfd0db32e7882dc83882d59a17ec852c77e453bd2107ab
4
+ data.tar.gz: 633d1c7b52a4c1ee58ed9726f7ce6ced3f833b62d5df41b54e5426e830b77a1a
5
5
  SHA512:
6
- metadata.gz: f66a064c262b63f17d42f6d82a76179ba1c5a716cd14d9fe70f52d49afe9a74ae70d38ca318107fc7aff4f35634f1c8e54d9530f696afe18e3a997d8dcf2c437
7
- data.tar.gz: 590aacbe0052bff0f50584789131e9891967796cdb55e4c1e60bee12dbe9fb31a29c6f95d034407d360ade1430a59a9f75b4118ba43e4272e4700c9102133e0f
6
+ metadata.gz: 9f9ff9a540971e21488b44ff00a28c9226d6819115879fbbc47fe09917f3696e54b02afa558aaae50c532ef24be676e972829b9a0f9d30951a16079f2f21d1ae
7
+ data.tar.gz: 97040c921587b73c3f2cb12c1156ef98ff69c4260e1dd861172ffe0e123194ce18c4bb2ca513a5484bd1ab281c7aeb3c8d5f462bacc078a86a4eda7284af4ffc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- truelayer (0.1.0)
4
+ truelayer (0.1.1)
5
5
  faraday
6
6
  faraday_middleware
7
7
  faraday_middleware-multi_json
@@ -7,7 +7,7 @@ require 'truelayer/account_number'
7
7
  module Truelayer
8
8
  class Account < BaseModel
9
9
  attributes :update_timestamp, :account_id, :account_type, :display_name,
10
- :currency, :account_number, :provider, :provider_id
10
+ :currency, :account_number, :provider, :provider_id
11
11
 
12
12
  def self.build(json:)
13
13
  super.tap do |record|
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require 'truelayer/base_model'
5
+
6
+ module Truelayer
7
+ class Card < BaseModel
8
+ attributes :update_timestamp, :account_id, :card_type,
9
+ :card_network, :partial_card_number, :name_on_card,
10
+ :valid_from, :valid_to, :display_name,
11
+ :currency, :provider, :provider_id
12
+
13
+ def self.build(json:)
14
+ super.tap do |record|
15
+ record.update_timestamp = Time.parse(record.update_timestamp) if record.update_timestamp
16
+ record.provider_id = record.provider[:provider_id] if record.provider
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'truelayer/base_repository'
4
+ require 'truelayer/response'
5
+ require 'truelayer/card'
6
+ require 'truelayer/balance'
7
+ require 'truelayer/transaction'
8
+
9
+ module Truelayer
10
+ class CardsRepository < BaseRepository
11
+ def all_cards(webhook_uri: nil)
12
+ response = get('/data/v1/cards', params: async_params(webhook_uri))
13
+
14
+ Response.build_with_results(json: response.body, results_class: Card)
15
+ end
16
+
17
+ def find_card(card_id, webhook_uri: nil)
18
+ url = format_url('/data/v1/cards/:card_id', card_id: card_id)
19
+ response = get(url, params: async_params(webhook_uri))
20
+
21
+ Response.build_with_results(json: response.body, results_class: Card)
22
+ end
23
+
24
+ def current_balance(card_id, webhook_uri: nil)
25
+ url = format_url('/data/v1/cards/:card_id/balance', card_id: card_id)
26
+ response = get(url, params: async_params(webhook_uri))
27
+
28
+ Response.build_with_results(json: response.body, results_class: Balance)
29
+ end
30
+
31
+ def transactions(card_id, from: nil, to: nil, webhook_uri: nil)
32
+ url = format_url('/data/v1/cards/:card_id/transactions', card_id: card_id)
33
+ response = get(url, params: { from: from, to: to }.merge(async_params(webhook_uri)))
34
+
35
+ Response.build_with_results(json: response.body, results_class: Transaction)
36
+ end
37
+
38
+ private
39
+
40
+ def async_params(webhook_uri)
41
+ {}.tap do |params|
42
+ if webhook_uri
43
+ params[:async] = true
44
+ params[:webhook_uri] = webhook_uri
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -50,8 +50,12 @@ module Truelayer
50
50
  raise InvalidRequestError, response.body
51
51
  when 401
52
52
  raise UnauthorizedError, response.body
53
+ when 403
54
+ raise AccessDeniedError, response.body
53
55
  when 404
54
56
  raise NotFoundError, response.body
57
+ when 501
58
+ raise EndpointNotSupportedError, response.body
55
59
  else
56
60
  raise GenericError, "#{response.status}: #{response.body}"
57
61
  end
@@ -23,6 +23,7 @@ module Truelayer
23
23
  @verbose = false
24
24
 
25
25
  return if Faraday::Request.fetch_middleware(:truelayer_auth)
26
+
26
27
  Faraday::Request.register_middleware truelayer_auth: -> { Truelayer::FaradayAuth }
27
28
  end
28
29
 
@@ -7,5 +7,9 @@ module Truelayer
7
7
 
8
8
  class InvalidRequestError < StandardError; end
9
9
 
10
+ class AccessDeniedError < StandardError; end
11
+
10
12
  class NotFoundError < StandardError; end
13
+
14
+ class EndpointNotSupportedError < StandardError; end
11
15
  end
@@ -5,5 +5,9 @@ require 'truelayer/base_model'
5
5
  module Truelayer
6
6
  class Token < BaseModel
7
7
  attributes :access_token, :expires_in, :token_type, :refresh_token, :scope
8
+
9
+ def scopes
10
+ scope.to_s.split
11
+ end
8
12
  end
9
13
  end
@@ -8,9 +8,9 @@ require 'truelayer/transaction_meta'
8
8
  module Truelayer
9
9
  class Transaction < BaseModel
10
10
  attributes :transaction_id, :normalised_provider_transaction_id, :provider_transaction_id,
11
- :timestamp, :description, :amount, :currency,
12
- :transaction_type, :transaction_category, :transaction_classification,
13
- :merchant_name, :running_balance, :meta
11
+ :timestamp, :description, :amount, :currency,
12
+ :transaction_type, :transaction_category, :transaction_classification,
13
+ :merchant_name, :running_balance, :meta
14
14
 
15
15
  def self.build(json:)
16
16
  super.tap do |record|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Truelayer
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
@@ -5,8 +5,8 @@ require 'truelayer/base_model'
5
5
  module Truelayer
6
6
  class WebhookPayload < BaseModel
7
7
  attributes :request_timestamp, :request_uri,
8
- :credentials_id, :results_uri, :status, :task_id,
9
- :error, :error_description
8
+ :credentials_id, :results_uri, :status, :task_id,
9
+ :error, :error_description
10
10
 
11
11
  def success?
12
12
  status == 'Succeeded'
data/lib/truelayer.rb CHANGED
@@ -4,6 +4,7 @@ require 'truelayer/version'
4
4
  require 'truelayer/configuration'
5
5
  require 'truelayer/authentication_repository'
6
6
  require 'truelayer/accounts_repository'
7
+ require 'truelayer/cards_repository'
7
8
  require 'truelayer/async_repository'
8
9
 
9
10
  module Truelayer
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truelayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Finpoint
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-30 00:00:00.000000000 Z
11
+ date: 2022-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -190,6 +190,8 @@ files:
190
190
  - lib/truelayer/balance.rb
191
191
  - lib/truelayer/base_model.rb
192
192
  - lib/truelayer/base_repository.rb
193
+ - lib/truelayer/card.rb
194
+ - lib/truelayer/cards_repository.rb
193
195
  - lib/truelayer/client.rb
194
196
  - lib/truelayer/configuration.rb
195
197
  - lib/truelayer/errors.rb