module Asana::Resources::AttachmentUploading
Internal: Mixin to add the ability to upload an attachment to a specific Asana
resource (a Task
, really).
Public Instance Methods
attach(filename: required('filename'), mime: required('mime'), options: {}, **data)
click to toggle source
Uploads a new attachment to the resource.
filename - [String] the absolute path of the file to upload. mime - [String] the MIME type of the file options - [Hash] the request I/O options data - [Hash] extra attributes to post
rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength
# File lib/asana/resource_includes/attachment_uploading.rb, line 15 def attach(filename: required('filename'), mime: required('mime'), options: {}, **data) path = File.expand_path(filename) unless File.exist?(path) fail ArgumentError, "file #{filename} doesn't exist" end upload = Faraday::UploadIO.new(path, mime) response = client.post("/#{self.class.plural_name}/#{id}/attachments", body: data, upload: upload, options: options) Attachment.new(parse(response).first, client: client) end