コード例 #1
0
    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']
コード例 #2
0
    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
コード例 #3
0
    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"
コード例 #4
0
    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'
コード例 #5
0
    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)
コード例 #6
0
ファイル: auth.py プロジェクト: ncc-unesp/goo-dataproxy
    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
コード例 #7
0
ファイル: models.py プロジェクト: ncc-unesp/goo-dataproxy
 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)
コード例 #8
0
 def create_api(self):
     self.api = API(self.api_uri, format="json", debug=self.debug)
コード例 #9
0
 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']