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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9893998dfcae74b8d260672486acecd728c90e0106ac31ecfa0a9346ecff7d16
4
- data.tar.gz: 56cd3850aec29c134a9b4ebe909fed4521e082bdf7336da21fcee487bbfba162
3
+ metadata.gz: 35988325b69c627a5892597bc7a2f1b0a25d0e30f4ceb34390ba8479e70f299b
4
+ data.tar.gz: 5fe78e92cdc521ee89a9ef102b12e22ee5b48e5aaf4314b8bb93fe80830b81be
5
5
  SHA512:
6
- metadata.gz: 68014fe619c968921a3875415317fe72f4fccc9c2b9cc1860d5ce0d45d551b40d820b4a9e0caba90371066f661c584a5d782cd7cda9efeb1e11d09df6237f488
7
- data.tar.gz: 0e890a6305abdd0fe15d7700bef130fe0d4bcb8b0de5f4dcc42b904ae83d89dedf8c1fe11afa38cdb05f40de6708e3854f14726ebbb5d87bfcbb6bfc0e00489c
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)
@@ -5,7 +5,7 @@ module Pipedrive
5
5
  module Update
6
6
  def update(params)
7
7
  response = request(
8
- :put,
8
+ update_method || :put,
9
9
  resource_url,
10
10
  search_for_fields(params)
11
11
  )
@@ -9,81 +9,85 @@ module Pipedrive
9
9
 
10
10
  class << self
11
11
  attr_accessor :resources_url
12
- end
13
12
 
14
- def self.class_name
15
- name.split("::")[-1]
16
- end
13
+ def update_method(method_override=nil)
14
+ @update_method ||= method_override
15
+ end
17
16
 
18
- def self.resource_url
19
- if self == Resource
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
- def self.fields_dicc
28
- @fields_dicc ||= fields[0] if respond_to? :fields
29
- end
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
- def self.inverted_fields_dicc
32
- @inverted_fields_dicc ||= fields_dicc&.invert
33
- end
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
- def self.search_for_fields(values)
36
- return values unless values.is_a?(Hash) && fields_dicc&.any?
38
+ def search_for_fields(values)
39
+ return values unless values.is_a?(Hash) && fields_dicc&.any?
37
40
 
38
- values.reduce({}) do |new_hash, (k, v)|
39
- if inverted_fields_dicc[k]
40
- new_hash.merge(inverted_fields_dicc[k] => v)
41
- else
42
- new_hash.merge(k => v)
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
- def self.all(params = {})
53
- response = request(:get, resource_url, params)
54
- response.dig(:data)&.map { |d| new(d) }
55
- end
50
+ def retrieve(id)
51
+ response = request(:get, "#{resource_url}/#{id}")
52
+ new(response.dig(:data))
53
+ end
56
54
 
57
- def self.search(term, params = {})
58
- response = request(
59
- :get,
60
- "#{resource_url}/search",
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
- def self.has_many(resource_name, class_name:)
67
- unless resource_name && class_name
68
- raise "You must specify the resource name and its class name " \
69
- "For example has_many :deals, class_name: 'Deal'"
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
- class_name_lower_case = class_name.downcase
72
- # always include all the data of the resource
73
- options = { "include_#{class_name_lower_case}_data": 1 }
74
- # add namespace to class_name
75
- class_name = "::Pipedrive::#{class_name}" unless class_name.include?("Pipedrive")
76
- define_method(resource_name) do |params = {}|
77
- response = request(:get,
78
- "#{resource_url}/#{resource_name}",
79
- params.merge(options))
80
- response.dig(:data)&.map do |data|
81
- class_name_as_sym = class_name_lower_case.to_sym
82
- data[:metadata] = data
83
- if data.key?(class_name_as_sym)
84
- data = data.merge(data.delete(class_name_as_sym))
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
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pipedrive
4
- class Lead < Resource; end
4
+ class Lead < Resource
5
+ update_method :patch
6
+ end
5
7
  end
@@ -3,5 +3,6 @@
3
3
  module Pipedrive
4
4
  class LeadLabel < Resource
5
5
  self.resources_url = "leadLabels"
6
+ update_method :patch
6
7
  end
7
8
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pipedrive
4
- VERSION = "1.2.11"
4
+ VERSION = "1.2.13"
5
5
  end
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.11
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-29 00:00:00.000000000 Z
11
+ date: 2022-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday