pipedrive.rb 0.2.0 → 0.3.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 +4 -4
- data/.rubocop.yml +98 -10
- data/.travis.yml +4 -7
- data/Gemfile +4 -6
- data/HISTORY.md +43 -0
- data/Rakefile +5 -2
- data/lib/pipedrive.rb +9 -1
- data/lib/pipedrive/activity.rb +2 -0
- data/lib/pipedrive/activity_type.rb +2 -0
- data/lib/pipedrive/base.rb +14 -11
- data/lib/pipedrive/deal.rb +2 -0
- data/lib/pipedrive/deal_field.rb +2 -0
- data/lib/pipedrive/file.rb +2 -0
- data/lib/pipedrive/filter.rb +2 -0
- data/lib/pipedrive/goal.rb +2 -0
- data/lib/pipedrive/note.rb +2 -0
- data/lib/pipedrive/operations/create.rb +2 -0
- data/lib/pipedrive/operations/delete.rb +2 -0
- data/lib/pipedrive/operations/read.rb +6 -3
- data/lib/pipedrive/operations/update.rb +4 -1
- data/lib/pipedrive/organization.rb +6 -3
- data/lib/pipedrive/organization_field.rb +2 -0
- data/lib/pipedrive/person.rb +7 -3
- data/lib/pipedrive/person_field.rb +2 -0
- data/lib/pipedrive/pipeline.rb +10 -0
- data/lib/pipedrive/product.rb +2 -0
- data/lib/pipedrive/product_field.rb +2 -0
- data/lib/pipedrive/railties.rb +2 -0
- data/lib/pipedrive/role.rb +2 -0
- data/lib/pipedrive/stage.rb +2 -0
- data/lib/pipedrive/user.rb +10 -0
- data/lib/pipedrive/utils.rb +6 -4
- data/lib/pipedrive/version.rb +3 -1
- data/pipedrive.gemspec +12 -8
- data/spec/lib/pipedrive/activity_spec.rb +6 -2
- data/spec/lib/pipedrive/activity_type_spec.rb +6 -2
- data/spec/lib/pipedrive/base_spec.rb +82 -49
- data/spec/lib/pipedrive/deal_field_spec.rb +6 -2
- data/spec/lib/pipedrive/deal_spec.rb +6 -2
- data/spec/lib/pipedrive/file_spec.rb +6 -2
- data/spec/lib/pipedrive/filter_spec.rb +6 -2
- data/spec/lib/pipedrive/goal_spec.rb +6 -2
- data/spec/lib/pipedrive/note_spec.rb +6 -2
- data/spec/lib/pipedrive/ogranization_spec.rb +6 -2
- data/spec/lib/pipedrive/operations/create_spec.rb +5 -3
- data/spec/lib/pipedrive/operations/delete_spec.rb +8 -5
- data/spec/lib/pipedrive/operations/read_spec.rb +32 -24
- data/spec/lib/pipedrive/operations/update_spec.rb +9 -6
- data/spec/lib/pipedrive/organization_field_spec.rb +6 -2
- data/spec/lib/pipedrive/person_field_spec.rb +6 -2
- data/spec/lib/pipedrive/person_spec.rb +18 -12
- data/spec/lib/pipedrive/product_field_spec.rb +6 -2
- data/spec/lib/pipedrive/product_spec.rb +6 -2
- data/spec/lib/pipedrive_spec.rb +28 -20
- data/spec/spec_helper.rb +2 -2
- metadata +40 -10
- data/Guardfile +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7e40f6c74545bc03a4ff8c6d21ebbd6cecebbc4dd7ac7d850762282e1934ea9
|
4
|
+
data.tar.gz: 6803a9949ee5045b78b21b1fd26839070606745e7fe72e3b3e6f3cf968967c51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 990a3812062360039f8b50d2a5e295a6839f9c28ec0220f4675c8ff560f7b26b9430ca7a1cbaf802115667344fdb038047fb5c8d433323e302e2a129c9d7004c
|
7
|
+
data.tar.gz: 1e4c52a0bfc631c21675efc1560ebdc400ae06f48e9b224043bd7dd28f6e0bd5818ca7e41d5e62f0862cdba8f879cbacb23bf0a5235088980f8537390a2608dc
|
data/.rubocop.yml
CHANGED
@@ -1,17 +1,105 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop/cop/internal_affairs
|
3
|
+
- rubocop-performance
|
4
|
+
- rubocop-rspec
|
1
5
|
AllCops:
|
2
|
-
|
3
|
-
- '**/Rakefile'
|
6
|
+
NewCops: enable
|
4
7
|
Exclude:
|
5
|
-
-
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
- "bin/*"
|
9
|
+
- "vendor/**/*"
|
10
|
+
- "Rakefile"
|
11
|
+
- "tmp/**/*"
|
12
|
+
- ".git/**/*"
|
13
|
+
TargetRubyVersion: 2.5
|
14
|
+
Style/Documentation:
|
15
|
+
Enabled: false
|
16
|
+
Layout/LineLength:
|
17
|
+
Max: 1000
|
18
|
+
Metrics/MethodLength:
|
19
|
+
Max: 250
|
20
|
+
Metrics/ClassLength:
|
21
|
+
Max: 1000
|
22
|
+
Metrics/AbcSize:
|
23
|
+
Max: 250
|
24
|
+
Metrics/BlockLength:
|
25
|
+
Max: 1500
|
26
|
+
Metrics/CyclomaticComplexity:
|
27
|
+
Max: 50
|
28
|
+
Metrics/PerceivedComplexity:
|
29
|
+
Max: 50
|
30
|
+
Style/ClassAndModuleChildren:
|
9
31
|
Enabled: false
|
10
32
|
Style/ModuleFunction:
|
11
33
|
Enabled: false
|
12
|
-
Style/
|
34
|
+
Style/ParallelAssignment:
|
13
35
|
Enabled: false
|
14
|
-
|
36
|
+
Style/SymbolProc:
|
37
|
+
Enabled: false
|
38
|
+
Layout/HashAlignment:
|
39
|
+
Enabled: false
|
40
|
+
Metrics/BlockNesting:
|
41
|
+
Enabled: false
|
42
|
+
Lint/NonLocalExitFromIterator:
|
43
|
+
Enabled: false
|
44
|
+
Style/HashEachMethods:
|
45
|
+
Enabled: true
|
46
|
+
Style/HashTransformKeys:
|
47
|
+
Enabled: true
|
48
|
+
Style/HashTransformValues:
|
49
|
+
Enabled: true
|
50
|
+
Style/AndOr:
|
51
|
+
Enabled: false
|
52
|
+
RSpec/ExampleLength:
|
53
|
+
Enabled: false
|
54
|
+
RSpec/MultipleExpectations:
|
55
|
+
Enabled: false
|
56
|
+
RSpec/DescribeClass:
|
57
|
+
Enabled: false
|
58
|
+
Style/IfInsideElse:
|
59
|
+
Enabled: false
|
60
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
61
|
+
Enabled: true
|
62
|
+
Layout/SpaceAroundMethodCallOperator:
|
63
|
+
Enabled: true
|
64
|
+
Lint/DeprecatedOpenSSLConstant:
|
65
|
+
Enabled: true
|
66
|
+
Lint/MixedRegexpCaptureTypes:
|
67
|
+
Enabled: true
|
68
|
+
Lint/RaiseException:
|
69
|
+
Enabled: true
|
70
|
+
Lint/StructNewOverride:
|
71
|
+
Enabled: true
|
72
|
+
Style/ExponentialNotation:
|
73
|
+
Enabled: false
|
74
|
+
Style/RedundantFetchBlock:
|
75
|
+
Enabled: true
|
76
|
+
Style/RedundantRegexpCharacterClass:
|
77
|
+
Enabled: true
|
78
|
+
Style/RedundantRegexpEscape:
|
79
|
+
Enabled: true
|
80
|
+
Style/SlicingWithRange:
|
81
|
+
Enabled: true
|
82
|
+
Style/AccessorGrouping:
|
83
|
+
Enabled: true
|
84
|
+
Style/BisectedAttrAccessor:
|
85
|
+
Enabled: true
|
86
|
+
Style/RedundantAssignment:
|
87
|
+
Enabled: true
|
88
|
+
Performance/AncestorsInclude:
|
89
|
+
Enabled: true
|
90
|
+
Performance/BigDecimalWithNumericArgument:
|
91
|
+
Enabled: true
|
92
|
+
Performance/RedundantSortBlock:
|
93
|
+
Enabled: true
|
94
|
+
Performance/RedundantStringChars:
|
95
|
+
Enabled: true
|
96
|
+
Performance/ReverseFirst:
|
97
|
+
Enabled: true
|
98
|
+
Performance/SortReverse:
|
99
|
+
Enabled: true
|
100
|
+
Performance/Squeeze:
|
101
|
+
Enabled: true
|
102
|
+
Performance/StringInclude:
|
103
|
+
Enabled: true
|
104
|
+
RSpec/ContextWording:
|
15
105
|
Enabled: false
|
16
|
-
Metrics/MethodLength:
|
17
|
-
Max: 15
|
data/.travis.yml
CHANGED
@@ -2,19 +2,16 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- ruby-head
|
4
4
|
- jruby-19mode
|
5
|
-
- rbx-2
|
6
|
-
- 2.1.10
|
7
|
-
- 2.2.10
|
8
|
-
- 2.3.8
|
9
|
-
- 2.4.6
|
10
|
-
- 2.5.5
|
11
5
|
- 2.6.3
|
6
|
+
- 2.7.2
|
7
|
+
|
8
|
+
jdk:
|
9
|
+
- openjdk8
|
12
10
|
|
13
11
|
matrix:
|
14
12
|
allow_failures:
|
15
13
|
- rvm: ruby-head
|
16
14
|
- rvm: jruby-19mode
|
17
|
-
- rvm: rbx-2
|
18
15
|
|
19
16
|
bundler_args: --without local_development
|
20
17
|
|
data/Gemfile
CHANGED
@@ -1,17 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Specify your gem's dependencies in pipedrive.gemspec
|
4
6
|
gemspec
|
5
7
|
|
6
8
|
group :test do
|
7
|
-
gem '
|
8
|
-
gem '
|
9
|
+
gem 'coveralls', require: false
|
10
|
+
gem 'simplecov', require: false
|
9
11
|
end
|
10
12
|
|
11
13
|
group :local_development do
|
12
|
-
gem 'terminal-notifier-guard', require: false if RUBY_PLATFORM.downcase.include?('darwin')
|
13
|
-
gem 'guard-rspec', '>= 4.3.1' ,require: false
|
14
|
-
gem 'guard-bundler', require: false
|
15
|
-
gem 'guard-rubocop', require: false
|
16
14
|
gem 'pry'
|
17
15
|
end
|
data/HISTORY.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [v0.3.0](https://github.com/amoniacou/pipedrive.rb/compare/v0.2.0...v0.3.0) - 2020-10-10
|
9
|
+
|
10
|
+
### Merged
|
11
|
+
|
12
|
+
- add User endpoints [`#15`](https://github.com/amoniacou/pipedrive.rb/pull/15)
|
13
|
+
- add pipeline endpoints [`#17`](https://github.com/amoniacou/pipedrive.rb/pull/17)
|
14
|
+
- add pipeline endpoints [`#2`](https://github.com/amoniacou/pipedrive.rb/pull/2)
|
15
|
+
|
16
|
+
### Commits
|
17
|
+
|
18
|
+
- Small code improvements [`fb28bb4`](https://github.com/amoniacou/pipedrive.rb/commit/fb28bb4ed3d86c15a4f2a95247e13393d598aad1)
|
19
|
+
- Fix specs [`e772b83`](https://github.com/amoniacou/pipedrive.rb/commit/e772b837c61150b574ef3f6c95b495e1f2dfda9a)
|
20
|
+
- Update .travis.yml [`873cea4`](https://github.com/amoniacou/pipedrive.rb/commit/873cea4cfd82806ef71f62a3db823322b168f964)
|
21
|
+
|
22
|
+
## [v0.2.0](https://github.com/amoniacou/pipedrive.rb/compare/v0.1.0...v0.2.0) - 2020-01-14
|
23
|
+
|
24
|
+
### Merged
|
25
|
+
|
26
|
+
- Inflection fix for persons [`#9`](https://github.com/amoniacou/pipedrive.rb/pull/9)
|
27
|
+
- Move adapter setup to the last line in defining connection [`#7`](https://github.com/amoniacou/pipedrive.rb/pull/7)
|
28
|
+
- Replace find by find_by_id in the docs [`#5`](https://github.com/amoniacou/pipedrive.rb/pull/5)
|
29
|
+
- Find by name organisation && update personfields [`#3`](https://github.com/amoniacou/pipedrive.rb/pull/3)
|
30
|
+
|
31
|
+
### Commits
|
32
|
+
|
33
|
+
- Remove problematic reek and cane [`bf8535c`](https://github.com/amoniacou/pipedrive.rb/commit/bf8535c10d0894fb508828a43aefb036b000c263)
|
34
|
+
- Fix tests [`bca6171`](https://github.com/amoniacou/pipedrive.rb/commit/bca6171ae43068bd671bf6b8ecf924a7e2ad1af3)
|
35
|
+
- Fix outdated rubocop, contrain on rake to pass reek [`e799cbc`](https://github.com/amoniacou/pipedrive.rb/commit/e799cbca4eada29582e6c5a1e20e8f97ed709713)
|
36
|
+
|
37
|
+
## v0.1.0 - 2014-10-16
|
38
|
+
|
39
|
+
### Commits
|
40
|
+
|
41
|
+
- Initial commit [`cbd2138`](https://github.com/amoniacou/pipedrive.rb/commit/cbd2138ae11a19f4a398af3c25fac8ed2e6a0e1b)
|
42
|
+
- Test coverage and small refactoring [`ca0577f`](https://github.com/amoniacou/pipedrive.rb/commit/ca0577fef23f59515cb58ea152e10d3130f26730)
|
43
|
+
- Add more entities basic support. Add support for field selector [`73b47a4`](https://github.com/amoniacou/pipedrive.rb/commit/73b47a4455b1c50906bbc811bddac7d979fae966)
|
data/Rakefile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
|
-
require 'rspec/core/rake_task'
|
5
4
|
|
6
|
-
|
5
|
+
begin
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
8
|
+
rescue LoadError
|
9
|
+
end
|
7
10
|
|
8
11
|
# rubocop
|
9
12
|
require 'rubocop/rake_task'
|
data/lib/pipedrive.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'logger'
|
2
4
|
require 'active_support/core_ext/hash'
|
3
5
|
require 'active_support/concern'
|
@@ -33,7 +35,7 @@ module Pipedrive
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def logger
|
36
|
-
@logger ||= Logger.new(
|
38
|
+
@logger ||= Logger.new($stdout)
|
37
39
|
end
|
38
40
|
|
39
41
|
reset!
|
@@ -86,3 +88,9 @@ require 'pipedrive/file'
|
|
86
88
|
|
87
89
|
# Notes
|
88
90
|
require 'pipedrive/note'
|
91
|
+
|
92
|
+
# Users
|
93
|
+
require 'pipedrive/user'
|
94
|
+
|
95
|
+
# Pipelines
|
96
|
+
require 'pipedrive/pipeline'
|
data/lib/pipedrive/activity.rb
CHANGED
data/lib/pipedrive/base.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Pipedrive
|
2
4
|
class Base
|
3
5
|
def initialize(api_token = ::Pipedrive.api_token)
|
4
|
-
|
6
|
+
raise 'api_token should be set' unless api_token.present?
|
7
|
+
|
5
8
|
@api_token = api_token
|
6
9
|
end
|
7
10
|
|
@@ -12,7 +15,8 @@ module Pipedrive
|
|
12
15
|
def make_api_call(*args)
|
13
16
|
params = args.extract_options!
|
14
17
|
method = args[0]
|
15
|
-
|
18
|
+
raise 'method param missing' unless method.present?
|
19
|
+
|
16
20
|
url = build_url(args, params.delete(:fields_to_select))
|
17
21
|
begin
|
18
22
|
res = connection.__send__(method.to_sym, url, params)
|
@@ -26,11 +30,9 @@ module Pipedrive
|
|
26
30
|
end
|
27
31
|
|
28
32
|
def build_url(args, fields_to_select = nil)
|
29
|
-
url = "/v1/#{entity_name}"
|
33
|
+
url = +"/v1/#{entity_name}"
|
30
34
|
url << "/#{args[1]}" if args[1]
|
31
|
-
if fields_to_select.is_a?(::Array) && fields_to_select.size
|
32
|
-
url << ":(#{fields_to_select.join(',')})"
|
33
|
-
end
|
35
|
+
url << ":(#{fields_to_select.join(',')})" if fields_to_select.is_a?(::Array) && fields_to_select.size.positive?
|
34
36
|
url << "?api_token=#{@api_token}"
|
35
37
|
url
|
36
38
|
end
|
@@ -52,16 +54,16 @@ module Pipedrive
|
|
52
54
|
failed: false)
|
53
55
|
case res.status
|
54
56
|
when 401
|
55
|
-
failed_res
|
57
|
+
failed_res[:not_authorized] = true
|
56
58
|
when 420
|
57
|
-
failed_res
|
59
|
+
failed_res[:failed] = true
|
58
60
|
end
|
59
61
|
failed_res
|
60
62
|
end
|
61
63
|
|
62
64
|
def entity_name
|
63
|
-
class_name = self.class.name.split(
|
64
|
-
class_names = {
|
65
|
+
class_name = self.class.name.split('::')[-1].downcase.pluralize
|
66
|
+
class_names = { 'people' => 'persons' }
|
65
67
|
class_names[class_name] || class_name
|
66
68
|
end
|
67
69
|
|
@@ -77,7 +79,8 @@ module Pipedrive
|
|
77
79
|
end
|
78
80
|
|
79
81
|
# This method smells of :reek:TooManyStatements
|
80
|
-
|
82
|
+
# :nodoc
|
83
|
+
def connection
|
81
84
|
@connection ||= Faraday.new(faraday_options) do |conn|
|
82
85
|
conn.request :url_encoded
|
83
86
|
conn.response :mashify
|
data/lib/pipedrive/deal.rb
CHANGED
data/lib/pipedrive/deal_field.rb
CHANGED
data/lib/pipedrive/file.rb
CHANGED
data/lib/pipedrive/filter.rb
CHANGED
data/lib/pipedrive/goal.rb
CHANGED
data/lib/pipedrive/note.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Pipedrive
|
2
4
|
module Operations
|
3
5
|
module Read
|
@@ -5,10 +7,10 @@ module Pipedrive
|
|
5
7
|
include ::Enumerable
|
6
8
|
include ::Pipedrive::Utils
|
7
9
|
|
8
|
-
|
9
|
-
def each(params = {})
|
10
|
+
def each(params = {}, &block)
|
10
11
|
return to_enum(:each, params) unless block_given?
|
11
|
-
|
12
|
+
|
13
|
+
follow_pagination(:chunk, [], params, &block)
|
12
14
|
end
|
13
15
|
|
14
16
|
def all(params = {})
|
@@ -18,6 +20,7 @@ module Pipedrive
|
|
18
20
|
def chunk(params = {})
|
19
21
|
res = make_api_call(:get, params)
|
20
22
|
return [] unless res.success?
|
23
|
+
|
21
24
|
res
|
22
25
|
end
|
23
26
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Pipedrive
|
2
4
|
module Operations
|
3
5
|
module Update
|
@@ -7,7 +9,8 @@ module Pipedrive
|
|
7
9
|
params = args.extract_options!
|
8
10
|
params.symbolize_keys!
|
9
11
|
id = params.delete(:id) || args[0]
|
10
|
-
|
12
|
+
raise 'id must be provided' unless id
|
13
|
+
|
11
14
|
make_api_call(:put, id, params)
|
12
15
|
end
|
13
16
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Pipedrive
|
2
4
|
class Organization < Base
|
3
5
|
include ::Pipedrive::Operations::Read
|
@@ -6,12 +8,13 @@ module Pipedrive
|
|
6
8
|
include ::Pipedrive::Operations::Delete
|
7
9
|
include ::Pipedrive::Utils
|
8
10
|
|
9
|
-
def find_by_name(*args)
|
11
|
+
def find_by_name(*args, &block)
|
10
12
|
params = args.extract_options!
|
11
13
|
params[:term] ||= args[0]
|
12
|
-
|
14
|
+
raise 'term is missing' unless params[:term]
|
13
15
|
return to_enum(:find_by_name, params) unless block_given?
|
14
|
-
|
16
|
+
|
17
|
+
follow_pagination(:make_api_call, [:get, 'find'], params, &block)
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|