pipekit 1.0.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.