pipe_drive_ruby_wrapper 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pipe_drive/deal.rb +8 -0
- data/lib/pipe_drive/field_base.rb +29 -10
- data/lib/pipe_drive/resource_base.rb +17 -0
- data/lib/pipe_drive_ruby_wrapper.rb +25 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af042bbd75c486a6402e783b422e6a7bc8f6144c2efb7bd2c050c149e59290e0
|
4
|
+
data.tar.gz: f0eca92a11ca625dc15005ab56fb2f22b8c0020bfff88cee99c7abcfc0ef8262
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81c4ef35bd3ade27bb52d0bf58bad303f5104628ed2bd261a1d39cf50045e904dcf643f42441b4dd560203d08954f7d9b155a4f18b36a5601ee1b4d52439d49d
|
7
|
+
data.tar.gz: dd2de0dbf8c30ae95d58ab6897fb22884029f5eea173f73246438e14ab5a91382f35027fdb5c4026ad4743144f36093440680ab2d2dae401a0d108d445d47af4
|
data/lib/pipe_drive/deal.rb
CHANGED
@@ -2,5 +2,13 @@ module PipeDrive
|
|
2
2
|
class Deal < ResourceBase
|
3
3
|
ALLOW_FOR_SEARCH_TERMS = %i[title]
|
4
4
|
ALLOW_FOR_ADDITION_SEARCH_OPTS = %i[org_id person_id]
|
5
|
+
|
6
|
+
def organization
|
7
|
+
Organization.find_by_id(org_id)
|
8
|
+
end
|
9
|
+
|
10
|
+
def person
|
11
|
+
Person.find_by_id(person_id)
|
12
|
+
end
|
5
13
|
end
|
6
14
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
module PipeDrive
|
2
2
|
class FieldBase < Base
|
3
|
-
def
|
3
|
+
def add_to_field_infos
|
4
4
|
resource = self.class.correspond_resource.to_sym
|
5
|
-
field_name = parameterize(name, '_')
|
6
|
-
PipeDrive.field_keys[resource][field_name] = {id: id, key: key}
|
5
|
+
field_name = parameterize(name, '_')
|
6
|
+
PipeDrive.field_keys[resource][field_name.to_sym] = {id: id, key: key}
|
7
|
+
PipeDrive.field_names[resource][key] = {id: id, name: field_name}
|
7
8
|
end
|
8
9
|
|
9
10
|
class << self
|
@@ -33,36 +34,54 @@ module PipeDrive
|
|
33
34
|
|
34
35
|
def create(opts)
|
35
36
|
new_field = super(opts)
|
36
|
-
new_field.
|
37
|
+
new_field.add_to_field_infos
|
37
38
|
end
|
38
39
|
|
39
|
-
def
|
40
|
+
def field_infos_map
|
40
41
|
field_keys_map = Hash.new{|hash, key| hash[key] = {}}
|
42
|
+
field_names_map = Hash.new{|hash, key| hash[key] = {}}
|
41
43
|
resource = correspond_resource.to_sym
|
42
44
|
list.each do |field|
|
43
|
-
field_name = parameterize(field.name, '_')
|
44
|
-
field_keys_map[resource][field_name] = {id: field.id, key: field.key}
|
45
|
+
field_name = parameterize(field.name, '_')
|
46
|
+
field_keys_map[resource][field_name.to_sym] = {id: field.id, key: field.key}
|
47
|
+
field_names_map[resource][field.key] = {id: field.id, name: field_name}
|
45
48
|
end
|
46
|
-
field_keys_map
|
49
|
+
{key_map: field_keys_map, name_map: field_names_map}
|
47
50
|
end
|
48
51
|
|
49
52
|
def cache_keys
|
50
53
|
PipeDrive.field_keys[correspond_resource.to_sym]
|
51
54
|
end
|
52
55
|
|
56
|
+
def cache_names
|
57
|
+
PipeDrive.field_names[correspond_resource.to_sym]
|
58
|
+
end
|
59
|
+
|
53
60
|
def pipedrive_key_of(field_name)
|
54
61
|
cache_field_name = field_name.is_a?(String) ? parameterize(field_name, '_').to_sym : field_name
|
55
62
|
pipedrive_key = cache_keys[cache_field_name]
|
56
63
|
return pipedrive_key[:key] unless pipedrive_key.nil?
|
57
|
-
PipeDrive.
|
64
|
+
PipeDrive.reset_field_infos!
|
58
65
|
pipedrive_key = cache_keys[cache_field_name]
|
59
66
|
if pipedrive_key.nil?
|
60
|
-
raise TargetNotFound.new(self.name, :
|
67
|
+
raise TargetNotFound.new(self.name, :field_name, field_name)
|
61
68
|
else
|
62
69
|
pipedrive_key[:key]
|
63
70
|
end
|
64
71
|
end
|
65
72
|
|
73
|
+
def pipedrive_name_of(field_key)
|
74
|
+
pipedrive_name = cache_names[field_key]
|
75
|
+
return pipedrive_name[:name] unless pipedrive_name.nil?
|
76
|
+
PipeDrive.reset_field_infos!
|
77
|
+
pipedrive_name = cache_names[field_key]
|
78
|
+
if pipedrive_name.nil?
|
79
|
+
raise TargetNotFound.new(self.name, :field_key, field_key)
|
80
|
+
else
|
81
|
+
pipedrive_name[:name]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
66
85
|
end
|
67
86
|
end
|
68
87
|
end
|
@@ -1,6 +1,19 @@
|
|
1
1
|
module PipeDrive
|
2
2
|
class ResourceBase < Base
|
3
3
|
|
4
|
+
def initialize(attrs)
|
5
|
+
data = attrs[:data] || PipeDrive.hash_except(attrs, [:additional_data])
|
6
|
+
processed_data = {}
|
7
|
+
data.each_pair do |key, value|
|
8
|
+
field_name_map = self.class.field_names[key.to_s]
|
9
|
+
field_name = field_name_map.nil? ? key : field_name_map[:name]
|
10
|
+
processed_data[field_name] = value
|
11
|
+
end
|
12
|
+
attrs[:data] = processed_data
|
13
|
+
|
14
|
+
super(attrs)
|
15
|
+
end
|
16
|
+
|
4
17
|
protected
|
5
18
|
|
6
19
|
def pagination(path, params, &block)
|
@@ -17,6 +30,10 @@ module PipeDrive
|
|
17
30
|
PipeDrive.field_keys[resource_name.to_sym]
|
18
31
|
end
|
19
32
|
|
33
|
+
def field_names
|
34
|
+
PipeDrive.field_names[resource_name.to_sym]
|
35
|
+
end
|
36
|
+
|
20
37
|
def resource_class
|
21
38
|
self
|
22
39
|
end
|
@@ -11,7 +11,7 @@ module PipeDrive
|
|
11
11
|
FIELD_CLASSES = %w[OrganizationField PersonField DealField]
|
12
12
|
|
13
13
|
class << self; attr_accessor :api_token; end
|
14
|
-
class << self; attr_writer :field_keys, :stage_ids; end
|
14
|
+
class << self; attr_writer :field_keys, :field_names, :stage_ids; end
|
15
15
|
|
16
16
|
class << self
|
17
17
|
def setup
|
@@ -19,21 +19,21 @@ module PipeDrive
|
|
19
19
|
self
|
20
20
|
end
|
21
21
|
|
22
|
+
def field_infos
|
23
|
+
return @field_infos unless @field_infos.nil? || @field_infos.empty?
|
24
|
+
@field_infos = obtain_field_infos
|
25
|
+
end
|
26
|
+
|
27
|
+
def reset_field_infos!
|
28
|
+
@field_infos = obtain_field_infos
|
29
|
+
end
|
30
|
+
|
22
31
|
def field_keys
|
23
|
-
|
24
|
-
@field_keys = {}
|
25
|
-
FIELD_CLASSES.each do |class_name|
|
26
|
-
@field_keys.merge!(const_get(class_name).field_keys_map)
|
27
|
-
end
|
28
|
-
@field_keys
|
32
|
+
@fields_keys = field_infos[:key_map]
|
29
33
|
end
|
30
34
|
|
31
|
-
def
|
32
|
-
@
|
33
|
-
FIELD_CLASSES.each do |class_name|
|
34
|
-
@field_keys.merge!(const_get(class_name).field_keys_map)
|
35
|
-
end
|
36
|
-
@field_keys
|
35
|
+
def field_names
|
36
|
+
@field_names = field_infos[:name_map]
|
37
37
|
end
|
38
38
|
|
39
39
|
def stage_ids
|
@@ -58,6 +58,18 @@ module PipeDrive
|
|
58
58
|
remain_keys = all_keys - except_keys
|
59
59
|
hash.slice(*remain_keys)
|
60
60
|
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def obtain_field_infos
|
65
|
+
field_infos = {key_map: {}, name_map: {}}
|
66
|
+
FIELD_CLASSES.each do |class_name|
|
67
|
+
infos = const_get(class_name).field_infos_map
|
68
|
+
field_infos[:key_map].merge!(infos[:key_map])
|
69
|
+
field_infos[:name_map].merge!(infos[:name_map])
|
70
|
+
end
|
71
|
+
field_infos
|
72
|
+
end
|
61
73
|
end
|
62
74
|
|
63
75
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipe_drive_ruby_wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JiaRou Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|