pipekit 1.0.2 → 1.2.0

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
  SHA1:
3
- metadata.gz: e6630a46d845c5cba3718d5205de34483f31ef26
4
- data.tar.gz: d69d610fad989fde415d30eaf538d69af1edd646
3
+ metadata.gz: e34407109d67d8d9635733ffba1eccc11f6c6e32
4
+ data.tar.gz: 33ddaa1c5efbf60e1814db4c61dfd80cd39f4bbd
5
5
  SHA512:
6
- metadata.gz: 311e5c001d7a53fe07935e0b39920a2b64d488aa68ae6f631ab718eff95e40ec82060c4f36ae156075a8943e52baf88f44d02314e837f26103ac9ab197367302
7
- data.tar.gz: 378b45ecce2fd74a6e704f2adbdbb0f3f656b8e04e67d713359475849a51a16ac20f48184ae1d59603f47bf81860a78d5b26a3dbcc2e11527d72b2fa88560743
6
+ metadata.gz: d5e5629813863251130adf800fe0502651123b5ca3f387459e603f87612e3e95d79352a9ecf290057378b15a7d12b27b82a8ab2f710eb66caf109cdc57cb57e0
7
+ data.tar.gz: f0b7531452f1bccbb2c9d3f50862c572451c7a976cee387de3969a7eaeb254a36f53af32eb9d1d251baca151cf4ba918f1309a3569f64e6de7ca102035cc2444
data/lib/pipekit.rb CHANGED
@@ -7,6 +7,7 @@ require "pipekit/response"
7
7
  require "pipekit/repository"
8
8
  require "pipekit/field_repository"
9
9
  require "pipekit/person"
10
+ require "pipekit/organization"
10
11
  require "pipekit/deal"
11
12
  require "pipekit/person_field"
12
13
  require "pipekit/deal_field"
@@ -46,7 +46,8 @@ module Pipekit
46
46
  # # => "value_not_there"
47
47
  def field_value(resource, field, value)
48
48
  custom_field_values(resource, field)
49
- .fetch(value, value)
49
+ .reduce({}) { |result, (k,v)| result.tap { |result| result[k.to_s] = v } }
50
+ .fetch(value.to_s, value)
50
51
  end
51
52
 
52
53
  # Finds the Pipedrive field value ID from the config if one exists for that
@@ -0,0 +1,5 @@
1
+ module Pipekit
2
+ class Organization
3
+ include Repository
4
+ end
5
+ end
@@ -35,14 +35,9 @@ module Pipekit
35
35
  # This also uses the "request_all_pages" config option when set to do
36
36
  # multiple requests, getting around Pipedrive's pagination
37
37
  def search_by_field(field:, value:)
38
- query = {field_type: "#{resource}Field",
39
- field_key: Config.field_id(resource, field),
40
- return_item_ids: true,
41
- term: Config.field_value_id(resource, field, value),
42
- exact_match: 1
43
- }
38
+ query = search_by_field_query(field, value)
44
39
 
45
- get_request("/searchResults/field", query).response(resource)
40
+ get_request("/searchResults/field", query).response
46
41
  end
47
42
 
48
43
  # Public: Pipedrive GET API call - does a GET request to the Pipedrive API
@@ -69,18 +64,16 @@ module Pipekit
69
64
  response_from self.class.post(uri, options(body: data))
70
65
  end
71
66
 
72
- private
73
-
74
67
  attr_reader :resource
75
68
 
76
69
  def _get(uri, query, result)
77
- return result.response(resource) unless result.fetch_next_request?
70
+ return result.response unless result.fetch_next_request?
78
71
  _get(uri, query, result + get_request(uri, query, result.next_start))
79
72
  end
80
73
 
81
74
  def get_request(uri, query, start = 0)
82
75
  response = self.class.get(uri, options(query: {limit: pagination_limit, start: start}.merge(query)))
