basecrm 0.1.2 → 1.0.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 +4 -4
- data/LICENSE +2 -2
- data/README.md +273 -17
- data/lib/basecrm.rb +185 -1
- data/lib/basecrm/configuration.rb +59 -0
- data/lib/basecrm/envelope.rb +7 -0
- data/lib/basecrm/errors.rb +65 -0
- data/lib/basecrm/http_client.rb +91 -0
- data/lib/basecrm/middlewares/oauth_bearer_token.rb +18 -0
- data/lib/basecrm/middlewares/raise_error.rb +31 -0
- data/lib/basecrm/model.rb +6 -0
- data/lib/basecrm/models/account.rb +31 -0
- data/lib/basecrm/models/address.rb +22 -0
- data/lib/basecrm/models/associated_contact.rb +19 -0
- data/lib/basecrm/models/contact.rb +88 -0
- data/lib/basecrm/models/deal.rb +58 -0
- data/lib/basecrm/models/lead.rb +79 -0
- data/lib/basecrm/models/loss_reason.rb +22 -0
- data/lib/basecrm/models/note.rb +28 -0
- data/lib/basecrm/models/pipeline.rb +19 -0
- data/lib/basecrm/models/source.rb +22 -0
- data/lib/basecrm/models/stage.rb +34 -0
- data/lib/basecrm/models/tag.rb +25 -0
- data/lib/basecrm/models/task.rb +46 -0
- data/lib/basecrm/models/user.rb +31 -0
- data/lib/basecrm/paginated_resource.rb +32 -0
- data/lib/basecrm/services/accounts_service.rb +33 -0
- data/lib/basecrm/services/associated_contacts_service.rb +91 -0
- data/lib/basecrm/services/contacts_service.rb +138 -0
- data/lib/basecrm/services/deals_service.rb +137 -0
- data/lib/basecrm/services/leads_service.rb +140 -0
- data/lib/basecrm/services/loss_reasons_service.rb +133 -0
- data/lib/basecrm/services/notes_service.rb +134 -0
- data/lib/basecrm/services/pipelines_service.rb +50 -0
- data/lib/basecrm/services/sources_service.rb +133 -0
- data/lib/basecrm/services/stages_service.rb +52 -0
- data/lib/basecrm/services/tags_service.rb +132 -0
- data/lib/basecrm/services/tasks_service.rb +141 -0
- data/lib/basecrm/services/users_service.rb +83 -0
- data/lib/basecrm/version.rb +3 -0
- data/spec/factories/associated_contact.rb +14 -0
- data/spec/factories/contact.rb +27 -0
- data/spec/factories/deal.rb +17 -0
- data/spec/factories/lead.rb +26 -0
- data/spec/factories/loss_reason.rb +11 -0
- data/spec/factories/note.rb +13 -0
- data/spec/factories/source.rb +11 -0
- data/spec/factories/tag.rb +12 -0
- data/spec/factories/task.rb +15 -0
- data/spec/services/accounts_service_spec.rb +16 -0
- data/spec/services/associated_contacts_service_spec.rb +43 -0
- data/spec/services/contacts_service_spec.rb +58 -0
- data/spec/services/deals_service_spec.rb +58 -0
- data/spec/services/leads_service_spec.rb +58 -0
- data/spec/services/loss_reasons_service_spec.rb +58 -0
- data/spec/services/notes_service_spec.rb +58 -0
- data/spec/services/pipelines_service_spec.rb +23 -0
- data/spec/services/sources_service_spec.rb +58 -0
- data/spec/services/stages_service_spec.rb +23 -0
- data/spec/services/tags_service_spec.rb +58 -0
- data/spec/services/tasks_service_spec.rb +58 -0
- data/spec/services/users_service_spec.rb +39 -0
- data/spec/spec_helper.rb +24 -12
- data/spec/support/client_helpers.rb +19 -0
- metadata +160 -71
- data/.gitignore +0 -20
- data/.rspec +0 -2
- data/.travis.yml +0 -6
- data/Gemfile +0 -4
- data/Rakefile +0 -8
- data/basecrm.gemspec +0 -23
- data/lib/base_crm.rb +0 -24
- data/lib/base_crm/account.rb +0 -11
- data/lib/base_crm/api_client_ext.rb +0 -6
- data/lib/base_crm/config.rb +0 -21
- data/lib/base_crm/contact.rb +0 -44
- data/lib/base_crm/custom_fieldable.rb +0 -32
- data/lib/base_crm/deal.rb +0 -50
- data/lib/base_crm/forecasting.rb +0 -12
- data/lib/base_crm/lead.rb +0 -36
- data/lib/base_crm/note.rb +0 -15
- data/lib/base_crm/noteable.rb +0 -15
- data/lib/base_crm/related_object_scope.rb +0 -35
- data/lib/base_crm/resource.rb +0 -14
- data/lib/base_crm/session.rb +0 -48
- data/lib/base_crm/source.rb +0 -14
- data/lib/base_crm/task.rb +0 -16
- data/lib/base_crm/taskable.rb +0 -15
- data/lib/base_crm/version.rb +0 -3
- data/spec/base_crm/account_spec.rb +0 -20
- data/spec/base_crm/contact_spec.rb +0 -92
- data/spec/base_crm/deal_spec.rb +0 -138
- data/spec/base_crm/forecasting_spec.rb +0 -34
- data/spec/base_crm/lead_spec.rb +0 -63
- data/spec/base_crm/note_spec.rb +0 -20
- data/spec/base_crm/resource_mixin_spec.rb +0 -26
- data/spec/base_crm/session_spec.rb +0 -97
- data/spec/base_crm/source_spec.rb +0 -20
- data/spec/base_crm/task_spec.rb +0 -21
- data/spec/support/noteable_shared_examples.rb +0 -64
- data/spec/support/taskable_shared_examples.rb +0 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8112801481b6cff60fccc01b1218206447b30b35
|
4
|
+
data.tar.gz: b30ccfcdbfe04ea0a5b518c83e77d3d9c4631827
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 492f991f87a6d464938ba7f1ab986571283103afa40a3fc6ee6e9a4d0475c7783a172193d09df6e9ad7f87c6c428a95103a08947d333247422749c5974a4305f
|
7
|
+
data.tar.gz: aaba445b34861708afebec9697d8eab35160f55b2ffe2f0ac34086ca682858e4c7ee1cb685cc8a9b46fe37a5ae0c397753c55d5dd85a93d07aa7fef0b921da7a
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c)
|
1
|
+
Copyright (c) 2015 BaseCRM developers
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
#
|
1
|
+
# basecrm-ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
New and shiny client for the Base CRM API
|
3
|
+
BaseCRM Official API V2 library client for ruby
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
9
|
-
|
7
|
+
Make sure you have [rubygems](https://rubygems.org) installed.
|
8
|
+
|
9
|
+
The gem is available via Rubygems. To install, use the following command:
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
sudo gem install basecrm
|
13
13
|
```
|
14
14
|
|
15
|
-
If you use Bundler, put
|
15
|
+
If you use Bundler, put the line below in your Gemfile:
|
16
16
|
|
17
17
|
```ruby
|
18
18
|
gem 'basecrm'
|
@@ -21,25 +21,281 @@ gem 'basecrm'
|
|
21
21
|
To get the latest version, put this in your Gemfile:
|
22
22
|
|
23
23
|
```ruby
|
24
|
-
gem 'basecrm', :git => 'git://github.com/basecrm/basecrm.git'
|
24
|
+
gem 'basecrm', :git => 'git://github.com/basecrm/basecrm-ruby.git'
|
25
25
|
```
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
29
|
-
|
29
|
+
```ruby
|
30
|
+
require "basecrm"
|
31
|
+
|
32
|
+
# Then we instantiate a client (as shown below)
|
33
|
+
```
|
34
|
+
|
35
|
+
### Build a client
|
36
|
+
__Using this api without authentication gives an error__
|
30
37
|
|
31
38
|
```ruby
|
32
|
-
|
39
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
33
40
|
```
|
34
41
|
|
35
|
-
|
42
|
+
### Client Options
|
43
|
+
|
44
|
+
The following options are available while instantiating a client:
|
45
|
+
|
46
|
+
* __access_token__: Personal access token
|
47
|
+
* __base_url__: Base url for the api
|
48
|
+
* __user_agent__: Default user-agent for all requests
|
49
|
+
* __timeout__: Request timeout
|
50
|
+
* __verbose__: Verbose/debug mode
|
51
|
+
* __logger__: Logger used in verbose mode
|
52
|
+
|
53
|
+
### Architecture
|
54
|
+
|
55
|
+
The library follows few architectural principles you should understand before digging deeper.
|
56
|
+
1. Interactions with resources are done via service objects.
|
57
|
+
2. Service objects are exposed as methods on client instances.
|
58
|
+
3. Service objects expose resource-oriented actions.
|
59
|
+
4. Actions return Plain Old Ruby Objects.
|
60
|
+
|
61
|
+
For example, to interact with deals API you will use `DealsService`, which you can get if you call:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
65
|
+
client.deals # => BaseCRM::DealsService
|
66
|
+
```
|
67
|
+
|
68
|
+
When you want to fetch **all** resources you will use `#all` method which returns paginated resource (which implements Enumerable):
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
72
|
+
client.deals.all.map { |deal| deal.name } # => Array<String>
|
73
|
+
```
|
74
|
+
|
75
|
+
To retrieve list of resources and use filtering you will call `#where` method:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
client = BaseCRM::Client.new(accss_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
79
|
+
client.deals.where(organization_id: google.id, hot: true) # => Array<BaseCRM::Deal>
|
80
|
+
```
|
81
|
+
|
82
|
+
To find a resource by it's unique identifier use `#find` method:
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
86
|
+
client.deals.find(id) # => BaseCRM::Deal
|
87
|
+
```
|
88
|
+
|
89
|
+
When you'd like to create a resource, or update it's attributes you want to use either `#create` or `#update` methods. Both of them can take either Hash or a model class e.g. Deal instance. For example if you want to create a new deal you will call:
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
93
|
+
coffeeshop = client.contacts.where(name: "Coffee Shop")
|
94
|
+
|
95
|
+
deal = client.deals.create(name: "Website redesign", contact_id: coffeeshop.id)
|
96
|
+
deal.value = 1000
|
97
|
+
deal.currency = "USD"
|
98
|
+
|
99
|
+
client.deals.update(deal) # => BaseCRM::Deal
|
100
|
+
```
|
101
|
+
|
102
|
+
To destroy a resource use `#destroy` method:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
client = BaseCRM::Client.new(access_token: "<YOU_PERSONAL_ACCESS_TOKEN>")
|
106
|
+
client.deals.destroy(id) # => true
|
107
|
+
```
|
108
|
+
|
109
|
+
There other non-CRUD operations supported as well. Please contact corresponding service files for in-depth documentation.
|
110
|
+
|
111
|
+
### Full example
|
112
|
+
|
113
|
+
Create a new organization and after that change it's attributes (website).
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
117
|
+
lead = client.leads.create(organization_name: "Design service company")
|
118
|
+
|
119
|
+
lead.website = "http://www.designservices.com"
|
120
|
+
client.leads.update(lead)
|
121
|
+
```
|
122
|
+
|
123
|
+
## Resources and actions
|
124
|
+
|
125
|
+
Documentation for every action can be found in corresponding service files under `lib/basecrm/services` directory.
|
126
|
+
|
127
|
+
### Account
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
131
|
+
client.accounts # => BaseCRM::AccountsService
|
132
|
+
```
|
133
|
+
|
134
|
+
Actions:
|
135
|
+
* Retrieve account details - `client.accounts.self`
|
136
|
+
|
137
|
+
### AssociatedContact
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
141
|
+
client.associated_contacts # => BaseCRM::AssociatedContactsService
|
142
|
+
```
|
143
|
+
|
144
|
+
Actions:
|
145
|
+
* Retrieve deal's associated contacts - `client.associated_contacts.all`
|
146
|
+
* Create an associated contact - `client.associated_contacts.create`
|
147
|
+
* Remove an associated contact - `client.associated_contacts.destroy`
|
148
|
+
|
149
|
+
### Contact
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
153
|
+
client.contacts # => BaseCRM::ContactsService
|
154
|
+
```
|
155
|
+
|
156
|
+
Actions:
|
157
|
+
* Retrieve all contacts - `client.contacts.all`
|
158
|
+
* Create a contact - `client.contacts.create`
|
159
|
+
* Retrieve a single contact - `client.contacts.find`
|
160
|
+
* Update a contact - `client.contacts.update`
|
161
|
+
* Delete a contact - `client.contacts.destroy`
|
162
|
+
|
163
|
+
### Deal
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
167
|
+
client.deals # => BaseCRM::DealsService
|
168
|
+
```
|
169
|
+
|
170
|
+
Actions:
|
171
|
+
* Retrieve all deals - `client.deals.all`
|
172
|
+
* Create a deal - `client.deals.create`
|
173
|
+
* Retrieve a single deal - `client.deals.find`
|
174
|
+
* Update a deal - `client.deals.update`
|
175
|
+
* Delete a deal - `client.deals.destroy`
|
176
|
+
|
177
|
+
### Lead
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
181
|
+
client.leads # => BaseCRM::LeadsService
|
182
|
+
```
|
183
|
+
|
184
|
+
Actions:
|
185
|
+
* Retrieve all leads - `client.leads.all`
|
186
|
+
* Create a lead - `client.leads.create`
|
187
|
+
* Retrieve a single lead - `client.leads.find`
|
188
|
+
* Update a lead - `client.leads.update`
|
189
|
+
* Delete a lead - `client.leads.destroy`
|
190
|
+
|
191
|
+
### LossReason
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
195
|
+
client.loss_reasons # => BaseCRM::LossReasonsService
|
196
|
+
```
|
197
|
+
|
198
|
+
Actions:
|
199
|
+
* Retrieve all reasons - `client.loss_reasons.all`
|
200
|
+
* Create a loss reason - `client.loss_reasons.create`
|
201
|
+
* Retrieve a single reason - `client.loss_reasons.find`
|
202
|
+
* Update a loss reason - `client.loss_reasons.update`
|
203
|
+
* Delete a reason - `client.loss_reasons.destroy`
|
204
|
+
|
205
|
+
### Note
|
206
|
+
|
207
|
+
```ruby
|
208
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
209
|
+
client.notes # => BaseCRM::NotesService
|
210
|
+
```
|
211
|
+
|
212
|
+
Actions:
|
213
|
+
* Retrieve all notes - `client.notes.all`
|
214
|
+
* Create a note - `client.notes.create`
|
215
|
+
* Retrieve a single note - `client.notes.find`
|
216
|
+
* Update a note - `client.notes.update`
|
217
|
+
* Delete a note - `client.notes.destroy`
|
218
|
+
|
219
|
+
### Pipeline
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
223
|
+
client.pipelines # => BaseCRM::PipelinesService
|
224
|
+
```
|
225
|
+
|
226
|
+
Actions:
|
227
|
+
* Retrieve all pipelines - `client.pipelines.all`
|
228
|
+
|
229
|
+
### Source
|
230
|
+
|
231
|
+
```ruby
|
232
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
233
|
+
client.sources # => BaseCRM::SourcesService
|
234
|
+
```
|
235
|
+
|
236
|
+
Actions:
|
237
|
+
* Retrieve all sources - `client.sources.all`
|
238
|
+
* Create a source - `client.sources.create`
|
239
|
+
* Retrieve a single source - `client.sources.find`
|
240
|
+
* Update a source - `client.sources.update`
|
241
|
+
* Delete a source - `client.sources.destroy`
|
242
|
+
|
243
|
+
### Stage
|
244
|
+
|
245
|
+
```ruby
|
246
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
247
|
+
client.stages # => BaseCRM::StagesService
|
248
|
+
```
|
249
|
+
|
250
|
+
Actions:
|
251
|
+
* Retrieve all stages - `client.stages.all`
|
252
|
+
|
253
|
+
### Tag
|
254
|
+
|
255
|
+
```ruby
|
256
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
257
|
+
client.tags # => BaseCRM::TagsService
|
258
|
+
```
|
259
|
+
|
260
|
+
Actions:
|
261
|
+
* Retrieve all tags - `client.tags.all`
|
262
|
+
* Create a tag - `client.tags.create`
|
263
|
+
* Retrieve a single tag - `client.tags.find`
|
264
|
+
* Update a tag - `client.tags.update`
|
265
|
+
* Delete a tag - `client.tags.destroy`
|
266
|
+
|
267
|
+
### Task
|
268
|
+
|
269
|
+
```ruby
|
270
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
271
|
+
client.tasks # => BaseCRM::TasksService
|
272
|
+
```
|
273
|
+
|
274
|
+
Actions:
|
275
|
+
* Retrieve all tasks - `client.tasks.all`
|
276
|
+
* Create a task - `client.tasks.create`
|
277
|
+
* Retrieve a single task - `client.tasks.find`
|
278
|
+
* Update a task - `client.tasks.update`
|
279
|
+
* Delete a task - `client.tasks.destroy`
|
280
|
+
|
281
|
+
### User
|
282
|
+
|
283
|
+
```ruby
|
284
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONL_ACCESS_TOKEN>")
|
285
|
+
client.users # => BaseCRM::UsersService
|
286
|
+
```
|
287
|
+
|
288
|
+
Actions:
|
289
|
+
* Retrieve all users - `client.users.all`
|
290
|
+
* Retrieve a single user - `client.users.find`
|
291
|
+
* Retrieve an authenticating user - `client.users.self`
|
292
|
+
|
36
293
|
|
37
|
-
|
294
|
+
## License
|
295
|
+
MIT
|
38
296
|
|
39
|
-
##
|
297
|
+
## Bug Reports
|
298
|
+
Report [here](https://github.com/basecrm/basecrm-ruby/issues).
|
40
299
|
|
41
|
-
|
42
|
-
|
43
|
-
3. Commit your changes (`git commit -am 'Added some feature'`)
|
44
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
45
|
-
5. Create new Pull Request
|
300
|
+
## Contact
|
301
|
+
BaseCRM developers (developers@getbase.com)
|
data/lib/basecrm.rb
CHANGED
@@ -1,2 +1,186 @@
|
|
1
|
-
require
|
1
|
+
require 'json'
|
2
|
+
require 'faraday'
|
2
3
|
|
4
|
+
require 'basecrm/version'
|
5
|
+
require 'basecrm/errors'
|
6
|
+
require 'basecrm/envelope'
|
7
|
+
require 'basecrm/configuration'
|
8
|
+
require 'basecrm/http_client'
|
9
|
+
|
10
|
+
require 'basecrm/model'
|
11
|
+
require 'basecrm/models/account'
|
12
|
+
require 'basecrm/models/address'
|
13
|
+
require 'basecrm/models/associated_contact'
|
14
|
+
require 'basecrm/models/contact'
|
15
|
+
require 'basecrm/models/deal'
|
16
|
+
require 'basecrm/models/lead'
|
17
|
+
require 'basecrm/models/loss_reason'
|
18
|
+
require 'basecrm/models/note'
|
19
|
+
require 'basecrm/models/pipeline'
|
20
|
+
require 'basecrm/models/source'
|
21
|
+
require 'basecrm/models/stage'
|
22
|
+
require 'basecrm/models/tag'
|
23
|
+
require 'basecrm/models/task'
|
24
|
+
require 'basecrm/models/user'
|
25
|
+
|
26
|
+
require 'basecrm/paginated_resource'
|
27
|
+
require 'basecrm/services/accounts_service'
|
28
|
+
require 'basecrm/services/associated_contacts_service'
|
29
|
+
require 'basecrm/services/contacts_service'
|
30
|
+
require 'basecrm/services/deals_service'
|
31
|
+
require 'basecrm/services/leads_service'
|
32
|
+
require 'basecrm/services/loss_reasons_service'
|
33
|
+
require 'basecrm/services/notes_service'
|
34
|
+
require 'basecrm/services/pipelines_service'
|
35
|
+
require 'basecrm/services/sources_service'
|
36
|
+
require 'basecrm/services/stages_service'
|
37
|
+
require 'basecrm/services/tags_service'
|
38
|
+
require 'basecrm/services/tasks_service'
|
39
|
+
require 'basecrm/services/users_service'
|
40
|
+
|
41
|
+
module BaseCRM
|
42
|
+
class Client
|
43
|
+
attr_reader :config
|
44
|
+
attr_reader :http_client
|
45
|
+
|
46
|
+
# Instantiate a new BaseCRM API V2 client
|
47
|
+
#
|
48
|
+
# @param options [Hash] Client options
|
49
|
+
# @option options [String] :access_token Personal access token
|
50
|
+
# @option options [String] :base_url (https://api.getbase.com) Base url for the api
|
51
|
+
# @option options [String] :use_agent (BaseCRM/v2 Ruby/{Version}) Client user agent
|
52
|
+
# @option options [Integer] :timeout (30) Request timeout
|
53
|
+
# @option options [Boolean] :verbose (false) Verbose/debug mode
|
54
|
+
# @option options [Logger] :logger (STDOUT) Logged used in verbose mode
|
55
|
+
#
|
56
|
+
# @raise [ConfigurationError] if no access token provided
|
57
|
+
# @raise [ConfigurationError] if provided access token is invalid - contains disallowed characters
|
58
|
+
# @raise [ConfigurationError] if provided access token is invalid - has invalid length
|
59
|
+
# @raise [ConfigurationError] if provided base url is invalid
|
60
|
+
#
|
61
|
+
# @return [Client] New client
|
62
|
+
def initialize(options={})
|
63
|
+
@config = Configuration.new(options)
|
64
|
+
@config.validate!
|
65
|
+
|
66
|
+
@http_client = HttpClient.new(@config)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Access all Accounts related actions.
|
70
|
+
# @see AccountsService
|
71
|
+
# @see Account
|
72
|
+
#
|
73
|
+
# @return [AccountsService] Service object for resources.
|
74
|
+
def accounts
|
75
|
+
@accounts ||= AccountsService.new(@http_client)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Access all AssociatedContacts related actions.
|
79
|
+
# @see AssociatedContactsService
|
80
|
+
# @see AssociatedContact
|
81
|
+
#
|
82
|
+
# @return [AssociatedContactsService] Service object for resources.
|
83
|
+
def associated_contacts
|
84
|
+
@associated_contacts ||= AssociatedContactsService.new(@http_client)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Access all Contacts related actions.
|
88
|
+
# @see ContactsService
|
89
|
+
# @see Contact
|
90
|
+
#
|
91
|
+
# @return [ContactsService] Service object for resources.
|
92
|
+
def contacts
|
93
|
+
@contacts ||= ContactsService.new(@http_client)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Access all Deals related actions.
|
97
|
+
# @see DealsService
|
98
|
+
# @see Deal
|
99
|
+
#
|
100
|
+
# @return [DealsService] Service object for resources.
|
101
|
+
def deals
|
102
|
+
@deals ||= DealsService.new(@http_client)
|
103
|
+
end
|
104
|
+
|
105
|
+
# Access all Leads related actions.
|
106
|
+
# @see LeadsService
|
107
|
+
# @see Lead
|
108
|
+
#
|
109
|
+
# @return [LeadsService] Service object for resources.
|
110
|
+
def leads
|
111
|
+
@leads ||= LeadsService.new(@http_client)
|
112
|
+
end
|
113
|
+
|
114
|
+
# Access all LossReasons related actions.
|
115
|
+
# @see LossReasonsService
|
116
|
+
# @see LossReason
|
117
|
+
#
|
118
|
+
# @return [LossReasonsService] Service object for resources.
|
119
|
+
def loss_reasons
|
120
|
+
@loss_reasons ||= LossReasonsService.new(@http_client)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Access all Notes related actions.
|
124
|
+
# @see NotesService
|
125
|
+
# @see Note
|
126
|
+
#
|
127
|
+
# @return [NotesService] Service object for resources.
|
128
|
+
def notes
|
129
|
+
@notes ||= NotesService.new(@http_client)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Access all Pipelines related actions.
|
133
|
+
# @see PipelinesService
|
134
|
+
# @see Pipeline
|
135
|
+
#
|
136
|
+
# @return [PipelinesService] Service object for resources.
|
137
|
+
def pipelines
|
138
|
+
@pipelines ||= PipelinesService.new(@http_client)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Access all Sources related actions.
|
142
|
+
# @see SourcesService
|
143
|
+
# @see Source
|
144
|
+
#
|
145
|
+
# @return [SourcesService] Service object for resources.
|
146
|
+
def sources
|
147
|
+
@sources ||= SourcesService.new(@http_client)
|
148
|
+
end
|
149
|
+
|
150
|
+
# Access all Stages related actions.
|
151
|
+
# @see StagesService
|
152
|
+
# @see Stage
|
153
|
+
#
|
154
|
+
# @return [StagesService] Service object for resources.
|
155
|
+
def stages
|
156
|
+
@stages ||= StagesService.new(@http_client)
|
157
|
+
end
|
158
|
+
|
159
|
+
# Access all Tags related actions.
|
160
|
+
# @see TagsService
|
161
|
+
# @see Tag
|
162
|
+
#
|
163
|
+
# @return [TagsService] Service object for resources.
|
164
|
+
def tags
|
165
|
+
@tags ||= TagsService.new(@http_client)
|
166
|
+
end
|
167
|
+
|
168
|
+
# Access all Tasks related actions.
|
169
|
+
# @see TasksService
|
170
|
+
# @see Task
|
171
|
+
#
|
172
|
+
# @return [TasksService] Service object for resources.
|
173
|
+
def tasks
|
174
|
+
@tasks ||= TasksService.new(@http_client)
|
175
|
+
end
|
176
|
+
|
177
|
+
# Access all Users related actions.
|
178
|
+
# @see UsersService
|
179
|
+
# @see User
|
180
|
+
#
|
181
|
+
# @return [UsersService] Service object for resources.
|
182
|
+
def users
|
183
|
+
@users ||= UsersService.new(@http_client)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|