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 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