truelayer 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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