83
- Result.new(response)
76
+ Result.new(resource, response)
84
77
  end
85
78
 
86
79
  def response_from(response_data)
@@ -113,8 +106,8 @@ module Pipekit
113
106
  # meaning you don't have to worry about the custom IDs
114
107
  def parse_body(body)
115
108
  body.reduce({}) do |result, (field, value)|
116
- field = Config.field_id(resource, field)
117
109
  value = Config.field_value_id(resource, field, value)
110
+ field = Config.field_id(resource, field)
118
111
  result.tap { |result| result[field] = value }
119
112
  end
120
113
  end
@@ -123,5 +116,15 @@ module Pipekit
123
116
  Config.fetch(:pagination_limit, DEFAULT_PAGINATION_LIMIT)
124
117
  end
125
118
 
119
+ def search_by_field_query(field = nil, value = nil)
120
+ {
121
+ field_type: "#{resource}Field",
122
+ field_key: Config.field_id(resource, field),
123
+ return_item_ids: true,
124
+ term: Config.field_value_id(resource, field, value),
125
+ exact_match: 1
126
+ }
127
+ end
128
+
126
129
  end
127
130
  end
@@ -2,19 +2,20 @@
2
2
  module Pipekit
3
3
  class Result
4
4
 
5
- def initialize(response_data)
5
+ def initialize(resource, response_data)
6
6
  @response_data = response_data
7
+ @resource = resource
7
8
  raise UnsuccessfulRequestError.new(response_data) unless success?
8
9
  end
9
10
 
10
- def response(resource)
11
+ def response
11
12
  raise ResourceNotFoundError.new(response_data) unless resource_found?
12
13
  return Response.new(resource, response_body) unless response_body.is_a? Array
13
14
  response_body.map { |data| Response.new(resource, data) }
14
15
  end
15
16
 
16
17
  def +(other)
17
- self.class.new(other.merged_response(response_body))
18
+ self.class.new(resource, other.merged_response(response_body))
18
19
  end
19
20
 
20
21
  def fetch_next_request?
@@ -26,7 +27,7 @@ module Pipekit
26
27
  end
27
28
 
28
29
  def self.response(resource, response_data)
29
- new(response_data).response(resource)
30
+ new(resource, response_data).response
30
31
  end
31
32
 
32
33
  protected
@@ -39,7 +40,7 @@ module Pipekit
39
40
 
40
41
  private
41
42
 
42
- attr_reader :response_data
43
+ attr_reader :response_data, :resource
43
44
 
44
45
  def pagination_data
45
46
  response_data
@@ -1,3 +1,3 @@
1
1
  module Pipekit
2
- VERSION = "1.0.2"
2
+ VERSION = "1.2.0"
3
3
  end
data/pipekit.gemspec CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_dependency "httparty"
32
+ spec.add_dependency "rack"
32
33
 
33
34
  spec.add_development_dependency "bundler", "~> 1.12"
34
35
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pipekit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jafrog
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2016-09-06 00:00:00.000000000 Z
14
+ date: 2016-11-10 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty
@@ -27,6 +27,20 @@ dependencies:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rack
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
30
44
  - !ruby/object:Gem::Dependency
31
45
  name: bundler
32
46
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +137,7 @@ files:
123
137
  - lib/pipekit/deal_field.rb
124
138
  - lib/pipekit/field_repository.rb
125
139
  - lib/pipekit/note.rb
140
+ - lib/pipekit/organization.rb
126
141
  - lib/pipekit/person.rb
127
142
  - lib/pipekit/person_field.rb
128
143
  - lib/pipekit/repository.rb
@@ -152,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
167
  version: '0'
153
168
  requirements: []
154
169
  rubyforge_project:
155
- rubygems_version: 2.6.4
170
+ rubygems_version: 2.5.1
156
171
  signing_key:
157
172
  specification_version: 4
158
173
  summary: Pipedrive API client for Ruby.