dotloop 0.1.2

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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.gitignore +9 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +44 -0
  7. data/.travis.yml +8 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +109 -0
  11. data/Rakefile +6 -0
  12. data/bin/console +10 -0
  13. data/bin/setup +8 -0
  14. data/certs/shanedavies.pem +21 -0
  15. data/dotloop.gemspec +42 -0
  16. data/lib/dotloop.rb +42 -0
  17. data/lib/dotloop/admin.rb +24 -0
  18. data/lib/dotloop/client.rb +89 -0
  19. data/lib/dotloop/document.rb +26 -0
  20. data/lib/dotloop/document_activity.rb +24 -0
  21. data/lib/dotloop/employee.rb +14 -0
  22. data/lib/dotloop/folder.rb +14 -0
  23. data/lib/dotloop/loop.rb +62 -0
  24. data/lib/dotloop/loop_activity.rb +24 -0
  25. data/lib/dotloop/models/admin.rb +13 -0
  26. data/lib/dotloop/models/buying_brokerage.rb +15 -0
  27. data/lib/dotloop/models/document.rb +17 -0
  28. data/lib/dotloop/models/document_activity.rb +9 -0
  29. data/lib/dotloop/models/employee.rb +15 -0
  30. data/lib/dotloop/models/financials.rb +13 -0
  31. data/lib/dotloop/models/folder.rb +14 -0
  32. data/lib/dotloop/models/listing_brokerage.rb +15 -0
  33. data/lib/dotloop/models/loop.rb +15 -0
  34. data/lib/dotloop/models/loop_activity.rb +9 -0
  35. data/lib/dotloop/models/loop_detail.rb +9 -0
  36. data/lib/dotloop/models/participant.rb +12 -0
  37. data/lib/dotloop/models/person.rb +19 -0
  38. data/lib/dotloop/models/profile.rb +28 -0
  39. data/lib/dotloop/models/property_address.rb +16 -0
  40. data/lib/dotloop/models/section.rb +11 -0
  41. data/lib/dotloop/models/tag.rb +11 -0
  42. data/lib/dotloop/models/task.rb +16 -0
  43. data/lib/dotloop/participant.rb +15 -0
  44. data/lib/dotloop/person.rb +29 -0
  45. data/lib/dotloop/profile.rb +17 -0
  46. data/lib/dotloop/query_param_helpers.rb +59 -0
  47. data/lib/dotloop/task.rb +14 -0
  48. data/lib/dotloop/version.rb +3 -0
  49. metadata +294 -0
  50. metadata.gz.sig +0 -0
