pipe_drive_ruby_wrapper 0.2.2 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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: