Module: JSS::Uploadable
- Included in:
- Computer, MobileDevice, MobileDeviceApplication, Peripheral, Policy, SelfServable
- Defined in:
- lib/jss/api_object/uploadable.rb
Overview
A mixin module providing file-upload capabilities to JSSAPIObject subclasses.
Classes mixing in this module are required to define a constant UPLOAD_TYPES which is a Hash of :type => :resource pairs, like this:
UPLOAD_TYPES = {
:icon => :mobiledeviceapplicationsicon
:app => mobiledeviceapplicationsipa
:attachment => mobiledeviceapplications
}
with one pair for each type of upload that the class can handle. (most of them only handle one, usually :attachment)
When the #upload method is called, one of the keys from that Hash must be specified
Classes with only one upload type may want to redefine #upload to always call super with that one type.
Implementation Notes from casperserver:8443/api/index.htm#!/fileuploads/uploadFiles_post
POST ...JSSResource/fileuploads/<resource>/<idType>/<id>
You can POST different types of files by entering parameters for <resource>, <idType>, and <id>. For example /JSSResource/fileuploads/computers/id/2.
Attachments can be uploaded by specifying computers, mobiledevices, enrollmentprofiles, or peripherals as the resource.
Icons can be uploaded by specifying policies, ebooks, or mobiledeviceapplicationsicon as the resource.
A mobile device application can be uploaded by using mobiledeviceapplicationsipa as the resource.
A disk encryption can be uploaded by specifying diskencryptionconfigurations as the resource.
idTypes supported are “id” and “name”, although peripheral names are not supported.
A sample command is:
curl -k -u user:password https://my.jss:8443/JSSResource/fileuploads/computers/id/2 -F name=@/Users/admin/Documents/Sample.doc -X POST
Constant Summary collapse
- UPLOADABLE =
Constants
true
- UPLOAD_RSRC_PREFIX =
'fileuploads'.freeze
Instance Method Summary collapse
-
#upload(type, local_file) ⇒ String
Upload a file to the JSS via the REST Resource of the object to which this module is mixed in.
Instance Method Details
#upload(type, local_file) ⇒ String
Upload a file to the JSS via the REST Resource of the object to which this module is mixed in.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/jss/api_object/uploadable.rb', line 118 def upload(type, local_file) # the thing's gotta be in the JSS, and have an @id raise JSS::NoSuchItemError, 'Create this #{self.class::RSRC_OBJECT_KEY} in the JSS before uploading files to it.' unless @id && @in_jss # the type has to be defined in the class of self. raise JSS::InvalidDataError, "#{self.class::RSRC_LIST_KEY} only take uploads of type: :#{self.class::UPLOAD_TYPES.keys.join(', :')}." \ unless self.class::UPLOAD_TYPES.keys.include? type # figure out the resource after the UPLOAD_RSRC_PREFIX upload_rsrc = "#{UPLOAD_RSRC_PREFIX}/#{self.class::UPLOAD_TYPES[type]}/id/#{@id}" # make a File object to hand to REST. 'rb' = read,binary file = File.new local_file.to_s, 'rb' # upload it! @api.cnx[upload_rsrc].post name: file end |