def create_object(self, args): inputs = args.inputs object_name = "%s.zip" % args.name fd, filepath = tempfile.mkstemp('.zip', self._slugfy(args.name)) # Create package print 'Creating object package...' for f in inputs: zf = zipfile.ZipFile(filepath, mode='a') try: print ' adding %s' % f zf.write(f) finally: zf.close() server_uri = self._get_data_proxy() f = open(filepath, 'rb') object_data = {'name': object_name, 'file': f} dps_api = API(server_uri, debug=self.debug) result = dps_api.dataobjects.post(data=object_data, token=self.token) f.close() object_id = re.search(r'/api/v1/dataobjects/(\d+)/', result['resource_uri']).group(1) print "%s uploaded with success (#%s)" % (object_name, object_id) # Force tempfile to be removed os.unlink(filepath) return result['resource_uri']
def delete_object(self, args): object_id = args.object_id server_uri = self._get_data_proxy() dps_api = API(server_uri, debug=self.debug) dps_api.dataobjects(object_id).delete(token=self.token) print "Object %s delete with success" % object_id
def download_object(self, args): object_id = args.object_id # Get object info obj = self.api.dataobjects(object_id).get(token=self.token) server_uri = self._get_data_proxy() dps_api = API(server_uri, debug=self.debug) data = dps_api.dataobjects(object_id).get(token=self.token) f = open(obj['name'], "w+") f.write(data) f.close() print "Finish"
def setUp(self): super(DataObjectResourceTest, self).setUp() self.endpoint = 'http://localhost:8001/api/v1/dataproxy/' self.format = 'json' self.filename = '/bin/true' self.object_name = 'true' debug = sys.stderr if settings.DEBUG else False self.server = API(self.endpoint, debug=debug) # Create one token self.token = '2bae7fa7-5810-4664-8264-725fa3a714b1' self.bad_token = 'not-a-valid-token'
def upload_object(self, args): filename = args.object object_name = os.path.basename(filename) if not os.path.exists(filename): print "Error: Failed to open %s" % filename print "Aborting..." sys.exit() server_uri = self._get_data_proxy() f = open(filename, 'rb') object_data = {'name': object_name, 'file': f} if args.public: object_data['public'] = 'true' dps_api = API(server_uri, debug=self.debug) result = dps_api.dataobjects.post(data=object_data, token=self.token) f.close() object_id = re.search(r'/api/v1/dataobjects/(\d+)/', result['resource_uri']).group(1) print "%s uploaded with success (#%s)" % (filename, object_id)
def is_authenticated(self, request, **kwargs): # check if token exists inside the request try: token = request.GET['token'] except KeyError: return False goo_server = settings.GOO_SERVER_URI debug = sys.stderr if settings.DEBUG else False server = API(goo_server, debug=debug) try: response = server.token.get(token=token) if response['expire_time']: request.token = token return True else: return False # pragma: no cover except HttpClientError as e: if e.code == 401: # maybe a pilot token try: response = server.pilot.token.get(token=token) if response['valid']: request.token = token return True else: return False except HttpClientError as e: if e.code == 401: return False else: raise e # pragma: no cover else: raise e # pragma: no cover return False # pragma: no cover
def __init__(self, token=None): goo_server = settings.GOO_SERVER_URI self.proxy_token = settings.GOO_SERVER_TOKEN self.user_token = token debug = sys.stderr if settings.DEBUG else False self.server = API(goo_server, debug=debug)
def create_api(self): self.api = API(self.api_uri, format="json", debug=self.debug)
def request_token(self, username, password): api = API(self.api_uri, auth=(username, password), debug=self.debug) token = api.auth.post({}) self.set_token(token['token']) return token['token']