myfinance 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +24 -0
  3. data/.rubocop.yml +1156 -0
  4. data/.travis.yml +3 -3
  5. data/Gemfile.lock +7 -7
  6. data/README.md +309 -2
  7. data/lib/myfinance.rb +15 -0
  8. data/lib/myfinance/client.rb +20 -0
  9. data/lib/myfinance/entities/account.rb +26 -0
  10. data/lib/myfinance/entities/account_collection.rb +16 -0
  11. data/lib/myfinance/entities/category.rb +22 -0
  12. data/lib/myfinance/entities/category_collection.rb +16 -0
  13. data/lib/myfinance/entities/classification_center.rb +15 -0
  14. data/lib/myfinance/entities/classification_center_collection.rb +18 -0
  15. data/lib/myfinance/entities/deposit_account.rb +24 -0
  16. data/lib/myfinance/entities/deposit_account_collection.rb +16 -0
  17. data/lib/myfinance/entities/person.rb +38 -0
  18. data/lib/myfinance/entities/person_collection.rb +14 -0
  19. data/lib/myfinance/resources/account.rb +25 -0
  20. data/lib/myfinance/resources/category.rb +81 -0
  21. data/lib/myfinance/resources/classification_center.rb +103 -0
  22. data/lib/myfinance/resources/deposit_account.rb +93 -0
  23. data/lib/myfinance/resources/person.rb +97 -0
  24. data/lib/myfinance/version.rb +1 -1
  25. data/spec/lib/myfinance/client_spec.rb +40 -0
  26. data/spec/lib/myfinance/entities/account_collection_spec.rb +19 -0
  27. data/spec/lib/myfinance/entities/account_spec.rb +13 -0
  28. data/spec/lib/myfinance/entities/category_collection_spec.rb +47 -0
  29. data/spec/lib/myfinance/entities/category_spec.rb +12 -0
  30. data/spec/lib/myfinance/entities/classification_center_collection_spec.rb +23 -0
  31. data/spec/lib/myfinance/entities/classification_center_spec.rb +8 -0
  32. data/spec/lib/myfinance/entities/deposit_account_collection_spec.rb +23 -0
  33. data/spec/lib/myfinance/entities/deposit_account_spec.rb +11 -0
  34. data/spec/lib/myfinance/entities/person_collection_spec.rb +26 -0
  35. data/spec/lib/myfinance/entities/person_spec.rb +18 -0
  36. data/spec/lib/myfinance/resources/account_spec.rb +28 -0
  37. data/spec/lib/myfinance/resources/category_spec.rb +118 -0
  38. data/spec/lib/myfinance/resources/classification_center_spec.rb +147 -0
  39. data/spec/lib/myfinance/resources/deposit_account_spec.rb +123 -0
  40. data/spec/lib/myfinance/resources/person_spec.rb +139 -0
  41. metadata +50 -3
