pipe_drive_ruby_wrapper 0.2.2 → 0.2.3
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/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
|