pipe_rocket 0.0.4 → 0.0.5

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
  SHA256:
3
- metadata.gz: c5d7810c7eb83165b4892d150d16653f0f3ff2add25a8569afb1e304d5436c64
4
- data.tar.gz: 43be2bbd52017019cdcdddd38f975d92677a63433ea51279278c6f44d609c9c3
3
+ metadata.gz: bea873c4fc92c0f163a925f8e20ee7d10e7350da45701d6ad48a072be2dfdf9c
4
+ data.tar.gz: 5a570cf50b04f05d1ad5ec160427cc706d60300aaf0584a569576fa65994a2ad
5
5
  SHA512:
6
- metadata.gz: b9e85f55a468ff7d8c3e21ad3ac49ac1fe5d2dd0e71bad6c854f01478e44911f3f9b70aa45b8777d855b69642c5b84c8e0d375b80eace63e274d4724138c4462
7
- data.tar.gz: 7691b82f9b9fdf798f8bbeb1d8a011f674e199ff946af1b6adf119c74978f3721cfce284f6c7e97974a2841bac21036b7fb53a10c6faf2a7b38a42ffb55017a9
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 service object(PipeRocket::Servcice)
15
+ # Getting deal \deal_service object(PipeRocket::Servcice)
14
16
  def self.deals
15
- @@deals_service ||= PipeRocket::Service.new('deal')
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')
@@ -50,5 +50,9 @@ module PipeRocket
50
50
  def display_stage_name
51
51
  self.stage.display_name
52
52
  end
53
+
54
+ def files
55
+ Pipedrive.deals.deal_files(self.id)
56
+ end
53
57
  end
54
58
  end
@@ -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,8 @@
1
+ module PipeRocket
2
+ class File < Entity
3
+ def initialize(hash)
4
+ super(hash)
5
+ @url = Pipedrive.files.file_url(self.id)
6
+ end
7
+ end
8
+ 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
@@ -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
- "PipeRocket::#{@resource_name.titleize.delete(' ')}".constantize.new(raw)
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
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