nubank_sdk 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.vscode/settings.json +2 -1
- data/Gemfile.lock +1 -1
- data/lib/nubank_sdk/account.rb +43 -0
- data/lib/nubank_sdk/auth.rb +10 -8
- data/lib/nubank_sdk/client.rb +10 -3
- data/lib/nubank_sdk/version.rb +1 -1
- data/lib/nubank_sdk.rb +1 -0
- data/usage_example.rb +19 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee3ffd6c280bb2b48dba0c1b46d4c3a560f985a55b22793aa251ece82f69da28
|
4
|
+
data.tar.gz: a4a69ad6502fd3852fb91b21fc37ee2fe872f9432a575d8d72367125201d8ecd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 232922b481796a104a241ee8a9c890082c93c4e23eb3de6635f06633539c0d87770cb0e85b86e1a72d94548004080a5277010cb529ab623299ac40364fa07ac9
|
7
|
+
data.tar.gz: 1e82254c8026f4f5cb4e9bd3d80971d31979aced7145fe15e44e9e7a7a9a4c0f6303e232f3468860b07b5ab5cf358b624f1da4f0e03669765494a4f07fd21cd2
|
data/.vscode/settings.json
CHANGED
data/Gemfile.lock
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
module NubankSdk
|
2
|
+
class Account
|
3
|
+
attr_reader :cpf, :device_id
|
4
|
+
|
5
|
+
def initialize(cpf:, key:, device_id: nil, adapter: nil)
|
6
|
+
@cpf = cpf
|
7
|
+
@device_id = device_id || generate_device_id
|
8
|
+
|
9
|
+
@api_routes = NubankSdk::ApiRoutes.new(connection_adapter: adapter)
|
10
|
+
@adapter = adapter
|
11
|
+
@key = key
|
12
|
+
end
|
13
|
+
|
14
|
+
def auth
|
15
|
+
@auth ||= NubankSdk::Auth.new(
|
16
|
+
cpf: @cpf,
|
17
|
+
key: @key,
|
18
|
+
device_id: @device_id,
|
19
|
+
api_routes: @api_routes,
|
20
|
+
adapter: @adapter
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
def account_balance
|
25
|
+
query_url = auth.api_routes.entrypoint(path: :ssl, entrypoint: :query)
|
26
|
+
connection = Client::HTTPS.new(auth.certificate.encoded, @adapter)
|
27
|
+
|
28
|
+
response = connection.post(query_url, {
|
29
|
+
'variables': {},
|
30
|
+
'query': '{viewer {savingsAccount {currentSavingsBalance {netAmount}}}}'
|
31
|
+
}, { Authorization: "Bearer #{auth.access_token}" })
|
32
|
+
|
33
|
+
data = JSON.parse(response.body, symbolize_names: true)
|
34
|
+
data[:data][:viewer][:savingsAccount][:currentSavingsBalance][:netAmount]
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def generate_device_id
|
40
|
+
SecureRandom.uuid.split('-').last
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/nubank_sdk/auth.rb
CHANGED
@@ -13,6 +13,10 @@ module NubankSdk
|
|
13
13
|
@adapter = adapter
|
14
14
|
end
|
15
15
|
|
16
|
+
def api_routes
|
17
|
+
@api_routes
|
18
|
+
end
|
19
|
+
|
16
20
|
def certificate
|
17
21
|
@certificate ||= NubankSdk::Certificate.new(@cpf, @key)
|
18
22
|
end
|
@@ -95,14 +99,12 @@ module NubankSdk
|
|
95
99
|
bills_url_keys = ['bills_summary']
|
96
100
|
customer_url_keys = ['customer']
|
97
101
|
account_url_keys = ['account']
|
98
|
-
|
99
|
-
@api_routes.add_entrypoint(:ssl, :
|
100
|
-
@api_routes.add_entrypoint(:ssl, :
|
101
|
-
@api_routes.add_entrypoint(:ssl, :
|
102
|
-
@api_routes.add_entrypoint(:ssl, :
|
103
|
-
@api_routes.add_entrypoint(:ssl, :
|
104
|
-
@api_routes.add_entrypoint(:ssl, :account, find_url(account_url_keys, links))
|
105
|
-
@api_routes
|
102
|
+
@api_routes.add_entrypoint(path: :ssl, entrypoint: :revoke_token, url: links[:revoke_token][:href])
|
103
|
+
@api_routes.add_entrypoint(path: :ssl, entrypoint: :query, url: links[:ghostflame][:href])
|
104
|
+
@api_routes.add_entrypoint(path: :ssl, entrypoint: :feed, url: find_url(feed_url_keys, links))
|
105
|
+
@api_routes.add_entrypoint(path: :ssl, entrypoint: :bills, url: find_url(bills_url_keys, links))
|
106
|
+
@api_routes.add_entrypoint(path: :ssl, entrypoint: :customer, url: find_url(customer_url_keys, links))
|
107
|
+
@api_routes.add_entrypoint(path: :ssl, entrypoint: :account, url: find_url(account_url_keys, links))
|
106
108
|
end
|
107
109
|
|
108
110
|
def find_url(keys, list)
|
data/lib/nubank_sdk/client.rb
CHANGED
@@ -30,8 +30,8 @@ module NubankSdk
|
|
30
30
|
end
|
31
31
|
|
32
32
|
class HTTPS
|
33
|
-
def initialize(certificate, adapter = nil)
|
34
|
-
client_cert = OpenSSL::X509::Certificate.new(certificate.certificate)
|
33
|
+
def initialize(certificate, adapter = nil)
|
34
|
+
client_cert = OpenSSL::X509::Certificate.new(certificate.certificate)
|
35
35
|
client_key = OpenSSL::PKey::RSA.new(certificate.key)
|
36
36
|
|
37
37
|
@connection = Faraday.new(ssl: { client_cert: client_cert, client_key: client_key}) do |faraday|
|
@@ -40,9 +40,16 @@ module NubankSdk
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def post(url, body)
|
43
|
+
def post(url, body, headers = {})
|
44
44
|
@connection.post(url) do |req|
|
45
45
|
req.headers['Content-Type'] = 'application/json'
|
46
|
+
req.headers['X-Correlation-Id'] = '772428d8-f0ee-43d6-8093-a13de3c9ce96'
|
47
|
+
req.headers['User-Agent'] = "NubankSdk Client (#{NubankSdk::VERSION})"
|
48
|
+
|
49
|
+
headers.each do |key, value|
|
50
|
+
req.headers[key] = value
|
51
|
+
end
|
52
|
+
|
46
53
|
req.body = body.to_json
|
47
54
|
end
|
48
55
|
end
|
data/lib/nubank_sdk/version.rb
CHANGED
data/lib/nubank_sdk.rb
CHANGED
data/usage_example.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'nubank_sdk'
|
2
|
+
|
3
|
+
# instance a nubank account object
|
4
|
+
account = NubankSdk::Account.new(cpf: '12345678909')
|
5
|
+
password = 'dracarys'
|
6
|
+
# authenticate the account
|
7
|
+
|
8
|
+
# request an email code
|
9
|
+
account_email = account.auth.request_email_code(password)
|
10
|
+
|
11
|
+
# get the email code from the user
|
12
|
+
puts "Enter the code sent to #{account_email}: "
|
13
|
+
email_code = gets.chomp
|
14
|
+
account.auth.exchange_certs(email_code, password)
|
15
|
+
|
16
|
+
account.auth.authenticate_with_certificate(password)
|
17
|
+
|
18
|
+
# get the account balance
|
19
|
+
account.account_balance
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nubank_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Viserion77
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,12 +100,14 @@ files:
|
|
100
100
|
- bin/setup
|
101
101
|
- certificates/.gitkeep
|
102
102
|
- lib/nubank_sdk.rb
|
103
|
+
- lib/nubank_sdk/account.rb
|
103
104
|
- lib/nubank_sdk/api_routes.rb
|
104
105
|
- lib/nubank_sdk/auth.rb
|
105
106
|
- lib/nubank_sdk/certificate.rb
|
106
107
|
- lib/nubank_sdk/client.rb
|
107
108
|
- lib/nubank_sdk/version.rb
|
108
109
|
- nubank_sdk.gemspec
|
110
|
+
- usage_example.rb
|
109
111
|
homepage: https://github.com/Viserion77/nubank_sdk
|
110
112
|
licenses: []
|
111
113
|
metadata: {}
|