pipe_rocket 0.0.1 → 0.0.2

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: 794070337cc9ed25712f6ec80fa6d541ca7d9af7bff8ff58003b8aba0c82c130
4
- data.tar.gz: e04b4494afe552d89ed7f4bcaf4cd914a7828c9351649f286907e067fefbb02e
3
+ metadata.gz: c6bedc748fe28608525bb671fe7eedf03c5bbc0e5547b4dcae221b94a014c96e
4
+ data.tar.gz: 97661f23343b9cfd705b9212039c63c13956bdaca73e3731bfd2d527802aa670
5
5
  SHA512:
6
- metadata.gz: 8002c294465b23428b1d79f8ca457a54428ed035463be531730c41b67494b06a410e2531b9afbe255785cdccc0224e4356213ba90d7766f14c106c96a3a0945b
7
- data.tar.gz: 459b00f198b5a96d82f81e61bcf801833620a38d3aafdc44026304a584ff775347fd70e2aae14ded6d7a7f4533dac530a68577a91b337366268bcd2dfcd30660
6
+ metadata.gz: e1fc43d0728dac71a4fafa9c0dd4e2cf933aec20ee6a62ab0e986aa3078662afe74f943a396e21b1b196c97957401af4c1f7dac8105a9f44261685e55ca4e0ed
7
+ data.tar.gz: 3b4a31dc6b8838e2f66ef296aa42d34367d7b6bc754d9ac26762ed4f7043ed33fdf287a648e0b6719d471feb5dd9bf402a93094531783db0e4505217aeb43c7d
@@ -2,7 +2,8 @@ module PipeRocket
2
2
  class EventsController < ApplicationController
3
3
  skip_before_action :verify_authenticity_token
4
4
  def handle
5
- ActiveSupport::Notifications.instrument "#{params[:object]}_#{params[:event]}", {params[:object].to_sym => "PipeRocket::#{params[:object].titleize}".constantize.new(params[:current])}
5
+ json = params[:current] || params[:previous]
6
+ ActiveSupport::Notifications.instrument "#{params[:object]}_#{params[:event]}", {params[:object].to_sym => "PipeRocket::#{params[:object].titleize}".constantize.new(json)}
6
7
  end
7
8
  end
8
9
  end
@@ -4,6 +4,8 @@ require 'pipe_rocket/person'
4
4
  module PipeRocket
5
5
  class Deal < Entity
6
6
  attr_accessor :organization, :person
7
+
8
+ # Returns hash {custom_field_key: PipeRocket::Field object}
7
9
  def self.key_field_hash
8
10
  @@key_field_hash ||= Pipedrive.deal_fields.key_field_hash
9
11
  end
@@ -39,10 +41,12 @@ module PipeRocket
39
41
  end
40
42
  end
41
43
 
44
+ # Returns PipeRocket::Stage object corresponding to current deal stage
42
45
  def stage
43
46
  Pipedrive.stages.find(self.stage_id)
44
47
  end
45
48
 
49
+ # Returns stage name like PipelineName:StageName
46
50
  def display_stage_name
47
51
  self.stage.display_name
48
52
  end
@@ -9,6 +9,7 @@ module PipeRocket
9
9
  end
10
10
  end
11
11
 
12
+ # Assign custom fields, using their names but not keys
12
13
  def assign_custom_fields(key_name_hash, entity_hash)
13
14
  names = key_name_hash.map do |key, field|
14
15
  name = field.name
@@ -28,6 +29,7 @@ module PipeRocket
28
29
  self.class.class_eval {attr_accessor *names}
29
30
  end
30
31
 
32
+ # Override custom field name if it present in CUSTOM_FIELD_NAMES
31
33
  def transform_field_name(key, name)
32
34
  hash = ::CUSTOM_FIELD_NAMES
33
35
  class_name = self.class.name.demodulize.underscore.to_sym
@@ -6,11 +6,13 @@ module PipeRocket
6
6
  @is_subfield ||= false
7
7
  end
8
8
 
9
+ # Return hash {option_id: option_value}
9
10
  def options_hash
10
11
  return {} unless @options
11
12
  @options.map{|option|{option['id'].to_s => option['label']}}.inject(:merge)