@@ -0,0 +1,16 @@
1
+ module Myfinance
2
+ module Entities
3
+ #
4
+ # A wrapper to Myfinance entities collection
5
+ #
6
+ class AccountCollection < Collection
7
+ def build_collection
8
+ response.parsed_body.each do |attributes|
9
+ collection.push(
10
+ Myfinance::Entities::Account.new(attributes["account"])
11
+ )
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ module Myfinance
2
+ module Entities
3
+ class Category < Base
4
+ attribute :account_id, Integer
5
+ attribute :cost, Boolean
6
+ attribute :created_at, DateTime
7
+ attribute :excel_import_id, Integer
8
+ attribute :force_destroy, Boolean
9
+ attribute :full_name, String
10
+ attribute :guid, String
11
+ attribute :id, Integer
12
+ attribute :imported_from_sync, Boolean
13
+ attribute :interested_users_ids, Array
14
+ attribute :modified_by_sync, Boolean
15
+ attribute :name, String
16
+ attribute :parent_id, Integer
17
+ attribute :revenue, Boolean
18
+ attribute :updated_at, DateTime
19
+ attribute :use_count, Integer
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ module Myfinance
2
+ module Entities
3
+ #
4
+ # A wrapper to Myfinance categories collection
5
+ #
6
+ class CategoryCollection < Collection
7
+ def build_collection
8
+ response.parsed_body.each do |attributes|
9
+ collection.push(
10
+ Myfinance::Entities::Category.new(attributes["category"])
11
+ )
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ module Myfinance
2
+ module Entities
3
+ class ClassificationCenter < Base
4
+ attribute :cost_center, Boolean
5
+ attribute :created_at, DateTime
6
+ attribute :entity_id, Integer
7
+ attribute :excel_import_id, Integer
8
+ attribute :id, Integer
9
+ attribute :name, String
10
+ attribute :revenue_center, Boolean
11
+ attribute :updated_at, DateTime
12
+ attribute :use_count, Integer
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ module Myfinance
2
+ module Entities
3
+ #
4
+ # A wrapper to Myfinance classification center
5
+ #
6
+ class ClassificationCenterCollection < Collection
7
+ def build_collection
8
+ response.parsed_body.each do |attributes|
9
+ collection.push(
10
+ Myfinance::Entities::ClassificationCenter.new(
11
+ attributes["classification_center"]
12
+ )
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ module Myfinance
2
+ module Entities
3
+ class DepositAccount < Base
4
+ attribute :archive, Boolean
5
+ attribute :bank_account_id, Integer
6
+ attribute :created_at, DateTime
7
+ attribute :currency_id, Integer
8
+ attribute :deposit_account_type_id, Integer
9
+ attribute :description, String
10
+ attribute :entity_id, Integer
11
+ attribute :force_destroy, Boolean
12
+ attribute :id, Integer
13
+ attribute :imported_from_sync, Boolean
14
+ attribute :initial_balance, String
15
+ attribute :last_transaction_date, Date
16
+ attribute :name, String
17
+ attribute :sync_response, String
18
+ attribute :updated_at, DateTime
19
+ attribute :calculated_balance, String
20
+ attribute :logo_image_url, String
21
+ attribute :links, Array
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ module Myfinance
2
+ module Entities
3
+ #
4
+ # a wrapper to Myfinance deposit account collection
5
+ #
6
+ class DepositAccountCollection < Collection
7
+ def build_collection
8
+ response.parsed_body.each do |attributes|
9
+ collection.push(Myfinance::Entities::DepositAccount.new(
10
+ attributes["deposit_account"])
11
+ )
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,38 @@
1
+ module Myfinance
2
+ module Entities
3
+ class Person < Base
4
+ attribute :account_id, Integer
5
+ attribute :address, String
6
+ attribute :address_number, Integer
7
+ attribute :city, String
8
+ attribute :complement, String
9
+ attribute :country, String
10
+ attribute :created_at, DateTime
11
+ attribute :customer, Boolean
12
+ attribute :email, String
13
+ attribute :excel_import_id, Integer
14
+ attribute :febraban_favored_code, Integer
15
+ attribute :febraban_name, String
16
+ attribute :federation_subscription_number, String
17
+ attribute :federation_subscription_number_only_numbers, Integer
18
+ attribute :federation_subscription_type_id, Integer
19
+ attribute :force_destroy, Boolean
20
+ attribute :guid, String
21
+ attribute :id, Integer
22
+ attribute :imported_from_sync, Boolean
23
+ attribute :interested_users_ids, Array
24
+ attribute :modified_by_sync, Boolean
25
+ attribute :name, String
26
+ attribute :neighborhood, String
27
+ attribute :note, String
28
+ attribute :person_type, String
29
+ attribute :phone, String
30
+ attribute :site, String
31
+ attribute :state, String
32
+ attribute :supplier, Boolean
33
+ attribute :updated_at, DateTime
34
+ attribute :use_count, Integer
35
+ attribute :zip_code, String
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,14 @@
1
+ module Myfinance
2
+ module Entities
3
+ #
4
+ # A wrapper to Myfinance people collection
5
+ #
6
+ class PersonCollection < Collection
7
+ def build_collection
8
+ response.parsed_body.each do |attributes|
9
+ collection.push(Myfinance::Entities::Person.new(attributes["person"]))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ module Myfinance
2
+ module Resources
3
+ #
4
+ # A wrapper to Myfinance accounts API
5
+ #
6
+ # [API]
7
+ # Documentation: https://app.myfinance.com.br/docs/api/multiple_accounts
8
+ #
9
+ class Account < Base
10
+ #
11
+ # List all account of the user
12
+ #
13
+ # [API]
14
+ # Method: <tt>GET /accounts</tt>
15
+ #
16
+ # Documentation: https://app.myfinance.com.br/docs/api/multiple_accounts#get_index
17
+ #
18
+ def find_all
19
+ http.get("/accounts", body: {}) do |response|
20
+ respond_with_collection(response)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,81 @@
1
+ module Myfinance
2
+ module Resources
3
+ #
4
+ # A wrapper to Myfinance categories API
5
+ #
6
+ # [API]
7
+ # Documentation: https://sandbox.myfinance.com.br/docs/api/categories
8
+ #
9
+ class Category < Base
10
+ #
11
+ # List all categories
12
+ #
13
+ # [API]
14
+ # Method: <tt>GET /categories</tt>
15
+ #
16
+ # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#get_index
17
+ #
18
+ def find_all
19
+ http.get("/categories", body: {}) do |response|
20
+ respond_with_collection(response)
21
+ end
22
+ end
23
+
24
+ #
25
+ # Find a category
26
+ #
27
+ # [API]
28
+ # Method: <tt>GET /categories/:id</tt>
29
+ #
30
+ # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#get_show
31
+ #
32
+ def find(id)
33
+ http.get("/categories/#{id}", body: {}) do |response|
34
+ respond_with_object response, "category"
35
+ end
36
+ end
37
+
38
+ #
39
+ # Creates a category
40
+ #
41
+ # [API]
42
+ # Method: <tt>POST /categories</tt>
43
+ #
44
+ # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#post_create
45
+ #
46
+ def create(params)
47
+ http.post("/categories", body: { category: params }) do |response|
48
+ respond_with_object response, "category"
49
+ end
50
+ end
51
+
52
+ #
53
+ # Updates a category
54
+ #
55
+ # [API]
56
+ # Method: <tt>PUT /categories/:id</tt>
57
+ #
58
+ # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#put_update
59
+ #
60
+ def update(id, params = {})
61
+ http.put("/categories/#{id}", body: { category: params }) do |response|
62
+ respond_with_object response, "category"
63
+ end
64
+ end
65
+
66
+ #
67
+ # Destroy a category
68
+ #
69
+ # [API]
70
+ # Method: <tt>DELETE /categories/:id</tt>
71
+ #
72
+ # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#delete_destroy
73
+ #
74
+ def destroy(id)
75
+ http.delete("/categories/#{id}", body: {}) do |response|
76
+ respond_with_object response, "category"
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,103 @@
1
+ module Myfinance
2
+ module Resources
3
+ #
4
+ # A wrapper to Myfinance classification center API
5
+ #
6
+ # [API]
7
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers
8
+ #
9
+ class ClassificationCenter < Base
10
+ #
11
+ # List all classification centers
12
+ #
13
+ # [API]
14
+ # Method: <tt>GET /classification_centers</tt>
15
+ #
16
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers#get_index
17
+ #
18
+ def find_all
19
+ http.get("/classification_centers", body: {}) do |response|
20
+ respond_with_collection(response)
21
+ end
22
+ end
23
+
24
+ #
25
+ # Show a classification center
26
+ #
27
+ # [API]
28
+ # Method: <tt>GET /classification_centers/:id</tt>
29
+ #
30
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers#get_show
31
+ #
32
+ def find(id)
33
+ http.get("/classification_centers/#{id}", body: {}) do |response|
34
+ respond_with_object response, "classification_center"
35
+ end
36
+ end
37
+
38
+ #
39
+ # Find classification centers by attributtes
40
+ #
41
+ # [API]
42
+ # Method: <tt>GET /classification_centers</tt>
43
+ #
44
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers
45
+ #
46
+ def find_by(params)
47
+ values = params.map { |k,v| "search[#{k}]=#{v}" }.join("&")
48
+ http.get(
49
+ "/classification_centers?#{values.gsub(%r/\s/, '+')}", body: {}
50
+ ) do |response|
51
+ respond_with_collection(response)
52
+ end
53
+ end
54
+
55
+ #
56
+ # Creates a classification center
57
+ #
58
+ # [API]
59
+ # Method: <tt>POST /classification_centers</tt>
60
+ #
61
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers#post_create
62
+ #
63
+ def create(params)
64
+ http.post(
65
+ "/classification_centers", body: { classification_center: params }
66
+ ) do |response|
67
+ respond_with_object response, "classification_center"
68
+ end
69
+ end
70
+
71
+ #
72
+ # Updates a classification center
73
+ #
74
+ # [API]
75
+ # Method: <tt>PUT /classification_centers/:id</tt>
76
+ #
77
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers#put_update
78
+ #
79
+ def update(id, params)
80
+ http.put(
81
+ "/classification_centers/#{id}",
82
+ body: { classification_center: params }
83
+ ) do |response|
84
+ respond_with_object response, "classification_center"
85
+ end
86
+ end
87
+
88
+ #
89
+ # Destroy a classification center
90
+ #
91
+ # [API]
92
+ # Method: <tt>DELETE /classification_centers/:id</tt>
93
+ #
94
+ # Documentation: https://app.myfinance.com.br/docs/api/classification_centers#delete_destroy
95
+ #
96
+ def destroy(id)
97
+ http.delete("/classification_centers/#{id}", body: {}) do |response|
98
+ respond_with_object response, "classification_center"
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,93 @@
1
+ module Myfinance
2
+ module Resources
3
+ #
4
+ # A wrapper to Myfinance deposit accounts API
5
+ #
6
+ # [API]
7
+ # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts
8
+ #
9
+ class DepositAccount < Base
10
+ #
11
+ # List all deposit accounts of entity
12
+ #
13
+ # [API]
14
+ # Method: <tt>GET /entities/:entity_id/deposit_accounts</tt>
15
+ #
16
+ # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#get_index
17
+ #
18
+ def find_all(entity_id)
19
+ http.get(
20
+ "/entities/#{entity_id}/deposit_accounts", body: {}
21
+ ) do |response|
22
+ respond_with_collection(response)
23
+ end
24
+ end
25
+
26
+ #
27
+ # List a deposit account of entity
28
+ #
29
+ # [API]
30
+ # Method: <tt>GET /entities/:entity_id/deposit_accounts/:id</tt>
31
+ #
32
+ # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#get_show
33
+ #
34
+ def find(entity_id, id)
35
+ http.get(
36
+ "/entities/#{entity_id}/deposit_accounts/#{id}", body: {}
37
+ ) do |response|
38
+ respond_with_object(response, "deposit_account")
39
+ end
40
+ end
41
+
42
+ #
43
+ # Creates a deposit account of entity
44
+ #
45
+ # [API]
46
+ # Method: <tt>POST /entities/:entity_id/deposit_accounts</tt>
47
+ #
48
+ # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#post_create
49
+ #
50
+ def create(entity_id, params = {})
51
+ http.post(
52
+ "/entities/#{entity_id}/deposit_accounts",
53
+ body: { deposit_account: params }
54
+ ) do |response|
55
+ respond_with_object(response, "deposit_account")
56
+ end
57
+ end
58
+
59
+ #
60
+ # Updates a deposit account of entity
61
+ #
62
+ # [API]
63
+ # Method: <tt>PUT /entities/:entity_id/deposit_accounts/:id</tt>
64
+ #
65
+ # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#put_update
66
+ #
67
+ def update(entity_id, id, params = {})
68
+ http.put(
69
+ "/entities/#{entity_id}/deposit_accounts/#{id}",
70
+ body: { deposit_account: params }
71
+ ) do |response|
72
+ respond_with_object(response, "deposit_account")
73
+ end
74
+ end
75
+
76
+ #
77
+ # Destroy a deposit account of entity
78
+ #
79
+ # [API]
80
+ # Method: <tt>DELETE /entities/:entity_id/deposit_accounts/:id</tt>
81
+ #
82
+ # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#delete_destroy
83
+ #
84
+ def destroy(entity_id, id)
85
+ http.delete(
86
+ "/entities/#{entity_id}/deposit_accounts/#{id}", body: {}
87
+ ) do |response|
88
+ respond_with_object(response, "deposit_account")
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end