nubank_sdk 0.1.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 135c075aab6088424516056596548475371c80517af5b322e659478745f02094
4
- data.tar.gz: a39fbf49d75a3323b31c9dcb3b03019ddd03ac71c64f68f5d43ae0655b7949a8
3
+ metadata.gz: 8e5b9021cf033b5ec98a45bdd97701e6acb0d4e7f7ea12d2fe8247e91fb24dd7
4
+ data.tar.gz: 9faacb99367c3fd68c1d93dc343a2dac43efd90f2c27291d6ab67cdb478fcc8a
5
5
  SHA512:
6
- metadata.gz: da1354c16ff4b29a59de9f7e0f4090b97bd1fe04ef684f445d4f8f67a84d55ea869e76b9fb31d4e02348997f00e2475b3f101a85e7ac07895b47f42cc79b76e1
7
- data.tar.gz: 9b53ac207a5b25ac16b4b99689590d5f4360a9dcfec4feff810de75fa1334de29286d9a135ae3a82ae683190d8991913ab239b9dc58e7e931f29627fb876006b
6
+ metadata.gz: 7afd83c07054626508d65dc3b028a09aaf07f0625f81cf7f4b2f53b121fc34d43a89f269a6cedc9a3e064af09f29e5e68b3a2f79a5ecacb845d34bf1576d23d7
7
+ data.tar.gz: c99a7db8b4c2fcb29a7331009dcd2cd2bc3c9a4256153e5fc7c188dac3689179607c52fafe8d234d66295158dce2a2c2989e17388b7a2ca4f609c85dca513ac0
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /certificates/*.p12
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "cSpell.words": [
3
+ "faraday",
3
4
  "nubank",
4
5
  "Nubank"
6
+ ],
7
+ "conventionalCommits.scopes": [
8
+ "certificates",
9
+ "version"
5
10
  ]
6
11
  }
data/Gemfile.lock CHANGED
@@ -1,12 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nubank_sdk (0.1.0)
4
+ nubank_sdk (0.3.0)
5
+ faraday (~> 0.15.0)
6
+ json (~> 2.1.0)
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
9
11
  diff-lcs (1.5.0)
12
+ faraday (0.15.4)
13
+ multipart-post (>= 1.2, < 3)
14
+ json (2.1.0)
15
+ multipart-post (2.2.3)
10
16
  rake (10.5.0)
11
17
  rspec (3.11.0)
12
18
  rspec-core (~> 3.11.0)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # NubankSdk
1
+ # NubankSdk (Work in progress)
2
2
 
3
3
  A gem to make it ease to monitorize your Nubank account.
4
4
 
@@ -33,3 +33,5 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
33
33
  ## Contributing
34
34
 
35
35
  Bug reports and pull requests are welcome on GitHub at https://github.com/viserion77/nubank_sdk.
36
+
37
+ This project was based on the python implementation in this project: [andreroggeri/pynubank](https://github.com/andreroggeri/pynubank)
data/bin/console CHANGED
File without changes
data/bin/setup CHANGED
File without changes
File without changes
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'json'
5
+
6
+ module NubankSdk
7
+ class ApiRoutes
8
+ DISCOVERY_URI = "https://prod-s0-webapp-proxy.nubank.com.br"
9
+ PROXY_PATHS = {
10
+ default: '/api/discovery',
11
+ app: '/api/app/discovery',
12
+ ssl: '',
13
+ }
14
+
15
+ def initialize(url_discovery_map: {}, connection_adapter: nil)
16
+ @url_discovery_map = url_discovery_map
17
+ @connection_adapter = connection_adapter
18
+ end
19
+
20
+ # types: :splitted, :full
21
+ def entrypoint(path: :default, entrypoint:, type: :full)
22
+ discovery(path) if @url_discovery_map[path].nil?
23
+
24
+ url = @url_discovery_map[path][entrypoint]
25
+
26
+ if type == :full
27
+ return url
28
+ else
29
+ url_splitted = url.split('/api')
30
+
31
+ return [url_splitted.first, "/api#{url_splitted.last}"]
32
+ end
33
+ end
34
+
35
+ def add_entrypoint(path: :default, entrypoint:, url:)
36
+ path_map = @url_discovery_map[path] || {}
37
+ path_map[entrypoint] = url
38
+
39
+ @url_discovery_map[path] = path_map
40
+ end
41
+
42
+ private
43
+
44
+ def discovery(path = :default)
45
+ return @url_discovery_map[path] if @url_discovery_map[path]
46
+
47
+ response = connection.get(PROXY_PATHS[path])
48
+ url_map = Client.get_body(response)
49
+
50
+ @url_discovery_map[path] = url_map
51
+ end
52
+
53
+ def connection
54
+ @connection ||= Faraday.new(url: DISCOVERY_URI) do |faraday|
55
+ faraday.adapter(*@connection_adapter) if @connection_adapter
56
+ faraday.adapter Faraday.default_adapter unless @connection_adapter
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'openssl'
4
+
5
+ module NubankSdk
6
+ class Certificate
7
+ FILES_PATH = './certificates/'
8
+
9
+ def initialize(cpf, key)
10
+ @cpf = cpf
11
+ @key = key
12
+ end
13
+
14
+ def process_decoded(certificate)
15
+ encoded = encode certificate
16
+
17
+ p12 = create_pkcs12_from encoded
18
+ save p12
19
+ end
20
+
21
+ def encoded
22
+ @encoded ||= OpenSSL::PKCS12.new(file.read, 'password')
23
+ end
24
+
25
+ private
26
+
27
+ def file
28
+ File.open("#{FILES_PATH}#{@cpf}.p12", 'rb')
29
+ end
30
+
31
+ def save(p12)
32
+ File.open("#{FILES_PATH}#{@cpf}.p12", 'wb') do |file|
33
+ file.write p12.to_der
34
+ end
35
+ end
36
+
37
+ def create_pkcs12_from(certificate)
38
+ OpenSSL::PKCS12.create("password", "key", @key, certificate)
39
+ end
40
+
41
+ def encode(certificate)
42
+ OpenSSL::X509::Certificate.new certificate
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module NubankSdk
6
+ class Client
7
+ def self.get_body(response)
8
+ JSON.parse(response.body, symbolize_names: true)
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module NubankSdk
2
- VERSION = "0.1.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/nubank_sdk.rb CHANGED
@@ -1,11 +1,7 @@
1
+ require "nubank_sdk/api_routes"
2
+ require "nubank_sdk/certificate"
1
3
  require "nubank_sdk/version"
2
4
 
3
5
  module NubankSdk
4
6
  class Error < StandardError; end
5
-
6
- class Connection
7
- def connected?
8
- true
9
- end
10
- end
11
7
  end
data/nubank_sdk.gemspec CHANGED
@@ -25,4 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "bundler", "~> 1.17"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
27
  spec.add_development_dependency "rspec", "~> 3.0"
28
+
29
+ spec.add_dependency "faraday", "~> 0.15.0"
30
+ spec.add_dependency "json", "~> 2.1.0"
28
31
  end
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.1.0
4
+ version: 0.3.0
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-21 00:00:00.000000000 Z
11
+ date: 2022-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.15.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.15.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
55
83
  description: Monitorize balances, recent transactions, credit limit etc...
56
84
  email:
57
85
  - jeferson.a.oficial@gmail.com
@@ -70,7 +98,11 @@ files:
70
98
  - Rakefile
71
99
  - bin/console
72
100
  - bin/setup
101
+ - certificates/.gitkeep
73
102
  - lib/nubank_sdk.rb
103
+ - lib/nubank_sdk/api_routes.rb
104
+ - lib/nubank_sdk/certificate.rb
105
+ - lib/nubank_sdk/client.rb
74
106
  - lib/nubank_sdk/version.rb
75
107
  - nubank_sdk.gemspec
76
108
  homepage: https://github.com/Viserion77/nubank_sdk