basecrm 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +2 -2
  3. data/README.md +273 -17
  4. data/lib/basecrm.rb +185 -1
  5. data/lib/basecrm/configuration.rb +59 -0
  6. data/lib/basecrm/envelope.rb +7 -0
  7. data/lib/basecrm/errors.rb +65 -0
  8. data/lib/basecrm/http_client.rb +91 -0
  9. data/lib/basecrm/middlewares/oauth_bearer_token.rb +18 -0
  10. data/lib/basecrm/middlewares/raise_error.rb +31 -0
  11. data/lib/basecrm/model.rb +6 -0
  12. data/lib/basecrm/models/account.rb +31 -0
  13. data/lib/basecrm/models/address.rb +22 -0
  14. data/lib/basecrm/models/associated_contact.rb +19 -0
  15. data/lib/basecrm/models/contact.rb +88 -0
  16. data/lib/basecrm/models/deal.rb +58 -0
  17. data/lib/basecrm/models/lead.rb +79 -0
  18. data/lib/basecrm/models/loss_reason.rb +22 -0
  19. data/lib/basecrm/models/note.rb +28 -0
  20. data/lib/basecrm/models/pipeline.rb +19 -0
  21. data/lib/basecrm/models/source.rb +22 -0
  22. data/lib/basecrm/models/stage.rb +34 -0
  23. data/lib/basecrm/models/tag.rb +25 -0
  24. data/lib/basecrm/models/task.rb +46 -0
  25. data/lib/basecrm/models/user.rb +31 -0
  26. data/lib/basecrm/paginated_resource.rb +32 -0
  27. data/lib/basecrm/services/accounts_service.rb +33 -0
  28. data/lib/basecrm/services/associated_contacts_service.rb +91 -0
  29. data/lib/basecrm/services/contacts_service.rb +138 -0
  30. data/lib/basecrm/services/deals_service.rb +137 -0
  31. data/lib/basecrm/services/leads_service.rb +140 -0
  32. data/lib/basecrm/services/loss_reasons_service.rb +133 -0
  33. data/lib/basecrm/services/notes_service.rb +134 -0
  34. data/lib/basecrm/services/pipelines_service.rb +50 -0
  35. data/lib/basecrm/services/sources_service.rb +133 -0
  36. data/lib/basecrm/services/stages_service.rb +52 -0
  37. data/lib/basecrm/services/tags_service.rb +132 -0
  38. data/lib/basecrm/services/tasks_service.rb +141 -0
  39. data/lib/basecrm/services/users_service.rb +83 -0
  40. data/lib/basecrm/version.rb +3 -0
  41. data/spec/factories/associated_contact.rb +14 -0
  42. data/spec/factories/contact.rb +27 -0
  43. data/spec/factories/deal.rb +17 -0
  44. data/spec/factories/lead.rb +26 -0
  45. data/spec/factories/loss_reason.rb +11 -0
  46. data/spec/factories/note.rb +13 -0
  47. data/spec/factories/source.rb +11 -0
  48. data/spec/factories/tag.rb +12 -0
  49. data/spec/factories/task.rb +15 -0
  50. data/spec/services/accounts_service_spec.rb +16 -0
  51. data/spec/services/associated_contacts_service_spec.rb +43 -0
  52. data/spec/services/contacts_service_spec.rb +58 -0
  53. data/spec/services/deals_service_spec.rb +58 -0
  54. data/spec/services/leads_service_spec.rb +58 -0
  55. data/spec/services/loss_reasons_service_spec.rb +58 -0
  56. data/spec/services/notes_service_spec.rb +58 -0
  57. data/spec/services/pipelines_service_spec.rb +23 -0
  58. data/spec/services/sources_service_spec.rb +58 -0
  59. data/spec/services/stages_service_spec.rb +23 -0
  60. data/spec/services/tags_service_spec.rb +58 -0
  61. data/spec/services/tasks_service_spec.rb +58 -0
  62. data/spec/services/users_service_spec.rb +39 -0
  63. data/spec/spec_helper.rb +24 -12
  64. data/spec/support/client_helpers.rb +19 -0
  65. metadata +160 -71
  66. data/.gitignore +0 -20
  67. data/.rspec +0 -2
  68. data/.travis.yml +0 -6
  69. data/Gemfile +0 -4
  70. data/Rakefile +0 -8
  71. data/basecrm.gemspec +0 -23
  72. data/lib/base_crm.rb +0 -24
  73. data/lib/base_crm/account.rb +0 -11
  74. data/lib/base_crm/api_client_ext.rb +0 -6
  75. data/lib/base_crm/config.rb +0 -21
  76. data/lib/base_crm/contact.rb +0 -44
  77. data/lib/base_crm/custom_fieldable.rb +0 -32
  78. data/lib/base_crm/deal.rb +0 -50
  79. data/lib/base_crm/forecasting.rb +0 -12
  80. data/lib/base_crm/lead.rb +0 -36
  81. data/lib/base_crm/note.rb +0 -15
  82. data/lib/base_crm/noteable.rb +0 -15
  83. data/lib/base_crm/related_object_scope.rb +0 -35
  84. data/lib/base_crm/resource.rb +0 -14
  85. data/lib/base_crm/session.rb +0 -48
  86. data/lib/base_crm/source.rb +0 -14
  87. data/lib/base_crm/task.rb +0 -16
  88. data/lib/base_crm/taskable.rb +0 -15
  89. data/lib/base_crm/version.rb +0 -3
  90. data/spec/base_crm/account_spec.rb +0 -20
  91. data/spec/base_crm/contact_spec.rb +0 -92
  92. data/spec/base_crm/deal_spec.rb +0 -138
  93. data/spec/base_crm/forecasting_spec.rb +0 -34
  94. data/spec/base_crm/lead_spec.rb +0 -63
  95. data/spec/base_crm/note_spec.rb +0 -20
  96. data/spec/base_crm/resource_mixin_spec.rb +0 -26
  97. data/spec/base_crm/session_spec.rb +0 -97
  98. data/spec/base_crm/source_spec.rb +0 -20
  99. data/spec/base_crm/task_spec.rb +0 -21
  100. data/spec/support/noteable_shared_examples.rb +0 -64
  101. data/spec/support/taskable_shared_examples.rb +0 -69
