Skip to content

Commit

Permalink
feature - [upload-file] Add uploading file to hubspot (#214)
Browse files Browse the repository at this point in the history
  • Loading branch information
uyermolkin-hubspot authored Dec 11, 2019
1 parent 745d1de commit 10ed645
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 6 deletions.
1 change: 1 addition & 0 deletions lib/hubspot-ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
require 'hubspot/engagement'
require 'hubspot/subscription'
require 'hubspot/oauth'
require 'hubspot/file'

module Hubspot
def self.configure(config={})
Expand Down
28 changes: 22 additions & 6 deletions lib/hubspot/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -132,12 +132,28 @@ def self.submit(path, opts)
class FilesConnection < Connection
follow_redirects true

def self.get(path, opts)
url = generate_url(path, opts)
response = super(url, read_timeout: read_timeout(opts), open_timeout: open_timeout(opts))
log_request_and_response url, response
raise(Hubspot::RequestError.new(response)) unless response.success?
response.parsed_response
class << self
def get(path, opts)
url = generate_url(path, opts)
response = super(url, read_timeout: read_timeout(opts), open_timeout: open_timeout(opts))
log_request_and_response url, response
raise(Hubspot::RequestError.new(response)) unless response.success?
response.parsed_response
end

def post(path, opts)
url = generate_url(path, opts[:params])
response = super(
url,
body: opts[:body],
headers: { 'Content-Type' => 'multipart/form-data' },
read_timeout: read_timeout(opts), open_timeout: open_timeout(opts)
)
log_request_and_response url, response, opts[:body]
raise(Hubspot::RequestError.new(response)) unless response.success?

response
end
end
end
end
23 changes: 23 additions & 0 deletions lib/hubspot/file.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module Hubspot
class File
UPLOAD_FILE_PATH = '/filemanager/api/v2/files'

class << self
def upload(file, params)
query = {
overwrite: params['overwrite'] || false,
hidden: params['hidden'] || false
}
options = {
multipart:
[
{ name: 'files', contents: file },
{ name: 'file_names', contents: params['file_names'] },
{ name: 'folder_paths', contents: params['folder_paths'] }
]
}
Hubspot::FilesConnection.post(UPLOAD_FILE_PATH, params: query, body: options)
end
end
end
end

0 comments on commit 10ed645

Please sign in to comment.