@@ -0,0 +1,15 @@
1
+ module Dotloop
2
+ class Participant
3
+ attr_accessor :client
4
+
5
+ def initialize(client:)
6
+ @client = client
7
+ end
8
+
9
+ def all(profile_id:, loop_view_id:)
10
+ @client.get("/profile/#{profile_id.to_i}/loop/#{loop_view_id.to_i}/participant").map do |participant_attrs|
11
+ Dotloop::Models::Participant.new(participant_attrs)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ module Dotloop
2
+ class Person
3
+ include Dotloop::QueryParamHelpers
4
+ attr_accessor :client
5
+
6
+ def initialize(client:)
7
+ @client = client
8
+ end
9
+
10
+ def all(options = {})
11
+ persons = []
12
+ url = "/profile/#{profile_id(options)}/person"
13
+ (1..MAX_LOOPS).each do |i|
14
+ options[:batch_number] = i
15
+ current_person = @client.get(url, query_params(options)).map do |person_attrs|
16
+ Dotloop::Models::Person.new(person_attrs)
17
+ end
18
+ persons += current_person
19
+ break if current_person.size < BATCH_SIZE
20
+ end
21
+ persons
22
+ end
23
+
24
+ def find(profile_id:, person_id:)
25
+ person = @client.get("/profile/#{profile_id.to_i}/person/#{person_id.to_i}").first
26
+ Dotloop::Models::Person.new(person)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ module Dotloop
2
+ class Profile
3
+ attr_accessor :client
4
+
5
+ def initialize(client:)
6
+ @client = client
7
+ end
8
+
9
+ def all
10
+ @client.get('/profile').map do |profile_attrs|
11
+ profile = Dotloop::Models::Profile.new(profile_attrs)
12
+ profile.client = client
13
+ profile
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,59 @@
1
+ module Dotloop
2
+ module QueryParamHelpers
3
+ BATCH_SIZE = 50
4
+ MAX_LOOPS = 500
5
+
6
+ private
7
+
8
+ def query_params(options)
9
+ {
10
+ batchNumber: batch_number(options),
11
+ batchSize: batch_size(options)
12
+ }.delete_if { |_, v| should_delete(v) }
13
+ end
14
+
15
+ def should_delete(value)
16
+ value.nil? || (value.is_a?(Array) && value.empty?) || (value.is_a?(Integer) && value.zero?)
17
+ end
18
+
19
+ def profile_id(options)
20
+ raise 'profile_id is required' unless options[:profile_id]
21
+ options[:profile_id].to_i
22
+ end
23
+
24
+ def document_id(options)
25
+ raise 'document_id is required' unless options[:document_id]
26
+ options[:document_id].to_i
27
+ end
28
+
29
+ def batch_number(options)
30
+ options[:batch_number].to_i
31
+ end
32
+
33
+ def loop_view_id(options)
34
+ raise 'loop_view_id is required' unless options[:loop_view_id]
35
+ options[:loop_view_id].to_i
36
+ end
37
+
38
+ def batch_size(options)
39
+ size = options[:batch_size].to_i
40
+ size.between?(1, BATCH_SIZE) ? size : BATCH_SIZE
41
+ end
42
+
43
+ def status_ids(options)
44
+ [options[:status_ids]].flatten.map(&:to_i).delete_if(&:zero?).compact
45
+ end
46
+
47
+ def compliance_status_ids(options)
48
+ [options[:compliance_status_ids]].flatten.map(&:to_i).delete_if(&:zero?).compact
49
+ end
50
+
51
+ def tag_ids(options)
52
+ [options[:tag_ids]].flatten.map(&:to_i).delete_if(&:zero?).compact
53
+ end
54
+
55
+ def created_by_me(options)
56
+ options[:created_by_me].to_i
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,14 @@
1
+ module Dotloop
2
+ class Task
3
+ attr_accessor :client
4
+
5
+ def initialize(client:)
6
+ @client = client
7
+ end
8
+
9
+ def all(profile_id:, loop_view_id:)
10
+ url = "/profile/#{profile_id.to_i}/loop/#{loop_view_id.to_i}/task"
11
+ @client.get(url).map { |task_attrs| Dotloop::Models::Task.new(task_attrs) }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module Dotloop
2
+ VERSION = '0.1.2'.freeze
3
+ end
metadata ADDED
@@ -0,0 +1,294 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dotloop
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Loft47
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MRAwDgYDVQQDDAdzZGF2
14
+ aWVzMRYwFAYKCZImiZPyLGQBGRYGbG9mdDQ3MRMwEQYKCZImiZPyLGQBGRYDY29t
15
+ MB4XDTE2MDgwODE5MzAzMloXDTE3MDgwODE5MzAzMlowPzEQMA4GA1UEAwwHc2Rh
16
+ dmllczEWMBQGCgmSJomT8ixkARkWBmxvZnQ0NzETMBEGCgmSJomT8ixkARkWA2Nv
17
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANbdLELnhjHmoCxtvOy3
18
+ mFcacIzle+eZa9n6a3D3S6mEGC/lO4WF8EePp94qwjMIQhyTWqF/yRwqFkpo+RVl
19
+ QWg5zxfxCM1AOspzaj7zaSpeHyh4KosQVyART60HS0GkFIFOlnQcHqVpwGQcPd4Z
20
+ uekgG0GAqgcj/+ioyDvgDhku5ANSBa4uYwH9OJVYCP5xXlcdxK8KbcxKgMorC2hx
21
+ 8hTQH+wTT5T/5j15p9bcOf/Tnm0EjtSoxfDWHJoQLIGNwfJOp/kFZaBxxy4oZq+j
22
+ GzPJff8AZvbs9nTg1AJ/RaCWjM/YEwkjBAf7g/6dm9SMC162nyg4/Yjgze6z6Zt3
23
+ w1cCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFH3o
24
+ 0f/0COUk9idtlFf1qCHIvMPRMB0GA1UdEQQWMBSBEnNkYXZpZXNAbG9mdDQ3LmNv
25
+ bTAdBgNVHRIEFjAUgRJzZGF2aWVzQGxvZnQ0Ny5jb20wDQYJKoZIhvcNAQEFBQAD
26
+ ggEBAE2ieglURsx6Rj0HQQw3TZUsurXTpoTfuajK7UjU/n4UatPSMDg663Zp2k+O
27
+ 7xv7cQlnn7I0uTpOKMVAiFxHbm01nSaIScyBed1SOsixCaRSjZTm5yq5Pabn4VmC
28
+ y2h5HMXQ6MSbD8oD5cOly6PPo5lhXfPCZ8H7yPbl3Z8i3A4co82TF+5yJxPK7DBM
29
+ WHXFKCoz2zIIOVblPHGnCVm0YVvO354ojsRsqh64WP7e5nT4QhSb+3iQkWuoBcbl
30
+ L+ceZspJWVt3gj8EHk5CVnWGEh6Pk69eo8EuR38vWHXOExU+b14Umj8wjYGjDgmQ
31
+ ULEgdaQHqkQV4C3edSFOUWTGehI=
32
+ -----END CERTIFICATE-----
33
+ date: 2016-08-08 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: simplecov
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0.12'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '0.12'
49
+ - !ruby/object:Gem::Dependency
50
+ name: coveralls
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '0.8'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.8'
63
+ - !ruby/object:Gem::Dependency
64
+ name: httparty
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.13'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.13'
77
+ - !ruby/object:Gem::Dependency
78
+ name: virtus
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.0'
84
+ type: :runtime
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '1.0'
91
+ - !ruby/object:Gem::Dependency
92
+ name: plissken
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '0.2'
98
+ type: :runtime
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0.2'
105
+ - !ruby/object:Gem::Dependency
106
+ name: bundler
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.12'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.12'
119
+ - !ruby/object:Gem::Dependency
120
+ name: rake
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '10.0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '10.0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: rspec
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '3.0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '3.0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: pry
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '0.10'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '0.10'
161
+ - !ruby/object:Gem::Dependency
162
+ name: byebug
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '9.0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '9.0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: rubocop
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '0.41'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '0.41'
189
+ - !ruby/object:Gem::Dependency
190
+ name: webmock
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '2.1'
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '2.1'
203
+ - !ruby/object:Gem::Dependency
204
+ name: travis
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '1.8'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: '1.8'
217
+ description: Ruby library for Dotloop API.
218
+ email:
219
+ - support@loft47.com
220
+ executables: []
221
+ extensions: []
222
+ extra_rdoc_files: []
223
+ files:
224
+ - ".gitignore"
225
+ - ".rspec"
226
+ - ".rubocop.yml"
227
+ - ".travis.yml"
228
+ - Gemfile
229
+ - LICENSE.txt
230
+ - README.md
231
+ - Rakefile
232
+ - bin/console
233
+ - bin/setup
234
+ - certs/shanedavies.pem
235
+ - dotloop.gemspec
236
+ - lib/dotloop.rb
237
+ - lib/dotloop/admin.rb
238
+ - lib/dotloop/client.rb
239
+ - lib/dotloop/document.rb
240
+ - lib/dotloop/document_activity.rb
241
+ - lib/dotloop/employee.rb
242
+ - lib/dotloop/folder.rb
243
+ - lib/dotloop/loop.rb
244
+ - lib/dotloop/loop_activity.rb
245
+ - lib/dotloop/models/admin.rb
246
+ - lib/dotloop/models/buying_brokerage.rb
247
+ - lib/dotloop/models/document.rb
248
+ - lib/dotloop/models/document_activity.rb
249
+ - lib/dotloop/models/employee.rb
250
+ - lib/dotloop/models/financials.rb
251
+ - lib/dotloop/models/folder.rb
252
+ - lib/dotloop/models/listing_brokerage.rb
253
+ - lib/dotloop/models/loop.rb
254
+ - lib/dotloop/models/loop_activity.rb
255
+ - lib/dotloop/models/loop_detail.rb
256
+ - lib/dotloop/models/participant.rb
257
+ - lib/dotloop/models/person.rb
258
+ - lib/dotloop/models/profile.rb
259
+ - lib/dotloop/models/property_address.rb
260
+ - lib/dotloop/models/section.rb
261
+ - lib/dotloop/models/tag.rb
262
+ - lib/dotloop/models/task.rb
263
+ - lib/dotloop/participant.rb
264
+ - lib/dotloop/person.rb
265
+ - lib/dotloop/profile.rb
266
+ - lib/dotloop/query_param_helpers.rb
267
+ - lib/dotloop/task.rb
268
+ - lib/dotloop/version.rb
269
+ homepage: http://github.com/Loft47/dotloop
270
+ licenses:
271
+ - MIT
272
+ metadata:
273
+ allowed_push_host: https://rubygems.org
274
+ post_install_message:
275
+ rdoc_options: []
276
+ require_paths:
277
+ - lib
278
+ required_ruby_version: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ required_rubygems_version: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
+ requirements: []
289
+ rubyforge_project:
290
+ rubygems_version: 2.5.1
291
+ signing_key:
292
+ specification_version: 4
293
+ summary: Dotloop library
294
+ test_files: []
Binary file