12
13
  end
13
-
14
+
15
+ # Return value of field
14
16
  def value
15
17
  options_hash[option_id]
16
18
  end
@@ -6,14 +6,17 @@ module PipeRocket
6
6
  @resource_name = resource_name
7
7
  end
8
8
 
9
+ # Returns hash {custom_field_key: PipeRocket::Field object}
9
10
  def key_field_hash
10
11
  Pipedrive.send("#{@resource_name.split(/(?=[A-Z])/).first}_fields").all.select{|field|field.edit_flag || field.is_subfield}.map{|field|{field.key => field}}.inject(:merge) || {}
11
12
  end
12
13
 
14
+ # Returns hash {custom_field_key: custom_field_name}
13
15
  def key_name_hash
14
16
  Pipedrive.send("#{@resource_name.split(/(?=[A-Z])/).first}_fields").all.select{|field|field.edit_flag || field.is_subfield}.map{|field|{field.key => field.name}}.inject(:merge) || {}
15
17
  end
16
18
 
19
+ # Returns hash {custom_field_name: custom_field_key}
17
20
  def name_key_hash
18
21
  Pipedrive.send("#{@resource_name.split(/(?=[A-Z])/).first}_fields").all.select{|field|field.edit_flag || field.is_subfield}.map{|field|{field.name => field.key}}.inject(:merge) || {}
19
22
  end
@@ -1,5 +1,6 @@
1
1
  module PipeRocket
2
2
  class Organization < Entity
3
+ # Returns hash {custom_field_key: PipeRocket::Field object}
3
4
  def self.key_field_hash
4
5
  @@key_field_hash ||= Pipedrive.organization_fields.key_field_hash
5
6
  end
@@ -2,6 +2,7 @@ module PipeRocket
2
2
  class Person < Entity
3
3
  attr_accessor :email, :phone, :organization, :id
4
4
 
5
+ # Returns hash {custom_field_key: PipeRocket::Field object}
5
6
  def self.key_field_hash
6
7
  @@key_field_hash ||= Pipedrive.person_fields.key_field_hash
7
8
  end
@@ -25,6 +26,6 @@ module PipeRocket
25
26
  nil
26
27
  end
27
28
  end
28
- end
29
+ end
29
30
  end
30
31
  end
@@ -6,6 +6,7 @@ module PipeRocket
6
6
  @resource_name = resource_name
7
7
  end
8
8
 
9
+ # Find person by email
9
10
  def find_by_email(email)
10
11
  uri = build_uri({term: email, search_by_email: true }, 'find')
11
12
  response = HTTP.get(uri)
@@ -21,10 +21,12 @@ module PipeRocket
21
21
  @has_custom_fields = RESOURCES_WITH_CUSTOM_FIELDS.include?(@resource_name)
22
22
  end
23
23
 
24
+ # Build resource_name class object from hash
24
25
  def build_entity(raw)
25
26
  "PipeRocket::#{@resource_name.titleize.delete(' ')}".constantize.new(raw)
26
27
  end
27
28
 
29
+ # Build uri for request
28
30
  def build_uri(params = {}, specificator = nil)
29
31
  params.merge!(api_token: ENV['pipedrive_api_token'])
30
32
  query_string = params.map{|k,v|"#{k}=#{v}"}.join('&')
@@ -32,6 +34,7 @@ module PipeRocket
32
34
  uri = URI("#{HOST}/#{plural_resource_name}/#{specificator}?#{query_string}")
33
35
  end
34
36
 
37
+ # Getting all @resource_name object from Pipedrive
35
38
  def all
36
39
  uri = build_uri
37
40
  response = HTTP.get(uri)
@@ -47,6 +50,7 @@ module PipeRocket
47
50
  raise PipeRocket::Error.new(408)
48
51
  end
49
52
 
53
+ # Create @resource_name in Pipedrive
50
54
  def create(params)
51
55
  uri = build_uri
52
56
  response = HTTP.post(uri, form: transform_custom_fields(params))
@@ -61,6 +65,7 @@ module PipeRocket
61
65
  raise PipeRocket::Error.new(408)
62
66
  end
63
67
 
