pipedrive-connect 1.2.11 → 1.2.13
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/CHANGELOG.md +9 -0
- data/lib/pipedrive/api_operations/request.rb +2 -2
- data/lib/pipedrive/api_operations/update.rb +1 -1
- data/lib/pipedrive/resource.rb +69 -61
- data/lib/pipedrive/resources/lead.rb +3 -1
- data/lib/pipedrive/resources/lead_label.rb +1 -0
- data/lib/pipedrive/version.rb +1 -1
- 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: 35988325b69c627a5892597bc7a2f1b0a25d0e30f4ceb34390ba8479e70f299b
|
4
|
+
data.tar.gz: 5fe78e92cdc521ee89a9ef102b12e22ee5b48e5aaf4314b8bb93fe80830b81be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 636f0f99a7a2a32a33bad658b060867c703df03af930a97dda717bd019cbd1115b1ffc8a08aaa8d1c2936861066436e3310429a9a3a061f17cd3d9935523bb39
|
7
|
+
data.tar.gz: 481e86ad08a91796abe0f3a52e6b90d509e6beae87a1686867391bd792028c4208d5f56bdf5f492266bfc0ad5ee02b044ef992fbf555ce23982d46c29530f684
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,15 @@ This file contains all notable changes to this project.
|
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
5
5
|
This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).
|
6
6
|
|
7
|
+
## [1.2.13] - 2022-12-08
|
8
|
+
|
9
|
+
- Update `LeadLabel` resource to use _PATCH_ method (as according to the API doc)
|
10
|
+
|
11
|
+
## [1.2.12] - 2022-12-08
|
12
|
+
|
13
|
+
- Add the capability to override the HTTP method used to update a resource
|
14
|
+
- Update `Lead` resource to use _PATCH_ method (as according to the API doc)
|
15
|
+
|
7
16
|
## [1.2.11] - 2022-11-21
|
8
17
|
|
9
18
|
- Added `find` method for user to work for the `find` endpoint of the Pipedrive API
|
@@ -11,13 +11,13 @@ module Pipedrive
|
|
11
11
|
def request(method, url, params = {})
|
12
12
|
check_api_key!
|
13
13
|
raise "Not supported method" \
|
14
|
-
unless %i[get post put delete].include?(method)
|
14
|
+
unless %i[get post put patch delete].include?(method)
|
15
15
|
|
16
16
|
Util.debug "#{name} #{method.upcase} #{url}"
|
17
17
|
response = api_client.send(method) do |req|
|
18
18
|
req.url url
|
19
19
|
req.params = { api_token: Pipedrive.api_key }
|
20
|
-
if %i[post put].include?(method)
|
20
|
+
if %i[post put patch].include?(method)
|
21
21
|
req.body = params.to_json
|
22
22
|
else
|
23
23
|
req.params.merge!(params)
|
data/lib/pipedrive/resource.rb
CHANGED
@@ -9,81 +9,85 @@ module Pipedrive
|
|
9
9
|
|
10
10
|
class << self
|
11
11
|
attr_accessor :resources_url
|
12
|
-
end
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
def update_method(method_override=nil)
|
14
|
+
@update_method ||= method_override
|
15
|
+
end
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
raise NotImplementedError,
|
21
|
-
"Pipedrive::Resource is an abstract class. You should perform actions " \
|
22
|
-
"on its subclasses (Organization, Person, Deal, etc)"
|
17
|
+
def class_name
|
18
|
+
name.split("::")[-1]
|
23
19
|
end
|
24
|
-
resources_url || "#{class_name.downcase}s"
|
25
|
-
end
|
26
20
|
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
def resource_url
|
22
|
+
if self == Resource
|
23
|
+
raise NotImplementedError,
|
24
|
+
"Pipedrive::Resource is an abstract class. You should perform actions " \
|
25
|
+
"on its subclasses (Organization, Person, Deal, etc)"
|
26
|
+
end
|
27
|
+
resources_url || "#{class_name.downcase}s"
|
28
|
+
end
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
def fields_dicc
|
31
|
+
@fields_dicc ||= fields[0] if respond_to? :fields
|
32
|
+
end
|
33
|
+
|
34
|
+
def inverted_fields_dicc
|
35
|
+
@inverted_fields_dicc ||= fields_dicc&.invert
|
36
|
+
end
|
34
37
|
|
35
|
-
|
36
|
-
|
38
|
+
def search_for_fields(values)
|
39
|
+
return values unless values.is_a?(Hash) && fields_dicc&.any?
|
37
40
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
values.reduce({}) do |new_hash, (k, v)|
|
42
|
+
if inverted_fields_dicc[k]
|
43
|
+
new_hash.merge(inverted_fields_dicc[k] => v)
|
44
|
+
else
|
45
|
+
new_hash.merge(k => v)
|
46
|
+
end
|
43
47
|
end
|
44
48
|
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.retrieve(id)
|
48
|
-
response = request(:get, "#{resource_url}/#{id}")
|
49
|
-
new(response.dig(:data))
|
50
|
-
end
|
51
49
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
def retrieve(id)
|
51
|
+
response = request(:get, "#{resource_url}/#{id}")
|
52
|
+
new(response.dig(:data))
|
53
|
+
end
|
56
54
|
|
57
|
-
|
58
|
-
|
59
|
-
:
|
60
|
-
|
61
|
-
{ term: term }.merge(params)
|
62
|
-
)
|
63
|
-
response.dig(:data, :items).map { |d| new(d.dig(:item)) }
|
64
|
-
end
|
55
|
+
def all(params = {})
|
56
|
+
response = request(:get, resource_url, params)
|
57
|
+
response.dig(:data)&.map { |d| new(d) }
|
58
|
+
end
|
65
59
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
60
|
+
def search(term, params = {})
|
61
|
+
response = request(
|
62
|
+
:get,
|
63
|
+
"#{resource_url}/search",
|
64
|
+
{ term: term }.merge(params)
|
65
|
+
)
|
66
|
+
response.dig(:data, :items).map { |d| new(d.dig(:item)) }
|
70
67
|
end
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
68
|
+
|
69
|
+
def has_many(resource_name, class_name:)
|
70
|
+
unless resource_name && class_name
|
71
|
+
raise "You must specify the resource name and its class name " \
|
72
|
+
"For example has_many :deals, class_name: 'Deal'"
|
73
|
+
end
|
74
|
+
class_name_lower_case = class_name.downcase
|
75
|
+
# always include all the data of the resource
|
76
|
+
options = { "include_#{class_name_lower_case}_data": 1 }
|
77
|
+
# add namespace to class_name
|
78
|
+
class_name = "::Pipedrive::#{class_name}" unless class_name.include?("Pipedrive")
|
79
|
+
define_method(resource_name) do |params = {}|
|
80
|
+
response = request(:get,
|
81
|
+
"#{resource_url}/#{resource_name}",
|
82
|
+
params.merge(options))
|
83
|
+
response.dig(:data)&.map do |data|
|
84
|
+
class_name_as_sym = class_name_lower_case.to_sym
|
85
|
+
data[:metadata] = data
|
86
|
+
if data.key?(class_name_as_sym)
|
87
|
+
data = data.merge(data.delete(class_name_as_sym))
|
88
|
+
end
|
89
|
+
Object.const_get(class_name).new(data)
|
85
90
|
end
|
86
|
-
Object.const_get(class_name).new(data)
|
87
91
|
end
|
88
92
|
end
|
89
93
|
end
|
@@ -149,6 +153,10 @@ module Pipedrive
|
|
149
153
|
self
|
150
154
|
end
|
151
155
|
|
156
|
+
def update_method
|
157
|
+
self.class.update_method
|
158
|
+
end
|
159
|
+
|
152
160
|
protected def fetch_value(key, is_custom_field)
|
153
161
|
@data[is_custom_field ? self.class.inverted_fields_dicc.dig(key) : key]
|
154
162
|
end
|
data/lib/pipedrive/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipedrive-connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Get on Board
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|