dotloop-ruby 0.1.7 → 0.1.8
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 +5 -5
- data/.gitignore +2 -0
- data/README.md +14 -2
- data/bin/console +1 -1
- data/dotloop-ruby.gemspec +1 -1
- data/lib/dotloop-ruby.rb +1 -0
- data/lib/dotloop/client.rb +12 -2
- data/lib/dotloop/loop_detail.rb +3 -18
- data/lib/dotloop/models/participant.rb +11 -1
- data/lib/dotloop/parse_data.rb +27 -0
- data/lib/dotloop/participant.rb +26 -3
- data/lib/dotloop/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7884459d70d1f78417e6c3cee8e0b7221e4381fe7cca5be5590d57e5816b78c1
|
4
|
+
data.tar.gz: b1e7ce24efec71e5b26fd30075a3d4049ccb0896583d81213f86b1215da888e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e06a7edb641a94d793bb3da25003140ca449517bfb9a8d0e0b1f1817432689c3050dbf99ceaf8d9f8f2ccd03da6ed8a140f35c496dde1716c5214922cea0aad6
|
7
|
+
data.tar.gz: c57f2d3ea23fabd1ed1d8bcd6b4abe8d99ef70a2f845dd2bebef88173d02a3a13d5142d79972102fe0226908fac363475f517dff9ed669ffcf7e9b787af2bc7d
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Ruby library for Dotloop API v2
|
2
2
|
|
3
|
+
[](https://semaphoreci.com/sampat-badhe/dotloop-ruby)
|
4
|
+
[](https://codeclimate.com/github/sampatbadhe/dotloop-ruby/test_coverage)
|
5
|
+
|
3
6
|
* [Homepage](https://www.dotloop.com)
|
4
7
|
* [API Documentation](https://dotloop.github.io/public-api)
|
5
8
|
* [Sign Up](https://www.dotloop.com/#/signup)
|
@@ -280,7 +283,15 @@ Dotloop uses OAuth2 for authentication (https://dotloop.github.io/public-api/#au
|
|
280
283
|
params = {
|
281
284
|
"fullName": "Brian Erwin",
|
282
285
|
"email": "brian@gmail.com",
|
283
|
-
"role": "BUYER"
|
286
|
+
"role": "BUYER",
|
287
|
+
"Street Name": "123",
|
288
|
+
"Street Number": "Main St.",
|
289
|
+
"City": "Cincinnati",
|
290
|
+
"Zip/Postal Code": "45123",
|
291
|
+
"Country": "USA",
|
292
|
+
"Phone": "(555) 555-5555",
|
293
|
+
"Cell Phone": "(555) 555-4444",
|
294
|
+
"Company Name": "Buyer's Company"
|
284
295
|
}
|
285
296
|
|
286
297
|
#=> update participant
|
@@ -391,8 +402,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
391
402
|
|
392
403
|
Bug reports and pull requests are welcome on GitHub at https://github.com/sampatbadhe/dotloop-ruby.
|
393
404
|
|
394
|
-
|
395
405
|
## License
|
396
406
|
|
397
407
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
398
408
|
|
409
|
+
## Statement
|
410
|
+
`dotloop-ruby` part of reference [Loft47/dotloop](https://github.com/Loft47/dotloop) project.
|
data/bin/console
CHANGED
data/dotloop-ruby.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
|
33
33
|
spec.add_runtime_dependency 'httparty', '~> 0.13'
|
34
34
|
spec.add_runtime_dependency 'virtus', '~> 1.0'
|
35
|
-
spec.add_runtime_dependency 'plissken', '~>
|
35
|
+
spec.add_runtime_dependency 'plissken', '~> 1.2'
|
36
36
|
spec.add_development_dependency 'bundler', '~> 1.14'
|
37
37
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
38
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
data/lib/dotloop-ruby.rb
CHANGED
data/lib/dotloop/client.rb
CHANGED
@@ -116,14 +116,24 @@ module Dotloop
|
|
116
116
|
|
117
117
|
def self.snakify(hash)
|
118
118
|
if hash.is_a? Array
|
119
|
-
hash.map(
|
119
|
+
hash.map{ |item| symbolize(item.to_snake_keys) }
|
120
120
|
else
|
121
|
-
hash.to_snake_keys
|
121
|
+
symbolize(hash.to_snake_keys)
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
125
|
private
|
126
126
|
|
127
|
+
def self.symbolize(obj)
|
128
|
+
return obj.reduce({}) do |memo, (k, v)|
|
129
|
+
memo.tap { |m| m[k.to_sym] = symbolize(v) }
|
130
|
+
end if obj.is_a? Hash
|
131
|
+
return obj.reduce([]) do |memo, v|
|
132
|
+
memo << symbolize(v); memo
|
133
|
+
end if obj.is_a? Array
|
134
|
+
obj
|
135
|
+
end
|
136
|
+
|
127
137
|
def download_headers
|
128
138
|
{
|
129
139
|
'Authorization' => "Bearer #{@access_token}",
|
data/lib/dotloop/loop_detail.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
module Dotloop
|
4
4
|
class LoopDetail
|
5
|
+
include Dotloop::ParseData
|
5
6
|
attr_accessor :details
|
6
7
|
FIXED_SECTIONS = %i[
|
7
8
|
contract_dates contract_info financials geographic_description
|
@@ -13,26 +14,10 @@ module Dotloop
|
|
13
14
|
parse_data(data)
|
14
15
|
end
|
15
16
|
|
16
|
-
def parse_data(data)
|
17
|
-
fix_hash_keys(data).each { |item| build_section(item[0], item[1]) }
|
18
|
-
end
|
19
|
-
|
20
17
|
private
|
21
18
|
|
22
|
-
def
|
23
|
-
|
24
|
-
values = fix_hash_keys(section_data)
|
25
|
-
@details[key] = values
|
26
|
-
end
|
27
|
-
|
28
|
-
def index_to_key(index)
|
29
|
-
index.to_s.downcase.delete(%(')).gsub(/%/, ' percent ').gsub(/\$/, ' doller ').gsub(/[^a-z]/, '_').squeeze('_').gsub(/^_*/, '').gsub(/_*$/, '').to_sym
|
30
|
-
end
|
31
|
-
|
32
|
-
def fix_hash_keys(bad_hash)
|
33
|
-
bad_hash.each_with_object({}) do |item, memo|
|
34
|
-
memo[index_to_key(item[0])] = item[1]
|
35
|
-
end
|
19
|
+
def fields
|
20
|
+
FIXED_SECTIONS
|
36
21
|
end
|
37
22
|
end
|
38
23
|
end
|
@@ -4,14 +4,24 @@ module Dotloop
|
|
4
4
|
module Models
|
5
5
|
class Participant
|
6
6
|
include Virtus.model
|
7
|
+
attribute :cell_phone
|
8
|
+
attribute :city
|
9
|
+
attribute :company_name
|
10
|
+
attribute :country
|
7
11
|
attribute :email
|
8
12
|
attribute :full_name
|
9
13
|
attribute :id, Integer
|
14
|
+
attribute :phone
|
10
15
|
attribute :role
|
16
|
+
attribute :state_prov
|
17
|
+
attribute :street_name
|
18
|
+
attribute :street_number
|
19
|
+
attribute :unit_number
|
20
|
+
attribute :zip_postal_code
|
11
21
|
|
12
22
|
attr_accessor :client
|
13
|
-
attr_accessor :profile_id
|
14
23
|
attr_accessor :loop_id
|
24
|
+
attr_accessor :profile_id
|
15
25
|
end
|
16
26
|
end
|
17
27
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dotloop
|
4
|
+
module ParseData
|
5
|
+
def parse_data(data)
|
6
|
+
fix_hash_keys(data).each { |item| build_section(item[0], item[1]) }
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def build_section(key, section_data)
|
12
|
+
return unless fields.include?(key)
|
13
|
+
values = fix_hash_keys(section_data)
|
14
|
+
@details[key] = values
|
15
|
+
end
|
16
|
+
|
17
|
+
def index_to_key(index)
|
18
|
+
index.to_s.downcase.delete(%(')).gsub(/%/, ' percent ').gsub(/\$/, ' doller ').gsub(/[^a-z]/, '_').squeeze('_').gsub(/^_*/, '').gsub(/_*$/, '').to_sym
|
19
|
+
end
|
20
|
+
|
21
|
+
def fix_hash_keys(bad_hash)
|
22
|
+
bad_hash.each_with_object({}) do |item, memo|
|
23
|
+
memo[index_to_key(item[0])] = item[1]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/dotloop/participant.rb
CHANGED
@@ -2,9 +2,24 @@
|
|
2
2
|
|
3
3
|
module Dotloop
|
4
4
|
class Participant
|
5
|
+
include Dotloop::ParseData
|
5
6
|
attr_accessor :client
|
6
7
|
|
7
|
-
PARTICIPANT_FIELDS =
|
8
|
+
PARTICIPANT_FIELDS = [
|
9
|
+
'fullName',
|
10
|
+
'email',
|
11
|
+
'role',
|
12
|
+
'Street Name',
|
13
|
+
'Street Number',
|
14
|
+
'City',
|
15
|
+
'State/Prov',
|
16
|
+
'Zip/Postal Code',
|
17
|
+
'Unit Number',
|
18
|
+
'Country',
|
19
|
+
'Phone',
|
20
|
+
'Cell Phone',
|
21
|
+
'Company Name'
|
22
|
+
].freeze
|
8
23
|
|
9
24
|
def initialize(client:)
|
10
25
|
@client = client
|
@@ -12,6 +27,7 @@ module Dotloop
|
|
12
27
|
|
13
28
|
def all(profile_id:, loop_id:)
|
14
29
|
@client.get("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/participant")[:data].map do |participant_attrs|
|
30
|
+
participant_data = parse_data(participant_attrs)
|
15
31
|
participant = Dotloop::Models::Participant.new(participant_attrs)
|
16
32
|
participant.client = client
|
17
33
|
participant.profile_id = profile_id.to_i
|
@@ -22,6 +38,7 @@ module Dotloop
|
|
22
38
|
|
23
39
|
def find(profile_id:, loop_id:, participant_id:)
|
24
40
|
participant_data = @client.get("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/participant/#{participant_id.to_i}")[:data]
|
41
|
+
participant_data = parse_data(participant_data)
|
25
42
|
participant = Dotloop::Models::Participant.new(participant_data)
|
26
43
|
participant.client = client
|
27
44
|
participant.profile_id = profile_id.to_i
|
@@ -35,8 +52,8 @@ module Dotloop
|
|
35
52
|
PARTICIPANT_FIELDS.include?(key.to_s) || next
|
36
53
|
data[key] = value.to_s
|
37
54
|
end
|
38
|
-
|
39
55
|
participant_data = @client.post("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/participant", data)[:data]
|
56
|
+
participant_data = parse_data(participant_data)
|
40
57
|
participant = Dotloop::Models::Participant.new(participant_data)
|
41
58
|
participant.client = client
|
42
59
|
participant.profile_id = profile_id.to_i
|
@@ -50,8 +67,8 @@ module Dotloop
|
|
50
67
|
PARTICIPANT_FIELDS.include?(key.to_s) || next
|
51
68
|
data[key] = value.to_s
|
52
69
|
end
|
53
|
-
|
54
70
|
participant_data = @client.patch("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/participant/#{participant_id.to_i}", data)[:data]
|
71
|
+
participant_data = parse_data(participant_data)
|
55
72
|
participant = Dotloop::Models::Participant.new(participant_data)
|
56
73
|
participant.client = client
|
57
74
|
participant.profile_id = profile_id.to_i
|
@@ -62,5 +79,11 @@ module Dotloop
|
|
62
79
|
def delete(profile_id:, loop_id:, participant_id:)
|
63
80
|
@client.delete("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/participant/#{participant_id.to_i}")
|
64
81
|
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def fields
|
86
|
+
PARTICIPANT_FIELDS
|
87
|
+
end
|
65
88
|
end
|
66
89
|
end
|
data/lib/dotloop/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dotloop-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sampatbadhe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.2'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/dotloop/models/task.rb
|
242
242
|
- lib/dotloop/models/tasklist.rb
|
243
243
|
- lib/dotloop/models/template.rb
|
244
|
+
- lib/dotloop/parse_data.rb
|
244
245
|
- lib/dotloop/participant.rb
|
245
246
|
- lib/dotloop/profile.rb
|
246
247
|
- lib/dotloop/query_param_helpers.rb
|
@@ -268,8 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
269
|
- !ruby/object:Gem::Version
|
269
270
|
version: '0'
|
270
271
|
requirements: []
|
271
|
-
|
272
|
-
rubygems_version: 2.6.14
|
272
|
+
rubygems_version: 3.0.3
|
273
273
|
signing_key:
|
274
274
|
specification_version: 4
|
275
275
|
summary: Dotloop library
|