68
+ # Find @resource_name object by id
64
69
  def find(id)
65
70
  uri = build_uri({}, id)
66
71
  response = HTTP.get(uri)
@@ -76,10 +81,12 @@ module PipeRocket
76
81
  raise PipeRocket::Error.new(408)
77
82
  end
78
83
 
84
+ # Getting first @resource_name object
79
85
  def first
80
86
  self.all.first
81
87
  end
82
88
 
89
+ # Update @resource_name object by id
83
90
  def update(id, params)
84
91
  uri = build_uri({}, id)
85
92
  response = HTTP.put(uri, form: transform_custom_fields(params))
@@ -96,6 +103,7 @@ module PipeRocket
96
103
 
97
104
  protected
98
105
 
106
+ # Trasform custom fields from their names to keys
99
107
  def transform_custom_fields(params)
100
108
  return params unless @has_custom_fields
101
109
 
@@ -120,13 +128,7 @@ module PipeRocket
120
128
  res
121
129
  end
122
130
 
123
- def transform_field_name(key, name)
124
- hash = ::CUSTOM_FIELD_NAMES
125
- class_name = @resource_name
126
- return name if hash.nil? || hash[class_name].nil? || hash[class_name].key(key.to_sym).nil?
127
- hash[class_name][key.to_sym]
128
- end
129
-
131
+ # Clear string from forbidden symbols for ruby variables
130
132
  def clear_key(key)
131
133
  key = key.underscore.gsub(' ','_')
132
134
  key = key.gsub('%','percent').gsub(/[^a-zA-Z0-9_]/,'')
@@ -1,9 +1,11 @@
1
1
  module PipeRocket
2
2
  class Stage < Entity
3
+ # Return PipeRocket::Pipeline object which related with stage
3
4
  def pipeline
4
5
  Pipedrive.pipelines.find(self.pipeline_id)
5
6
  end
6
7
 
8
+ # Returns stage name like PipelineName:StageName
7
9
  def display_name
8
10
  "#{pipeline.name}:#{name}"
9
11
  end
data/lib/pipe_rocket.rb CHANGED
@@ -10,38 +10,47 @@ require 'pipe_rocket/field_service'
10
10
 
11
11
  class Pipedrive
12
12
 
13
+ # Getting deal service object(PipeRocket::Servcice)
13
14
  def self.deals
14
15
  @@deals_service ||= PipeRocket::Service.new('deal')
15
16
  end
16
17
 
18
+ # Getting \deal_fields service object(PipeRocket::FieldServcice)
17
19
  def self.deal_fields
18
20
  @@deal_fields_service ||= PipeRocket::FieldService.new('dealField')
19
21
  end
20
22
 
23
+ # Getting note service object(PipeRocket::Servcice)
21
24
  def self.notes
22
25
  @@notes_service ||= PipeRocket::Service.new('note')
23
26
  end
24
27
 
28
+ # Getting organization service object(PipeRocket::Servcice)
25
29
  def self.organizations
26
30
  @@organizations_service ||= PipeRocket::Service.new('organization')
27
31
  end
28
32
 
33
+ # Getting \organization_field service object(PipeRocket::FieldServcice)
29
34
  def self.organization_fields
30
35
  @@organization_fields ||= PipeRocket::FieldService.new('organizationField')
31
36
  end
32
37
 
38
+ # Getting person service object(PipeRocket::PersonServcice)
33
39
  def self.persons
34
40
  @@persons_service ||= PipeRocket::PersonService.new('person')
35
41
  end
36
42
 
43
+ # Getting \person_field service object(PipeRocket::FieldServcice)
37
44
  def self.person_fields
38
45
  @@person_fields ||= PipeRocket::FieldService.new('personField')
39
46
  end
40
47
 
48
+ # Getting pipeline service object(PipeRocket::Servcice)
41
49
  def self.pipelines
42
50
  @@pipelines_service ||= PipeRocket::Service.new('pipeline')
43
51
  end
44
52
 
53
+ # Getting stages service object(PipeRocket::Servcice)
45
54
  def self.stages
46
55
  @@stages_service ||= PipeRocket::Service.new('stage')
47
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pipe_rocket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agafonov Maksim