dotloop 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +44 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +109 -0
- data/Rakefile +6 -0
- data/bin/console +10 -0
- data/bin/setup +8 -0
- data/certs/shanedavies.pem +21 -0
- data/dotloop.gemspec +42 -0
- data/lib/dotloop.rb +42 -0
- data/lib/dotloop/admin.rb +24 -0
- data/lib/dotloop/client.rb +89 -0
- data/lib/dotloop/document.rb +26 -0
- data/lib/dotloop/document_activity.rb +24 -0
- data/lib/dotloop/employee.rb +14 -0
- data/lib/dotloop/folder.rb +14 -0
- data/lib/dotloop/loop.rb +62 -0
- data/lib/dotloop/loop_activity.rb +24 -0
- data/lib/dotloop/models/admin.rb +13 -0
- data/lib/dotloop/models/buying_brokerage.rb +15 -0
- data/lib/dotloop/models/document.rb +17 -0
- data/lib/dotloop/models/document_activity.rb +9 -0
- data/lib/dotloop/models/employee.rb +15 -0
- data/lib/dotloop/models/financials.rb +13 -0
- data/lib/dotloop/models/folder.rb +14 -0
- data/lib/dotloop/models/listing_brokerage.rb +15 -0
- data/lib/dotloop/models/loop.rb +15 -0
- data/lib/dotloop/models/loop_activity.rb +9 -0
- data/lib/dotloop/models/loop_detail.rb +9 -0
- data/lib/dotloop/models/participant.rb +12 -0
- data/lib/dotloop/models/person.rb +19 -0
- data/lib/dotloop/models/profile.rb +28 -0
- data/lib/dotloop/models/property_address.rb +16 -0
- data/lib/dotloop/models/section.rb +11 -0
- data/lib/dotloop/models/tag.rb +11 -0
- data/lib/dotloop/models/task.rb +16 -0
- data/lib/dotloop/participant.rb +15 -0
- data/lib/dotloop/person.rb +29 -0
- data/lib/dotloop/profile.rb +17 -0
- data/lib/dotloop/query_param_helpers.rb +59 -0
- data/lib/dotloop/task.rb +14 -0
- data/lib/dotloop/version.rb +3 -0
- metadata +294 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0c1546dd7b2d96ebbf6b21f0b74477923cb06e75
|
4
|
+
data.tar.gz: f9cfa01fbb2128a9c99fc322db081406a52ade98
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 75e6026d6e94e1b2dee3e8dfe7e64368dd30c61a9c608e29f2b42f48014da1540456261c980643d2ca693254b7a818f1dfdfe926eff220c4362c255a169ca7a2
|
7
|
+
data.tar.gz: 026b931ceaef7577d21b535509c9c393a7e48bcb08810c29cfdeededa09c7117a283bea8ac19bb4e1feac6d90eb972f4a2cc8cd6b4e26f564ba4dc81124b7c40
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.3
|
3
|
+
Include:
|
4
|
+
- '**/*.gemspec'
|
5
|
+
- '**/*.podspec'
|
6
|
+
- '**/*.jbuilder'
|
7
|
+
- '**/*.rake'
|
8
|
+
- '**/*.opal'
|
9
|
+
- '**/config.ru'
|
10
|
+
- '**/Gemfile'
|
11
|
+
- '**/Rakefile'
|
12
|
+
- '**/Capfile'
|
13
|
+
- '**/Podfile'
|
14
|
+
- '**/Thorfile'
|
15
|
+
- '**/Vagrantfile'
|
16
|
+
- '**/Berksfile'
|
17
|
+
- '**/Cheffile'
|
18
|
+
- '**/Vagabondfile'
|
19
|
+
Exclude:
|
20
|
+
- '**/Guardfile'
|
21
|
+
- 'db/**/*'
|
22
|
+
- 'tmp/**/*'
|
23
|
+
- 'vendor/**/*'
|
24
|
+
- 'bin/**/*'
|
25
|
+
- 'log/**/*'
|
26
|
+
Documentation:
|
27
|
+
Enabled: false
|
28
|
+
Metrics/LineLength:
|
29
|
+
Max: 120
|
30
|
+
AllowURI: true
|
31
|
+
URISchemes:
|
32
|
+
- http
|
33
|
+
- https
|
34
|
+
Metrics/MethodLength:
|
35
|
+
CountComments: false
|
36
|
+
Max: 15
|
37
|
+
Style/RaiseArgs:
|
38
|
+
Enabled: false
|
39
|
+
Style/FrozenStringLiteralComment:
|
40
|
+
Enabled: false
|
41
|
+
Style/Alias:
|
42
|
+
EnforcedStyle: prefer_alias_method
|
43
|
+
Style/MethodName:
|
44
|
+
Enabled: false
|
data/.travis.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.3.0
|
5
|
+
before_install: gem install bundler -v 1.12.0
|
6
|
+
notifications:
|
7
|
+
slack:
|
8
|
+
secure: JabcnJlmrkhrrCtDTaqoylYn2dmyUP9h9SO/IyVKrIZ0YvTukaKzU2RSHP6PXjv1WC/9zfrmrWiODBZmg3HciOq4C6g+LdPEGtujx4ULSpztyIm8MlC+uODKtNLR7Q4j9cWTNOi6JKmBWJmo00i7OXLiB3njpEza3or3585vL9ffLJTG/9bi61u/ccuDXBKjqOg2Mxa5sWycgl/kAZ1qTgG76RARWFr6f2Cvxu9LG0BeUq0KpMHKToPjTllmYIKoXKStAX8bLnTU0M1JI5O4uc5W/QOaRhrNgSNyn2LVzHos/8+LO8I4kj+ptMYK037pM3ojByYmQOyE8WL/6kCAJbRN5njyENRUpXrGyWjfF7yDBGA5zMoYgC6MyUWiOj66p12tNTrUVkeFc53uYzlfAg8n331aHj+j+zWuT+oOrn0H9Nx1X4QtJleY6qkPHZO2aF9o7rZIeA7Fn9fGrECUvOQyskBHgHyyWnZ1SpZsRBXKCqlPMyf//RUO9Cx580VSTqgjTCcHa5gAhsoiTl5S9NjsTJCrshRxkj0t1tv2tiCbbTLJ9n309wsI2kj+53S4Q4lXgTV4SQEqrqoO7PldQKPiOZDF2ZOZO0Ou6EBEGcIqL54tWjoKXHpPxMuXW0UrXgl1wl+jhiQTzKBlW4raHLYfaL6u1Yjvo1ZKKTlLseg=
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Loft 47
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# DotLoop API Library
|
2
|
+
[![Build Status](https://travis-ci.org/Loft47/dotloop.svg?branch=master)](https://travis-ci.org/Loft47/dotloop)
|
3
|
+
[![Coverage Status](https://coveralls.io/repos/github/Loft47/dotloop/badge.svg?branch=master&renew=true)](https://coveralls.io/github/Loft47/dotloop?branch=master)
|
4
|
+
|
5
|
+
This library is designed to help ruby applications consume the DotLoop API.
|
6
|
+
|
7
|
+
You can read more about the api the the official documentation at [https://support.dotloop.com](https://support.dotloop.com/hc/en-us/articles/204407013-Dotloop-REST-API-Developer-s-Guide)
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'dotloop'
|
15
|
+
```
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install dotloop
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
Optional parameters are prefixed with a __'*'__'
|
28
|
+
client = Dotloop::Client.new(api_key: 'c4c26918-b2df-49a6-9bc2-9009274b23a7')
|
29
|
+
|
30
|
+
client.Profile.all #=> get list of profiles
|
31
|
+
|
32
|
+
client.Loop.all(
|
33
|
+
profile_id: '1234',
|
34
|
+
*batch_number: 1,
|
35
|
+
*batch_size: 50,
|
36
|
+
*statusIds: '1,2,3'
|
37
|
+
*complianceStatusIds: '1,2,3'
|
38
|
+
*tagIds: '1,2,3'
|
39
|
+
*sortBy: 'email'
|
40
|
+
*searchQuery: 'test@example.com'
|
41
|
+
*tagNames: 'tag'
|
42
|
+
*createdByMe: '1234567'
|
43
|
+
) #=> get list of loops
|
44
|
+
|
45
|
+
client.Loop.all(profile_id: '1234', loop_view_id: '76046') #=> get basic loop information
|
46
|
+
|
47
|
+
client.Loop.find(profile_id: '1234', loop_view_id: '76046') #=> get loop details
|
48
|
+
client.LoopActivity.all(
|
49
|
+
profile_id: '1234',
|
50
|
+
loop_view_id: '76046',
|
51
|
+
*batch_number: 1,
|
52
|
+
*batch_size: 50
|
53
|
+
) #=> get loop activity
|
54
|
+
client.Document.all(profile_id: '1234', loop_view_id: '76046') #=> get loop document list
|
55
|
+
|
56
|
+
client.Participant.all(profile_id: '1234', loop_view_id: '76046') #=> get a list of loop participants
|
57
|
+
|
58
|
+
client.Task.all(profile_id: '1234', loop_view_id: '76046') #=> get a list of loop tasks
|
59
|
+
|
60
|
+
client.Folder.all(profile_id: '1234', loop_view_id: '76046') #=> get a list of folders in a loop
|
61
|
+
|
62
|
+
client.Employee.all(
|
63
|
+
profile_id: '1234',
|
64
|
+
*batch_number: 1,
|
65
|
+
*batch_size: 50,
|
66
|
+
*show_admin: true,
|
67
|
+
*show_in_active: true,
|
68
|
+
*include_child: true
|
69
|
+
) #=> get a list of users in a profile
|
70
|
+
client.DocumentActivity.all(
|
71
|
+
profile_id: '1234',
|
72
|
+
document_id: '561622',
|
73
|
+
*batch_number: 1,
|
74
|
+
*batch_size: 50
|
75
|
+
) #=> get activity details for a document
|
76
|
+
client.Person.all(
|
77
|
+
profile_id: '1234',
|
78
|
+
*batch_number: 1,
|
79
|
+
*batch_size: 50
|
80
|
+
) #=> get list of contacts
|
81
|
+
client.Person.find(profile_id: '1234', contact_id: '3603862') #=> get details for a contact
|
82
|
+
|
83
|
+
client.Admin.all(
|
84
|
+
profile_id: '1234',
|
85
|
+
*batch_number: 1,
|
86
|
+
*batch_size: 50
|
87
|
+
) #=> get list of admins for a profile
|
88
|
+
|
89
|
+
client.Document.get(
|
90
|
+
profile_id: '1234',
|
91
|
+
loop_view_id: '76046',
|
92
|
+
document_id: '561622',
|
93
|
+
document_name: 'My Offer'
|
94
|
+
) #=> get a PDF document
|
95
|
+
|
96
|
+
## Development
|
97
|
+
|
98
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
99
|
+
|
100
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
101
|
+
|
102
|
+
## Contributing
|
103
|
+
|
104
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/dotloop.
|
105
|
+
|
106
|
+
|
107
|
+
## License
|
108
|
+
|
109
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
data/bin/setup
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MRAwDgYDVQQDDAdzZGF2
|
3
|
+
aWVzMRYwFAYKCZImiZPyLGQBGRYGbG9mdDQ3MRMwEQYKCZImiZPyLGQBGRYDY29t
|
4
|
+
MB4XDTE2MDgwODE5MzAzMloXDTE3MDgwODE5MzAzMlowPzEQMA4GA1UEAwwHc2Rh
|
5
|
+
dmllczEWMBQGCgmSJomT8ixkARkWBmxvZnQ0NzETMBEGCgmSJomT8ixkARkWA2Nv
|
6
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANbdLELnhjHmoCxtvOy3
|
7
|
+
mFcacIzle+eZa9n6a3D3S6mEGC/lO4WF8EePp94qwjMIQhyTWqF/yRwqFkpo+RVl
|
8
|
+
QWg5zxfxCM1AOspzaj7zaSpeHyh4KosQVyART60HS0GkFIFOlnQcHqVpwGQcPd4Z
|
9
|
+
uekgG0GAqgcj/+ioyDvgDhku5ANSBa4uYwH9OJVYCP5xXlcdxK8KbcxKgMorC2hx
|
10
|
+
8hTQH+wTT5T/5j15p9bcOf/Tnm0EjtSoxfDWHJoQLIGNwfJOp/kFZaBxxy4oZq+j
|
11
|
+
GzPJff8AZvbs9nTg1AJ/RaCWjM/YEwkjBAf7g/6dm9SMC162nyg4/Yjgze6z6Zt3
|
12
|
+
w1cCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFH3o
|
13
|
+
0f/0COUk9idtlFf1qCHIvMPRMB0GA1UdEQQWMBSBEnNkYXZpZXNAbG9mdDQ3LmNv
|
14
|
+
bTAdBgNVHRIEFjAUgRJzZGF2aWVzQGxvZnQ0Ny5jb20wDQYJKoZIhvcNAQEFBQAD
|
15
|
+
ggEBAE2ieglURsx6Rj0HQQw3TZUsurXTpoTfuajK7UjU/n4UatPSMDg663Zp2k+O
|
16
|
+
7xv7cQlnn7I0uTpOKMVAiFxHbm01nSaIScyBed1SOsixCaRSjZTm5yq5Pabn4VmC
|
17
|
+
y2h5HMXQ6MSbD8oD5cOly6PPo5lhXfPCZ8H7yPbl3Z8i3A4co82TF+5yJxPK7DBM
|
18
|
+
WHXFKCoz2zIIOVblPHGnCVm0YVvO354ojsRsqh64WP7e5nT4QhSb+3iQkWuoBcbl
|
19
|
+
L+ceZspJWVt3gj8EHk5CVnWGEh6Pk69eo8EuR38vWHXOExU+b14Umj8wjYGjDgmQ
|
20
|
+
ULEgdaQHqkQV4C3edSFOUWTGehI=
|
21
|
+
-----END CERTIFICATE-----
|
data/dotloop.gemspec
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'dotloop/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'dotloop'
|
8
|
+
spec.version = Dotloop::VERSION
|
9
|
+
spec.authors = ['Loft47']
|
10
|
+
spec.email = ['support@loft47.com']
|
11
|
+
|
12
|
+
spec.summary = %(Dotloop library)
|
13
|
+
spec.description = %(Ruby library for Dotloop API.)
|
14
|
+
spec.homepage = %(http://github.com/Loft47/dotloop)
|
15
|
+
spec.license = 'MIT'
|
16
|
+
spec.cert_chain = ['certs/shanedavies.pem']
|
17
|
+
spec.signing_key = File.expand_path('~/.ssh/dotloop-private_key.pem') if $0 =~ /gem\z/
|
18
|
+
|
19
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
20
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
21
|
+
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
|
22
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.bindir = 'exe'
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ['lib']
|
28
|
+
|
29
|
+
spec.add_runtime_dependency 'simplecov', '~> 0.12'
|
30
|
+
spec.add_runtime_dependency 'coveralls', '~> 0.8'
|
31
|
+
spec.add_runtime_dependency 'httparty', '~> 0.13'
|
32
|
+
spec.add_runtime_dependency 'virtus', '~> 1.0'
|
33
|
+
spec.add_runtime_dependency 'plissken', '~> 0.2'
|
34
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
35
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
36
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
37
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
38
|
+
spec.add_development_dependency 'byebug', '~> 9.0'
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 0.41'
|
40
|
+
spec.add_development_dependency 'webmock', '~> 2.1'
|
41
|
+
spec.add_development_dependency 'travis', '~> 1.8'
|
42
|
+
end
|
data/lib/dotloop.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'plissken'
|
2
|
+
require 'httparty'
|
3
|
+
require 'virtus'
|
4
|
+
|
5
|
+
require 'dotloop/version'
|
6
|
+
require 'dotloop/client'
|
7
|
+
require 'dotloop/query_param_helpers'
|
8
|
+
require 'dotloop/profile'
|
9
|
+
require 'dotloop/loop'
|
10
|
+
require 'dotloop/admin'
|
11
|
+
require 'dotloop/document'
|
12
|
+
require 'dotloop/document_activity'
|
13
|
+
require 'dotloop/employee'
|
14
|
+
require 'dotloop/folder'
|
15
|
+
require 'dotloop/loop_activity'
|
16
|
+
require 'dotloop/participant'
|
17
|
+
require 'dotloop/person'
|
18
|
+
require 'dotloop/task'
|
19
|
+
|
20
|
+
require 'dotloop/models/property_address'
|
21
|
+
require 'dotloop/models/buying_brokerage'
|
22
|
+
require 'dotloop/models/listing_brokerage'
|
23
|
+
require 'dotloop/models/financials'
|
24
|
+
require 'dotloop/models/section'
|
25
|
+
require 'dotloop/models/loop_detail'
|
26
|
+
|
27
|
+
require 'dotloop/models/admin'
|
28
|
+
require 'dotloop/models/document'
|
29
|
+
require 'dotloop/models/document_activity'
|
30
|
+
require 'dotloop/models/employee'
|
31
|
+
require 'dotloop/models/folder'
|
32
|
+
require 'dotloop/models/loop'
|
33
|
+
require 'dotloop/models/loop_activity'
|
34
|
+
require 'dotloop/models/participant'
|
35
|
+
require 'dotloop/models/person'
|
36
|
+
require 'dotloop/models/profile'
|
37
|
+
require 'dotloop/models/tag'
|
38
|
+
require 'dotloop/models/task'
|
39
|
+
|
40
|
+
module Dotloop
|
41
|
+
# Your code goes here...
|
42
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Dotloop
|
2
|
+
class Admin
|
3
|
+
include Dotloop::QueryParamHelpers
|
4
|
+
attr_accessor :client
|
5
|
+
|
6
|
+
def initialize(client:)
|
7
|
+
@client = client
|
8
|
+
end
|
9
|
+
|
10
|
+
def all(options = {})
|
11
|
+
admins = []
|
12
|
+
url = "/profile/#{profile_id(options)}/admin"
|
13
|
+
(1..MAX_LOOPS).each do |i|
|
14
|
+
options[:batch_number] = i
|
15
|
+
current_admin = @client.get(url, query_params(options)).map do |admin_attrs|
|
16
|
+
Dotloop::Models::Admin.new(admin_attrs)
|
17
|
+
end
|
18
|
+
admins += current_admin
|
19
|
+
break if current_admin.size < BATCH_SIZE
|
20
|
+
end
|
21
|
+
admins
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Dotloop
|
2
|
+
class Client
|
3
|
+
include HTTParty
|
4
|
+
|
5
|
+
base_uri 'https://www.dotloop.com/my/api/v1_0/'
|
6
|
+
|
7
|
+
attr_accessor :api_key
|
8
|
+
attr_accessor :application
|
9
|
+
|
10
|
+
def initialize(api_key:, application: 'dotloop')
|
11
|
+
@api_key = api_key
|
12
|
+
@application = application
|
13
|
+
raise 'Please enter an API key' unless @api_key
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(page, params = {})
|
17
|
+
response = raw(page, params)
|
18
|
+
self.class.snakify(response)
|
19
|
+
end
|
20
|
+
|
21
|
+
def raw(page, params = {})
|
22
|
+
response = self.class.get(page, query: params, headers: headers, timeout: 60)
|
23
|
+
raise "Error communicating: Response code #{response.code}" unless response.code == 200
|
24
|
+
response.parsed_response
|
25
|
+
end
|
26
|
+
|
27
|
+
def Profile
|
28
|
+
@profile ||= Dotloop::Profile.new(client: self)
|
29
|
+
end
|
30
|
+
|
31
|
+
def Loop
|
32
|
+
@loop ||= Dotloop::Loop.new(client: self)
|
33
|
+
end
|
34
|
+
|
35
|
+
def Document
|
36
|
+
@document ||= Dotloop::Document.new(client: self)
|
37
|
+
end
|
38
|
+
|
39
|
+
def Participant
|
40
|
+
@participant ||= Dotloop::Participant.new(client: self)
|
41
|
+
end
|
42
|
+
|
43
|
+
def LoopActivity
|
44
|
+
@loop_activity ||= Dotloop::LoopActivity.new(client: self)
|
45
|
+
end
|
46
|
+
|
47
|
+
def Task
|
48
|
+
@task ||= Dotloop::Task.new(client: self)
|
49
|
+
end
|
50
|
+
|
51
|
+
def Folder
|
52
|
+
@folder ||= Dotloop::Folder.new(client: self)
|
53
|
+
end
|
54
|
+
|
55
|
+
def Employee
|
56
|
+
@employee ||= Dotloop::Employee.new(client: self)
|
57
|
+
end
|
58
|
+
|
59
|
+
def DocumentActivity
|
60
|
+
@document_activity ||= Dotloop::DocumentActivity.new(client: self)
|
61
|
+
end
|
62
|
+
|
63
|
+
def Person
|
64
|
+
@person ||= Dotloop::Person.new(client: self)
|
65
|
+
end
|
66
|
+
|
67
|
+
def Admin
|
68
|
+
@admin ||= Dotloop::Admin.new(client: self)
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.snakify(hash)
|
72
|
+
if hash.is_a? Array
|
73
|
+
hash.map(&:to_snake_keys)
|
74
|
+
else
|
75
|
+
hash.to_snake_keys
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def headers
|
82
|
+
{
|
83
|
+
'Authorization' => "Bearer #{@api_key}",
|
84
|
+
'User-Agent' => @application,
|
85
|
+
'Accept' => '*/*'
|
86
|
+
}
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|