@@ -0,0 +1,58 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Deal < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time that the deal was created in UTC (ISO8601 format).
7
+ # attr_reader :created_at
8
+ # @!attribute [r] creator_id
9
+ # @return [Integer] Unique identifier of the user who created the deal.
10
+ # attr_reader :creator_id
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the deal.
13
+ # attr_reader :id
14
+ # @!attribute [r] organization_id
15
+ # @return [Integer] Unique identifier of an organization.
16
+ # attr_reader :organization_id
17
+ # @!attribute [r] updated_at
18
+ # @return [DateTime] Date and time of the last update on the deal in UTC (ISO8601 format).
19
+ # attr_reader :updated_at
20
+
21
+ # @!attribute [rw] contact_id
22
+ # @return [Integer] Unique identifier of a primary contact.
23
+ # attr_accessor :contact_id
24
+ # @!attribute [rw] currency
25
+ # @return [String] Currency of the deal, specified in 3-character currency code (ISO4217) format.
26
+ # attr_accessor :currency
27
+ # @!attribute [rw] custom_fields
28
+ # @return [Hash] Custom fields are key-value data attached to a deal. See more at [Custom Fields](/docs/rest/articles/requests#custom_fields).
29
+ # attr_accessor :custom_fields
30
+ # @!attribute [rw] dropbox_email
31
+ # @return [String] Dropbox email connected with the deal.
32
+ # attr_accessor :dropbox_email
33
+ # @!attribute [rw] hot
34
+ # @return [Boolean] Indicator of whether or not the deal is hot.
35
+ # attr_accessor :hot
36
+ # @!attribute [rw] loss_reason_id
37
+ # @return [Integer] Reason why the deal was lost.
38
+ # attr_accessor :loss_reason_id
39
+ # @!attribute [rw] name
40
+ # @return [String] Name of the deal.
41
+ # attr_accessor :name
42
+ # @!attribute [rw] owner_id
43
+ # @return [Integer] Unique identifier of the user that the deal is assigned to.
44
+ # attr_accessor :owner_id
45
+ # @!attribute [rw] source_id
46
+ # @return [Integer] Unique identifier of the Source.
47
+ # attr_accessor :source_id
48
+ # @!attribute [rw] stage_id
49
+ # @return [Integer] Unique identifier of the deal's current stage in the pipeline.
50
+ # attr_accessor :stage_id
51
+ # @!attribute [rw] tags
52
+ # @return [Array<String>] An array of tags for a deal. See more at [Tags](/docs/rest/articles/requests#tags).
53
+ # attr_accessor :tags
54
+ # @!attribute [rw] value
55
+ # @return [Integer] Value of the deal in a currency specified in the `currency` field.
56
+ # attr_accessor :value
57
+ end
58
+ end
@@ -0,0 +1,79 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Lead < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time of the creation in UTC (ISO8601 format).
7
+ # attr_reader :created_at
8
+ # @!attribute [r] creator_id
9
+ # @return [Integer] Unique identifier of the user who created the lead.
10
+ # attr_reader :creator_id
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the lead.
13
+ # attr_reader :id
14
+ # @!attribute [r] updated_at
15
+ # @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
16
+ # attr_reader :updated_at
17
+
18
+ # @!attribute [rw] address
19
+ # @return [Address]
20
+ # attr_accessor :address
21
+ # @!attribute [rw] custom_fields
22
+ # @return [Hash] Custom fields are a either a single key-value pair attached to a lead or a set of key-value pairs attached to a lead. See more at [Custom Fields](/docs/rest/articles/requests#custom_fields).
23
+ # attr_accessor :custom_fields
24
+ # @!attribute [rw] description
25
+ # @return [String] Lead description.
26
+ # attr_accessor :description
27
+ # @!attribute [rw] email
28
+ # @return [String] Lead's email.
29
+ # attr_accessor :email
30
+ # @!attribute [rw] facebook
31
+ # @return [String] Lead's Facebook nickname.
32
+ # attr_accessor :facebook
33
+ # @!attribute [rw] fax
34
+ # @return [String] Lead's fax number.
35
+ # attr_accessor :fax
36
+ # @!attribute [rw] first_name
37
+ # @return [String] First name of the lead.
38
+ # attr_accessor :first_name
39
+ # @!attribute [rw] industry
40
+ # @return [String] Organization's industry.
41
+ # attr_accessor :industry
42
+ # @!attribute [rw] last_name
43
+ # @return [String] Last name of the lead. Required unless `organization_name` field is provided.
44
+ # attr_accessor :last_name
45
+ # @!attribute [rw] linkedin
46
+ # @return [String] Lead's Linkedin nickname.
47
+ # attr_accessor :linkedin
48
+ # @!attribute [rw] mobile
49
+ # @return [String] Lead's mobile phone number.
50
+ # attr_accessor :mobile
51
+ # @!attribute [rw] organization_name
52
+ # @return [String] Organization name of the lead. Required unless `last_name` field is provided.
53
+ # attr_accessor :organization_name
54
+ # @!attribute [rw] owner_id
55
+ # @return [Integer] Unique identifier of the user who currently owns the lead.
56
+ # attr_accessor :owner_id
57
+ # @!attribute [rw] phone
58
+ # @return [String] Lead's phone number.
59
+ # attr_accessor :phone
60
+ # @!attribute [rw] skype
61
+ # @return [String] Lead's Skype nickname.
62
+ # attr_accessor :skype
63
+ # @!attribute [rw] status
64
+ # @return [String] Status of the lead.
65
+ # attr_accessor :status
66
+ # @!attribute [rw] tags
67
+ # @return [Array<String>] An array of tags for a lead. See more at [Tags](/docs/rest/articles/requests#tags).
68
+ # attr_accessor :tags
69
+ # @!attribute [rw] title
70
+ # @return [String] Job title of the lead.
71
+ # attr_accessor :title
72
+ # @!attribute [rw] twitter
73
+ # @return [String] Lead's Twitter handle.
74
+ # attr_accessor :twitter
75
+ # @!attribute [rw] website
76
+ # @return [String] Lead's website.
77
+ # attr_accessor :website
78
+ end
79
+ end
@@ -0,0 +1,22 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class LossReason < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time of creation in UTC ISO8601 format.
7
+ # attr_reader :created_at
8
+ # @!attribute [r] creator_id
9
+ # @return [Integer] Unique identifier of the user the loss reason was created by.
10
+ # attr_reader :creator_id
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the loss reason.
13
+ # attr_reader :id
14
+ # @!attribute [r] updated_at
15
+ # @return [DateTime] Date and time of the last update in UTC ISO8601 format.
16
+ # attr_reader :updated_at
17
+
18
+ # @!attribute [rw] name
19
+ # @return [String] Human-friendly loss reason explanation.
20
+ # attr_accessor :name
21
+ end
22
+ end
@@ -0,0 +1,28 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Note < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time of creation in UTC (ISO8601 format).
7
+ # attr_reader :created_at
8
+ # @!attribute [r] creator_id
9
+ # @return [Integer] Unique identifier of the user that created the note.
10
+ # attr_reader :creator_id
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the note.
13
+ # attr_reader :id
14
+ # @!attribute [r] updated_at
15
+ # @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
16
+ # attr_reader :updated_at
17
+
18
+ # @!attribute [rw] content
19
+ # @return [String] Content of the note.
20
+ # attr_accessor :content
21
+ # @!attribute [rw] resource_id
22
+ # @return [Integer] Unique identifier of the resource the note is attached to.
23
+ # attr_accessor :resource_id
24
+ # @!attribute [rw] resource_type
25
+ # @return [String] Type name of the resource the note is attached to.
26
+ # attr_accessor :resource_type
27
+ end
28
+ end
@@ -0,0 +1,19 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Pipeline < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time of creation in UTC ISO8601 format.
7
+ # attr_reader :created_at
8
+ # @!attribute [r] id
9
+ # @return [Integer] The unique identifier of the pipeline.
10
+ # attr_reader :id
11
+ # @!attribute [r] updated_at
12
+ # @return [DateTime] Date and time of last update in UTC ISO8601 format.
13
+ # attr_reader :updated_at
14
+
15
+ # @!attribute [rw] name
16
+ # @return [String] Human-friendly name of the pipeline.
17
+ # attr_accessor :name
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Source < Model
5
+ # @!attribute [r] created_at
6
+ # @return [String] Date and time of creation in UTC (ISO 8601 format).
7
+ # attr_reader :created_at
8
+ # @!attribute [r] creator_id
9
+ # @return [Integer] Unique identifier of the user that created the source.
10
+ # attr_reader :creator_id
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the deal source.
13
+ # attr_reader :id
14
+ # @!attribute [r] updated_at
15
+ # @return [String] Date and time of the last update in UTC (ISO 8601 format).
16
+ # attr_reader :updated_at
17
+
18
+ # @!attribute [rw] name
19
+ # @return [String] Name of the source.
20
+ # attr_accessor :name
21
+ end
22
+ end
@@ -0,0 +1,34 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Stage < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time of creation in UTC ISO8601 format.
7
+ # attr_reader :created_at
8
+ # @!attribute [r] id
9
+ # @return [Integer] The unique identifier of the stage.
10
+ # attr_reader :id
11
+ # @!attribute [r] updated_at
12
+ # @return [DateTime] Date and time of last update in UTC ISO8601 format.
13
+ # attr_reader :updated_at
14
+
15
+ # @!attribute [rw] active
16
+ # @return [Boolean] Indicator whether or not the stage contains finalized deals.
17
+ # attr_accessor :active
18
+ # @!attribute [rw] category
19
+ # @return [String] The unique category name of the stage.
20
+ # attr_accessor :category
21
+ # @!attribute [rw] likelihood
22
+ # @return [Integer] The likelihood that a deal will be won, set for the stage as percentage.
23
+ # attr_accessor :likelihood
24
+ # @!attribute [rw] name
25
+ # @return [String] Human-friendly name of the stage.
26
+ # attr_accessor :name
27
+ # @!attribute [rw] pipeline_id
28
+ # @return [Integer] Unique identifier of the pipeline that contains this stage.
29
+ # attr_accessor :pipeline_id
30
+ # @!attribute [rw] position
31
+ # @return [Integer] The stage's position in the pipeline.
32
+ # attr_accessor :position
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Tag < Model
5
+ # @!attribute [r] created_at
6
+ # @return [DateTime] Date and time of creation in UTC (ISO8601 format).
7
+ # attr_reader :created_at
8
+ # @!attribute [r] creator_id
9
+ # @return [Integer] User ID of the tag's creator.
10
+ # attr_reader :creator_id
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the tag.
13
+ # attr_reader :id
14
+ # @!attribute [r] updated_at
15
+ # @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
16
+ # attr_reader :updated_at
17
+
18
+ # @!attribute [rw] name
19
+ # @return [String] Name of the tag.
20
+ # attr_accessor :name
21
+ # @!attribute [rw] resource_type
22
+ # @return [String] Type name of the resource the tag is attached to.
23
+ # attr_accessor :resource_type
24
+ end
25
+ end
@@ -0,0 +1,46 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class Task < Model
5
+ # @!attribute [r] completed_at
6
+ # @return [DateTime] Date and time of the task's completion in UTC (ISO8601 format).
7
+ # attr_reader :completed_at
8
+ # @!attribute [r] created_at
9
+ # @return [DateTime] Date and time of task creation in UTC (ISO8601 format).
10
+ # attr_reader :created_at
11
+ # @!attribute [r] creator_id
12
+ # @return [Integer] Unique identifier of the user who created the task.
13
+ # attr_reader :creator_id
14
+ # @!attribute [r] id
15
+ # @return [Integer] Unique identifier of the task.
16
+ # attr_reader :id
17
+ # @!attribute [r] overdue
18
+ # @return [Boolean] Indicator for whether the task has passed the `due_date` or not.
19
+ # attr_reader :overdue
20
+ # @!attribute [r] updated_at
21
+ # @return [DateTime] Date and time of the last update to the task in UTC (ISO8601 format).
22
+ # attr_reader :updated_at
23
+
24
+ # @!attribute [rw] completed
25
+ # @return [Boolean] Indicator of whether the task is completed or not.
26
+ # attr_accessor :completed
27
+ # @!attribute [rw] content
28
+ # @return [String] Content of the task.
29
+ # attr_accessor :content
30
+ # @!attribute [rw] due_date
31
+ # @return [DateTime] Date and time of creation in UTC (ISO8601 format).
32
+ # attr_accessor :due_date
33
+ # @!attribute [rw] owner_id
34
+ # @return [Integer] Unique identifier of the user the task is assigned to.
35
+ # attr_accessor :owner_id
36
+ # @!attribute [rw] remind_at
37
+ # @return [DateTime] Date and time that we should send you a reminder in UTC (ISO8601 format).
38
+ # attr_accessor :remind_at
39
+ # @!attribute [rw] resource_id
40
+ # @return [Integer] Unique identifier of the resource the task is attached to.
41
+ # attr_accessor :resource_id
42
+ # @!attribute [rw] resource_type
43
+ # @return [String] Name of the resource type the task is attached to.
44
+ # attr_accessor :resource_type
45
+ end
46
+ end
@@ -0,0 +1,31 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class User < Model
5
+ # @!attribute [r] confirmed
6
+ # @return [Boolean] Indicates whether the user's account has been confirmed or not.
7
+ # attr_reader :confirmed
8
+ # @!attribute [r] created_at
9
+ # @return [DateTime] Date and time of creation in UTC (ISO8601 format).
10
+ # attr_reader :created_at
11
+ # @!attribute [r] id
12
+ # @return [Integer] Unique identifier of the user.
13
+ # attr_reader :id
14
+ # @!attribute [r] role
15
+ # @return [String] Role of the user.
16
+ # attr_reader :role
17
+ # @!attribute [r] status
18
+ # @return [String] Status of the user's account. Usually `active`.
19
+ # attr_reader :status
20
+ # @!attribute [r] updated_at
21
+ # @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
22
+ # attr_reader :updated_at
23
+
24
+ # @!attribute [rw] email
25
+ # @return [String] Email address of the user.
26
+ # attr_accessor :email
27
+ # @!attribute [rw] name
28
+ # @return [String] Full name of the user.
29
+ # attr_accessor :name
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ module BaseCRM
2
+ class PaginatedResource
3
+ include Enumerable
4
+
5
+ attr_reader :current_page
6
+
7
+ def initialize(service, *args)
8
+ raise TypeError unless service.respond_to?(:where)
9
+
10
+ @service = service
11
+ @args = args
12
+ @options = args.last.kind_of?(Hash) ? args.pop : {}
13
+ end
14
+
15
+ def each(&block)
16
+ return to_enum(:each) unless block_given?
17
+
18
+ current_page = 1
19
+ per_page = 25
20
+
21
+ search_options = @options.merge(page: current_page, per_page: per_page)
22
+
23
+ until (resources = @service.where(*@args, search_options)).empty?
24
+ resources.each(&block)
25
+ current_page += 1
26
+ search_options[:page] = current_page
27
+ end
28
+
29
+ self
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ # WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2
+
3
+ module BaseCRM
4
+ class AccountsService
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ # Retrieve account details
10
+ #
11
+ # get '/accounts/self'
12
+ #
13
+ # Returns detailed information about your account
14
+ #
15
+ # @return [Account] Resource object.
16
+ def self
17
+ _, _, root = @client.get("/accounts/self")
18
+ Account.new(root[:data])
19
+ end
20
+
21
+
22
+ private
23
+ def validate_type!(account)
24
+ raise TypeError unless account.is_a?(Account) || account.is_a?(Hash)
25
+ end
26
+
27
+ def extract_params!(account, *args)
28
+ params = account.to_h.select{ |k, _| args.include?(k) }
29
+ raise ArgumentError, "one of required attributes is missing. Expected: #{args.join(',')}" if params.count != args.length
30
+ params
31
+ end
32
+ end
33
+ end