pipe_rocket 0.0.4 → 0.0.5
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/lib/pipe_rocket.rb +9 -2
- data/lib/pipe_rocket/deal.rb +4 -0
- data/lib/pipe_rocket/deal_service.rb +25 -0
- data/lib/pipe_rocket/file.rb +8 -0
- data/lib/pipe_rocket/file_service.rb +25 -0
- data/lib/pipe_rocket/service.rb +6 -4
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea873c4fc92c0f163a925f8e20ee7d10e7350da45701d6ad48a072be2dfdf9c
|
4
|
+
data.tar.gz: 5a570cf50b04f05d1ad5ec160427cc706d60300aaf0584a569576fa65994a2ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 184bbbfb43a32a0a52453f6275a28b2770eb43206bdc50f1006cb5cf7519290b6fec3ec67e0d4dbb27430d00b02e15803e6c947e783f7551e162d56a550edd16
|
7
|
+
data.tar.gz: 196a324be1c0c868242ddc9c23468407ad80601ec099892a2e5c0a211981e98c933e99721d91f2800f29e86970bb6ffaa506fff50156b05d3fda5b1dc14d551a
|
data/lib/pipe_rocket.rb
CHANGED
@@ -5,14 +5,16 @@ unless ENV["RAILS_ENV"] == 'test'
|
|
5
5
|
require 'pipe_rocket/engine'
|
6
6
|
end
|
7
7
|
require 'pipe_rocket/service'
|
8
|
+
require 'pipe_rocket/deal_service'
|
8
9
|
require 'pipe_rocket/person_service'
|
9
10
|
require 'pipe_rocket/field_service'
|
11
|
+
require 'pipe_rocket/file_service'
|
10
12
|
|
11
13
|
class Pipedrive
|
12
14
|
|
13
|
-
# Getting deal
|
15
|
+
# Getting deal \deal_service object(PipeRocket::Servcice)
|
14
16
|
def self.deals
|
15
|
-
@@deals_service ||= PipeRocket::
|
17
|
+
@@deals_service ||= PipeRocket::DealService.new('deal')
|
16
18
|
end
|
17
19
|
|
18
20
|
# Getting \deal_fields service object(PipeRocket::FieldServcice)
|
@@ -20,6 +22,11 @@ class Pipedrive
|
|
20
22
|
@@deal_fields_service ||= PipeRocket::FieldService.new('dealField')
|
21
23
|
end
|
22
24
|
|
25
|
+
# Getting \files service object(PipeRocket::FileService)
|
26
|
+
def self.files
|
27
|
+
@@files_service ||= PipeRocket::FileService.new('file')
|
28
|
+
end
|
29
|
+
|
23
30
|
# Getting note service object(PipeRocket::Servcice)
|
24
31
|
def self.notes
|
25
32
|
@@notes_service ||= PipeRocket::Service.new('note')
|
data/lib/pipe_rocket/deal.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module PipeRocket
|
2
|
+
class DealService < Service
|
3
|
+
HOST = 'https://api.pipedrive.com/v1'
|
4
|
+
|
5
|
+
def initialize(resource_name)
|
6
|
+
@resource_name = resource_name
|
7
|
+
end
|
8
|
+
|
9
|
+
def deal_files(deal_id)
|
10
|
+
uri = build_uri({}, deal_id, 'files')
|
11
|
+
response = HTTP.get(uri)
|
12
|
+
|
13
|
+
case response.code
|
14
|
+
when 200
|
15
|
+
json_array = ::JSON.parse(response)['data']
|
16
|
+
json_array.map{|raw|build_entity(raw, 'file')}
|
17
|
+
else
|
18
|
+
raise PipeRocket::Error.new(response.code)
|
19
|
+
end
|
20
|
+
rescue HTTP::ConnectionError
|
21
|
+
raise PipeRocket::Error.new(408)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PipeRocket
|
2
|
+
class FileService < Service
|
3
|
+
HOST = 'https://api.pipedrive.com/v1'
|
4
|
+
|
5
|
+
def initialize(resource_name)
|
6
|
+
@resource_name = resource_name
|
7
|
+
end
|
8
|
+
|
9
|
+
# Download a file by id
|
10
|
+
def file_url(id)
|
11
|
+
uri = build_uri({}, id, 'download')
|
12
|
+
response = HTTP.get(uri)
|
13
|
+
|
14
|
+
case response.code
|
15
|
+
when 302
|
16
|
+
response.headers['Location']
|
17
|
+
else
|
18
|
+
raise PipeRocket::Error.new(response.code)
|
19
|
+
end
|
20
|
+
rescue HTTP::ConnectionError
|
21
|
+
raise PipeRocket::Error.new(408)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
data/lib/pipe_rocket/service.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'http'
|
2
2
|
require 'pipe_rocket/deal'
|
3
3
|
require 'pipe_rocket/deal_field'
|
4
|
+
require 'pipe_rocket/file'
|
4
5
|
require 'pipe_rocket/note'
|
5
6
|
require 'pipe_rocket/organization'
|
6
7
|
require 'pipe_rocket/organization_field'
|
@@ -22,16 +23,17 @@ module PipeRocket
|
|
22
23
|
end
|
23
24
|
|
24
25
|
# Build resource_name class object from hash
|
25
|
-
def build_entity(raw)
|
26
|
-
|
26
|
+
def build_entity(raw, resource_name = nil)
|
27
|
+
resource_name ||= @resource_name
|
28
|
+
"PipeRocket::#{resource_name.titleize.delete(' ')}".constantize.new(raw)
|
27
29
|
end
|
28
30
|
|
29
31
|
# Build uri for request
|
30
|
-
def build_uri(params = {}, specificator = nil)
|
32
|
+
def build_uri(params = {}, specificator = nil, action = nil)
|
31
33
|
params.merge!(api_token: ENV['pipedrive_api_token'])
|
32
34
|
query_string = params.map{|k,v|"#{k}=#{v}"}.join('&')
|
33
35
|
plural_resource_name = @resource_name == 'person' ? 'persons' : @resource_name.pluralize
|
34
|
-
uri = URI("#{HOST}/#{plural_resource_name}/#{specificator}?#{query_string}")
|
36
|
+
uri = URI("#{HOST}/#{plural_resource_name}/#{specificator}/#{action}?#{query_string}")
|
35
37
|
end
|
36
38
|
|
37
39
|
# Getting all @resource_name object from Pipedrive
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipe_rocket
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Agafonov Maksim
|
@@ -40,11 +40,14 @@ files:
|
|
40
40
|
- lib/pipe_rocket.rb
|
41
41
|
- lib/pipe_rocket/deal.rb
|
42
42
|
- lib/pipe_rocket/deal_field.rb
|
43
|
+
- lib/pipe_rocket/deal_service.rb
|
43
44
|
- lib/pipe_rocket/engine.rb
|
44
45
|
- lib/pipe_rocket/entity.rb
|
45
46
|
- lib/pipe_rocket/error.rb
|
46
47
|
- lib/pipe_rocket/field.rb
|
47
48
|
- lib/pipe_rocket/field_service.rb
|
49
|
+
- lib/pipe_rocket/file.rb
|
50
|
+
- lib/pipe_rocket/file_service.rb
|
48
51
|
- lib/pipe_rocket/note.rb
|
49
52
|
- lib/pipe_rocket/organization.rb
|
50
53
|
- lib/pipe_rocket/organization_field.rb
|