pipedrive_jetrockets 0.0.54 → 0.0.55
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/pipedrive_jetrockets.rb +8 -1
- data/lib/pipedrive_jetrockets/deal.rb +9 -2
- data/lib/pipedrive_jetrockets/deal_field.rb +5 -0
- data/lib/pipedrive_jetrockets/field_service.rb +17 -0
- data/lib/pipedrive_jetrockets/note.rb +0 -2
- data/lib/pipedrive_jetrockets/organization.rb +0 -2
- data/lib/pipedrive_jetrockets/person.rb +0 -2
- data/lib/pipedrive_jetrockets/person_service.rb +26 -0
- data/lib/pipedrive_jetrockets/pipeline.rb +0 -2
- data/lib/pipedrive_jetrockets/service.rb +24 -19
- data/lib/pipedrive_jetrockets/stage.rb +0 -2
- data/lib/pipedrive_jetrockets/user.rb +0 -2
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e872b160dc14ea553d1a7a11c40e927d496e9a05bc90683c7ec78ed089bc6c5a
|
4
|
+
data.tar.gz: 6e860c042f2feb5abb992c6a13a0a8243dd5e338079becf8b086a2905d6060ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4e496807253c7a407c8c25d667504c56c81b93d71375eb3a4c83769b7fa1f86fa93248d01a3db8f5d740645f2daebfe23558a973f1c74274d7070a0192f5bb0
|
7
|
+
data.tar.gz: 4770210888593712da635721dbea71476e7947984bd8f302f51a05f0f588f1af3212271c256db08392729930f9120dbfc7555883d095fc55591e3aa0ccb69423
|
data/lib/pipedrive_jetrockets.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'net/http'
|
2
|
+
require 'pipedrive_jetrockets/entity'
|
2
3
|
require 'pipedrive_jetrockets/engine'
|
3
4
|
require 'pipedrive_jetrockets/service'
|
5
|
+
require 'pipedrive_jetrockets/person_service'
|
6
|
+
require 'pipedrive_jetrockets/field_service'
|
4
7
|
|
5
8
|
class Pipedrive
|
6
9
|
|
@@ -8,6 +11,10 @@ class Pipedrive
|
|
8
11
|
@@deals_service ||= PipedriveJetrockets::Service.new('deal')
|
9
12
|
end
|
10
13
|
|
14
|
+
def self.deal_fields
|
15
|
+
@@deal_fields_service ||= PipedriveJetrockets::FieldService.new('dealField')
|
16
|
+
end
|
17
|
+
|
11
18
|
def self.notes
|
12
19
|
@@notes_service ||= PipedriveJetrockets::Service.new('note')
|
13
20
|
end
|
@@ -17,7 +24,7 @@ class Pipedrive
|
|
17
24
|
end
|
18
25
|
|
19
26
|
def self.persons
|
20
|
-
@@persons_service ||= PipedriveJetrockets::
|
27
|
+
@@persons_service ||= PipedriveJetrockets::PersonService.new('person')
|
21
28
|
end
|
22
29
|
|
23
30
|
def self.pipelines
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'pipedrive_jetrockets/entity'
|
2
1
|
require 'pipedrive_jetrockets/organization'
|
3
2
|
require 'pipedrive_jetrockets/person'
|
4
3
|
|
@@ -7,10 +6,18 @@ module PipedriveJetrockets
|
|
7
6
|
attr_accessor :id, :organization, :title, :value, :currency, :status,
|
8
7
|
:stage_id, :person, :add_time, :update_time
|
9
8
|
def initialize(hash)
|
10
|
-
|
9
|
+
@@key_name_hash ||= Pipedrive.deal_fields.key_name_hash
|
10
|
+
super(hash.except(*@@key_name_hash.keys))
|
11
|
+
|
11
12
|
org_id = hash['org_id']
|
12
13
|
person_id = hash['person_id']
|
13
14
|
|
15
|
+
@@key_name_hash.each do |key, name|
|
16
|
+
name = name.underscore.gsub(' ','_')
|
17
|
+
instance_variable_set("@#{name}", hash[key])
|
18
|
+
Deal.class_eval {attr_accessor name}
|
19
|
+
end
|
20
|
+
|
14
21
|
if org_id
|
15
22
|
if org_id.kind_of? Integer
|
16
23
|
@organization = Pipedrive.organizations.find(org_id)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module PipedriveJetrockets
|
2
|
+
class FieldService < Service
|
3
|
+
HOST = 'https://api.pipedrive.com/v1'
|
4
|
+
|
5
|
+
def initialize(resource_name)
|
6
|
+
@resource_name = resource_name
|
7
|
+
end
|
8
|
+
|
9
|
+
def key_name_hash
|
10
|
+
Pipedrive.deal_fields.all.map{|field|{field.key => field.name}}.inject(:merge)
|
11
|
+
end
|
12
|
+
|
13
|
+
def name_key_hash
|
14
|
+
Pipedrive.deal_fields.all.map{|field|{field.name => field.key}}.inject(:merge)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module PipedriveJetrockets
|
2
|
+
class PersonService < Service
|
3
|
+
HOST = 'https://api.pipedrive.com/v1'
|
4
|
+
|
5
|
+
def initialize(resource_name)
|
6
|
+
@resource_name = resource_name
|
7
|
+
end
|
8
|
+
|
9
|
+
def find_by_email(email)
|
10
|
+
uri = build_uri({term: email, search_by_email: true }, 'find')
|
11
|
+
response = HTTP.get(uri)
|
12
|
+
|
13
|
+
case response.code
|
14
|
+
when 200
|
15
|
+
json_array = ::JSON.parse(response)['data']
|
16
|
+
return [] unless json_array
|
17
|
+
json_array.map{|raw|build_entity(raw)}
|
18
|
+
else
|
19
|
+
raise PipedriveJetrockets::Error.new(response.code)
|
20
|
+
end
|
21
|
+
rescue HTTP::ConnectionError
|
22
|
+
raise PipedriveJetrockets::Error.new(408)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'http'
|
2
2
|
require 'pipedrive_jetrockets/deal'
|
3
|
+
require 'pipedrive_jetrockets/deal_field'
|
3
4
|
require 'pipedrive_jetrockets/note'
|
4
5
|
require 'pipedrive_jetrockets/organization'
|
5
6
|
require 'pipedrive_jetrockets/person'
|
@@ -11,13 +12,15 @@ require 'pipedrive_jetrockets/error'
|
|
11
12
|
module PipedriveJetrockets
|
12
13
|
class Service
|
13
14
|
HOST = 'https://api.pipedrive.com/v1'
|
15
|
+
RESOURCES_WITH_CUSTOM_FIELDS = %w(deal organization person)
|
14
16
|
|
15
17
|
def initialize(resource_name)
|
16
18
|
@resource_name = resource_name
|
19
|
+
@has_custom_fields = RESOURCES_WITH_CUSTOM_FIELDS.include?(@resource_name)
|
17
20
|
end
|
18
21
|
|
19
22
|
def build_entity(raw)
|
20
|
-
"PipedriveJetrockets::#{@resource_name.titleize}".constantize.new(raw)
|
23
|
+
"PipedriveJetrockets::#{@resource_name.titleize.delete(' ')}".constantize.new(raw)
|
21
24
|
end
|
22
25
|
|
23
26
|
def build_uri(params = {}, specificator = nil)
|
@@ -71,30 +74,13 @@ module PipedriveJetrockets
|
|
71
74
|
raise PipedriveJetrockets::Error.new(408)
|
72
75
|
end
|
73
76
|
|
74
|
-
def find_by_email(email)
|
75
|
-
raise NoMethodError if @resource_name != 'person'
|
76
|
-
uri = build_uri({term: email, search_by_email: true }, 'find')
|
77
|
-
response = HTTP.get(uri)
|
78
|
-
|
79
|
-
case response.code
|
80
|
-
when 200
|
81
|
-
json_array = ::JSON.parse(response)['data']
|
82
|
-
return [] unless json_array
|
83
|
-
json_array.map{|raw|build_entity(raw)}
|
84
|
-
else
|
85
|
-
raise PipedriveJetrockets::Error.new(response.code)
|
86
|
-
end
|
87
|
-
rescue HTTP::ConnectionError
|
88
|
-
raise PipedriveJetrockets::Error.new(408)
|
89
|
-
end
|
90
|
-
|
91
77
|
def first
|
92
78
|
self.all.first
|
93
79
|
end
|
94
80
|
|
95
81
|
def update(id, params)
|
96
82
|
uri = build_uri({}, id)
|
97
|
-
response = HTTP.put(uri, form: params)
|
83
|
+
response = HTTP.put(uri, form: transform_custom_fields(params))
|
98
84
|
|
99
85
|
case response.code
|
100
86
|
when 200
|
@@ -105,5 +91,24 @@ module PipedriveJetrockets
|
|
105
91
|
rescue HTTP::ConnectionError
|
106
92
|
raise PipedriveJetrockets::Error.new(408)
|
107
93
|
end
|
94
|
+
|
95
|
+
protected
|
96
|
+
|
97
|
+
def transform_custom_fields(params)
|
98
|
+
return params unless @has_custom_fields
|
99
|
+
|
100
|
+
@@name_key_hash = Pipedrive.send("#{@resource_name}_fields").name_key_hash
|
101
|
+
keys = @@name_key_hash.keys
|
102
|
+
res = {}
|
103
|
+
params.each do |name, value|
|
104
|
+
if keys.include?(name.to_s) #Custom Field
|
105
|
+
res[@@name_key_hash[name.to_s]] = value
|
106
|
+
else
|
107
|
+
res[name] = value
|
108
|
+
end
|
109
|
+
end
|
110
|
+
res
|
111
|
+
end
|
112
|
+
|
108
113
|
end
|
109
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipedrive_jetrockets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.55
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Agafonov Maksim
|
@@ -34,12 +34,15 @@ files:
|
|
34
34
|
- config/routes.rb
|
35
35
|
- lib/pipedrive_jetrockets.rb
|
36
36
|
- lib/pipedrive_jetrockets/deal.rb
|
37
|
+
- lib/pipedrive_jetrockets/deal_field.rb
|
37
38
|
- lib/pipedrive_jetrockets/engine.rb
|
38
39
|
- lib/pipedrive_jetrockets/entity.rb
|
39
40
|
- lib/pipedrive_jetrockets/error.rb
|
41
|
+
- lib/pipedrive_jetrockets/field_service.rb
|
40
42
|
- lib/pipedrive_jetrockets/note.rb
|
41
43
|
- lib/pipedrive_jetrockets/organization.rb
|
42
44
|
- lib/pipedrive_jetrockets/person.rb
|
45
|
+
- lib/pipedrive_jetrockets/person_service.rb
|
43
46
|
- lib/pipedrive_jetrockets/pipeline.rb
|
44
47
|
- lib/pipedrive_jetrockets/service.rb
|
45
48
|
- lib/pipedrive_jetrockets/stage.rb
|