nubank_sdk 0.1.0 → 0.2.0

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: 135c075aab6088424516056596548475371c80517af5b322e659478745f02094
4
- data.tar.gz: a39fbf49d75a3323b31c9dcb3b03019ddd03ac71c64f68f5d43ae0655b7949a8
3
+ metadata.gz: 4f097d1d4da02660155bd767854ef6202e5622821e0eda6b9804b5d1cbf33d07
4
+ data.tar.gz: 4b3844c8054f98f3cc10e6eb881021146ac0b59efd998bbd47282455f035cb62
5
5
  SHA512:
6
- metadata.gz: da1354c16ff4b29a59de9f7e0f4090b97bd1fe04ef684f445d4f8f67a84d55ea869e76b9fb31d4e02348997f00e2475b3f101a85e7ac07895b47f42cc79b76e1
7
- data.tar.gz: 9b53ac207a5b25ac16b4b99689590d5f4360a9dcfec4feff810de75fa1334de29286d9a135ae3a82ae683190d8991913ab239b9dc58e7e931f29627fb876006b
6
+ metadata.gz: 5baf7e493f3e48bff114f053c918309f86d57d5af72288322cc88a698f886e36151487c80ad986b3727acde28e0a9c66f8116bdeaed639f5f2ec16a6c2d6abbe
7
+ data.tar.gz: 3f58b9e0caa25fa36e14687c0ef50a7dee002930d73f729a73efb2d85a2c839d8aea51ab525ca2ae2cbe6ac577685fd711cc5dbc05b3a39f261876e59014bcea
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "cSpell.words": [
3
+ "faraday",
3
4
  "nubank",
4
5
  "Nubank"
6
+ ],
7
+ "conventionalCommits.scopes": [
8
+ "version"
5
9
  ]
6
10
  }
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.2.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
@@ -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,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.2.0"
3
3
  end
data/lib/nubank_sdk.rb CHANGED
@@ -1,11 +1,6 @@
1
+ require "nubank_sdk/api_routes"
1
2
  require "nubank_sdk/version"
2
3
 
3
4
  module NubankSdk
4
5
  class Error < StandardError; end
5
-
6
- class Connection
7
- def connected?
8
- true
9
- end
10
- end
11
6
  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.2.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
@@ -71,6 +99,8 @@ files:
71
99
  - bin/console
72
100
  - bin/setup
73
101
  - lib/nubank_sdk.rb
102
+ - lib/nubank_sdk/api_routes.rb
103
+ - lib/nubank_sdk/client.rb
74
104
  - lib/nubank_sdk/version.rb
75
105
  - nubank_sdk.gemspec
76
106
  homepage: https://github.com/Viserion77/nubank_sdk