def put(self, cmd, args, options):
			'''Upload content for a model.

Usage:
    exo [options] content put <model> <id> <file> [--mime=type] [--meta=meta] [--protected=<bool>]

Command options:
    --mime=type         Set the mime type of the uploaded data. Will autodetect if omitted
	--protected=<bool>  Set to true to make this content unavailable to other model
						serial numbers [default: false]'''

			pop = options['pop']
			exoconfig = options['config']
			ExoException = options['exception']
			ProvisionException = options['provision-exception']
			key = exoconfig.config['vendortoken']

			# if not exist, create.
			try:
				mlist = pop.content_info(key, args['<model>'], args['<id>'])
			except ProvisionException as pe:
				if pe.response.status() == 404:
					meta = args['--meta']
					if meta is None:
						meta = ''
					mlist = pop.content_create(
						key,
						args['<model>'],
						args['<id>'],
						meta,
						protected=args['--protected']=='true')
				else:
					raise

			# whats the max size? Are we going to be ok with the pull it
			# all into RAM method? Short term, yes. Long term, No.
			data=''
			try:
				if args['<file>'] == '-':
					data = sys.stdin.read()
				else:
					with open(args['<file>']) as f:
						data = f.read()
			except __HOLE__ as ex:
				raise ExoException("Could not read {0}".format(args['<file>']))

			if args['--mime'] is None:
				url = pathname2url(args['<file>'])
				mime, encoding = mimetypes.guess_type(url)
			else:
				mime = args['--mime']

			mlist = pop.content_upload(key, args['<model>'], args['<id>'], data, mime)
			if len(mlist.body.strip()) > 0:
				print(mlist.body)


	########################
dataset/ETHPy150Open exosite/exoline/exoline/plugins/provision.py/Plugin.content.put