pipe_drive_ruby_wrapper 0.2.2 → 0.2.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a0306cb9643370e9c2bdc925d0b0b9d0457d0a397e918f64d007e33d96db583
4
- data.tar.gz: 995f2307d138885030d5f0b2bfaacfc2c69680cd4817a4e34cef60ffd0a36364
3
+ metadata.gz: 2647fab70c379ff20436d080ddd527925ec09675e1d1877feae8ec3906bf6a3c
4
+ data.tar.gz: 15193cb7e1e84fc3b35f29540f45f07b61216e18d5cac6d386b8de944440823a
5
5
  SHA512:
6
- metadata.gz: 8f13c5c3cf4ca52b0d8d2418d1d2e7cf2770ab203679fb1efcf8153b9d0b1c59c4c34d587af15557942c37c92cc5972bc18c4484f95390897d6cf4309ba7ca34
7
- data.tar.gz: beec160b8ab90d67935ec626cef412e28a0d06a44ab7081b21a6e56fe0e29d3b404f39d5127fd340b43765f687201ae15fc99bd140bf8a2c7b29b74d87812d72
6
+ metadata.gz: 7a8849be98b7fa2c1a62902ae9b09ffb06507d6f183f1942f5181d4f02450b0768ab71e763bdb1e547afbddf8c284c9ed3138767cafdeb72d2e4f554a9a30eba
7
+ data.tar.gz: 61c2c6c60c020b017a21bc699367e7b94d5fed2e6c015aa40dbafa03e81560adeaeba1ad8c078ae38fca68eb63a2386d0fab75052b8a140feafa1aae7e6338c5
@@ -2,5 +2,15 @@ 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
+ pipedrive_org_id = org_id.is_a?(Hash) ? org_id[:value] : org_id
8
+ Organization.find_by_id(pipedrive_org_id)
9
+ end
10
+
11
+ def person
12
+ pipedrive_person_id = person_id.is_a?(Hash) ? person_id[:value] : person_id
13
+ Person.find_by_id(pipedrive_person_id)
14
+ end
5
15
  end
6
16
  end
@@ -1,9 +1,10 @@
1
1
  module PipeDrive
2
2
  class FieldBase < Base
3
- def add_to_field_keys
3
+ def add_to_field_infos
4
4
  resource = self.class.correspond_resource.to_sym
5
- field_name = parameterize(name, '_').to_sym
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,55 @@ module PipeDrive
33
34
 
34
35
  def create(opts)
35
36
  new_field = super(opts)
36
- new_field.add_to_field_keys
37
+ new_field.add_to_field_infos
37
38
  end
38
39
 
39
- def field_keys_map
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, '_').to_sym
44
- field_keys_map[resource][field_name] = {id: field.id, key: field.key}
45
+ next if field.id.nil?
46
+ field_name = parameterize(field.name, '_')
47
+ field_keys_map[resource][field_name.to_sym] = {id: field.id, key: field.key}
48
+ field_names_map[resource][field.key] = {id: field.id, name: field_name}
45
49
  end
46
- field_keys_map
50
+ {key_map: field_keys_map, name_map: field_names_map}
47
51
  end
48
52
 
49
53
  def cache_keys
50
54
  PipeDrive.field_keys[correspond_resource.to_sym]
51
55
  end
52
56
 
57
+ def cache_names
58
+ PipeDrive.field_names[correspond_resource.to_sym]
59
+ end
60
+
53
61
  def pipedrive_key_of(field_name)
54
62
  cache_field_name = field_name.is_a?(String) ? parameterize(field_name, '_').to_sym : field_name
55
63
  pipedrive_key = cache_keys[cache_field_name]
56
64
  return pipedrive_key[:key] unless pipedrive_key.nil?
57
- PipeDrive.reset_field_keys!
65
+ PipeDrive.reset_field_infos!
58
66
  pipedrive_key = cache_keys[cache_field_name]
59
67
  if pipedrive_key.nil?
60
- raise TargetNotFound.new(self.name, :name, field_name)
68
+ raise TargetNotFound.new(self.name, :field_name, field_name)
61
69
  else
62
70
  pipedrive_key[:key]
63
71
  end
64
72
  end
65
73
 
74
+ def pipedrive_name_of(field_key)
75
+ pipedrive_name = cache_names[field_key]
76
+ return pipedrive_name[:name] unless pipedrive_name.nil?
77
+ PipeDrive.reset_field_infos!
78
+ pipedrive_name = cache_names[field_key]
79
+ if pipedrive_name.nil?
80
+ raise TargetNotFound.new(self.name, :field_key, field_key)
81
+ else
82
+ pipedrive_name[:name]
83
+ end
84
+ end
85
+
66
86
  end
67
87
  end
68
88
  end
@@ -3,5 +3,17 @@ module PipeDrive
3
3
  ALLOW_FOR_SEARCH_TERMS = %i[name]
4
4
  ALLOW_FOR_ADDITION_SEARCH_OPTS = %i[]
5
5
 
6
+ class << self
7
+
8
+ def pipeline_ids_map
9
+ id_map = {}
10
+ list.each do |pipeline|
11
+ pipeline_name = parameterize(pipeline.name, '_').to_sym
12
+ id_map[pipeline_name] = pipeline.id
13
+ end
14
+ id_map
15
+ end
16
+
17
+ end
6
18
  end
7
19
  end
@@ -1,6 +1,26 @@
1
1
  module PipeDrive
2
2
  class ResourceBase < Base
3
3
 
4
+ def initialize(attrs)
5
+ unless self.class.field_names.nil?
6
+ data = attrs[:data] || PipeDrive.hash_except(attrs, [:additional_data])
7
+ processed_data = {}
8
+ data.each_pair do |key, value|
9
+ key = key.to_s
10
+ if key.end_with?('_id')
11
+ field_name = key
12
+ else
13
+ field_name_map = self.class.field_names[key]
14
+ field_name = field_name_map.nil? ? key : field_name_map[:name]
15
+ end
16
+ processed_data[field_name] = value
17
+ end
18
+ attrs[:data] = processed_data
19
+ end
20
+
21
+ super(attrs)
22
+ end
23
+
4
24
  protected
5
25
 
6
26
  def pagination(path, params, &block)
@@ -17,6 +37,10 @@ module PipeDrive
17
37
  PipeDrive.field_keys[resource_name.to_sym]
18
38
  end
19
39
 
40
+ def field_names
41
+ PipeDrive.field_names[resource_name.to_sym]
42
+ end
43
+
20
44
  def resource_class
21
45
  self
22
46
  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, :pipeline_ids; end
15
15
 
16
16
  class << self
17
17
  def setup
@@ -19,32 +19,39 @@ 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
- return @field_keys unless @field_keys.nil? || @field_keys.empty?
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 reset_field_keys!
32
- @field_keys = {}
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
40
- return @stage_ids unless @stage_ids.nil? || @stage_ids.empty?
41
- @stage_ids = Stage.stage_ids_map
40
+ @stage_ids ||= Stage.stage_ids_map
42
41
  end
43
42
 
44
43
  def reset_stage_ids!
45
44
  @stage_ids = Stage.stage_ids_map
46
45
  end
47
46
 
47
+ def pipeline_ids
48
+ @pipeline_ids ||= Pipeline.pipeline_ids_map
49
+ end
50
+
51
+ def reset_pipeline_ids!
52
+ @pipeline_ids = Pipeline.pipeline_ids_map
53
+ end
54
+
48
55
  def host
49
56
  "https://api.pipedrive.com"
50
57
  end
@@ -58,6 +65,18 @@ module PipeDrive
58
65
  remain_keys = all_keys - except_keys
59
66
  hash.slice(*remain_keys)
60
67
  end
68
+
69
+ private
70
+
71
+ def obtain_field_infos
72
+ field_infos = {key_map: {}, name_map: {}}
73
+ FIELD_CLASSES.each do |class_name|
74
+ infos = const_get(class_name).field_infos_map
75
+ field_infos[:key_map].merge!(infos[:key_map])
76
+ field_infos[:name_map].merge!(infos[:name_map])
77
+ end
78
+ field_infos
79
+ end
61
80
  end
62
81
 
63
82
  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.2
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - JiaRou Lee
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-19 00:00:00.000000000 Z
11
+ date: 2021-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -58,7 +58,7 @@ homepage: https://github.com/laura34963/pipe_drive_ruby_wrapper
58
58
  licenses:
59
59
  - MIT
60
60
  metadata: {}
61
- post_install_message:
61
+ post_install_message:
62
62
  rdoc_options:
63
63
  - "--charset=UTF-8"
64
64
  require_paths:
@@ -74,9 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubyforge_project:
78
- rubygems_version: 2.7.7
79
- signing_key:
77
+ rubygems_version: 3.0.1
78
+ signing_key:
80
79
  specification_version: 4
81
80
  summary: Some PipeDrive API Ruby Wrapper
82
81
  test_files: