john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

o2lib

import sys
import os
from lib import o2exceptions

if getattr(sys, 'frozen', None):    # keyword 'frozen' is for setting basedir while in onefile mode in pyinstaller
    basedir = sys._MEIPASS
else:
    basedir = os.path.dirname( __file__ )

sys.path.append( os.path.join( basedir , 'gen_py' ) )

from O2Service import O2Service
from O2Service.ttypes import *
from O2Service.constants import *

from errors.ttypes import *
from cloudfs.ttypes import *
from auth.ttypes import *
from signup.ttypes import *

from gridironthrift.transport import THttpClient
from gridironthrift.transport import TTransport
from gridironthrift.protocol import TBinaryProtocol

class OxygenAdapter():

    api_key = ''
    api_path = ''
    app_name = ''
    oxygen_api_client = 0
    session_id = 0

    def __init__(self, api_key, app_name, api_path):
        try:
            self.api_key = api_key
            self.app_name = app_name
            self.api_path = api_path
            oxygen_api_connector = THttpClient.THttpClient(self.api_path)
            oxygen_api_connector = TTransport.TBufferedTransport(oxygen_api_connector)
            oxygen_api_protocol = TBinaryProtocol.TBinaryProtocol(oxygen_api_connector)

            self.oxygen_api_client = O2Service.Client(oxygen_api_protocol)
#            self.oxygen_api_client = Client(oxygen_api_protocol)
        except Exception as e:
            o2exceptions.handle_exception(e)
        except:
            raise O2UnexpectedException()

    def get_api_service_info(self):
        try:
            return self.oxygen_api_client.getInfo()
        except:
            raise

    def request_login_url(self):
        try:
            return self.oxygen_api_client.requestLogin(self.api_key)
        except:
            raise

    def login_regular_user(self, token_id, oxygen_id, password):
        try:
            return self.oxygen_api_client.loginInternalUser(self.api_key, token_id, '', self.app_name, oxygen_id, password)
        except:
            raise

    def validate_login(self, token_id):
        try:
            retval = self.oxygen_api_client.validateLogin(self.api_key, token_id)
            self.session_id = retval.id
            return retval
        except:
            raise

    def validate_login_and_device(self, token_id, device_id):
        try:
            retval = self.oxygen_api_client.validateLoginAndDevice(self.api_key, token_id, device_id)
            self.session_id = retval.id
            return retval
        except:
            raise

    def logout(self):
        try:
            return self.oxygen_api_client.logout( self.session_id )
        except:
            raise

    def get_current_user_info(self):
        try:
            return self.oxygen_api_client.getUserInfoBySessionId( self.session_id )
        except:
            raise

    def findAllSpacesInAccount(self, createdSince):
        try:
            return self.oxygen_api_client.findAllSpacesInAccount( self.session_id , createdSince )
        except:
            raise

    def findAllUserVolumesInAccount(self, createdSince):
        try:
            return self.oxygen_api_client.findAllUserVolumesInAccount( self.session_id , createdSince )
        except:
            raise



    def retrieve_spaces(self):
        try:
            return self.oxygen_api_client.findSpaces(self.session_id)
        except:
            raise


    def getChildObjects(self, parent):
        try:
            return self.oxygen_api_client.getChildObjects(self.session_id, parent, 0)
        except:
            raise


    def create_download_object( self, api_object ):
        try:
            return self.oxygen_api_client.createDownloadObject( self.session_id , api_object )
        except:
            raise


    # returns ApiFile object?
    def create_folder( self , o2_space_id , o2_space_repository_node_id , parent_folder_id , name ):
        try:
            return self.oxygen_api_client.createFolder(self.session_id, o2_space_id, parent_folder_id, name, o2_space_repository_node_id )
        except:
            raise


    # returns ApiFile object?
    def create_folder_object( self , parent_object , name ):
        try:
            return self.oxygen_api_client.createFolderObject( self.session_id , parent_object , name )     # createFolderObject(self, apiSessionId, parent, name):
        except:
            raise


    def delete_object( self , api_object ):
        try:
            return self.oxygen_api_client.deleteObject( self.session_id , api_object )
        except:
            raise


    def delete_space( self , space_id , space_repository_node_id ):
        try:
            self.oxygen_api_client.deleteSpace( self.session_id , space_id, space_repository_node_id )
        except:
            raise


    def create_space( self ,  name , description , owner_id , capacity , listed , writable_by_default , storage_name = '' ):
        try:
            return self.oxygen_api_client.createSpace( self.session_id , name , description , owner_id , storage_name , capacity , listed , writable_by_default )
        except:
            raise

    """
    def create_upload_object( self, local_file_path, space_id , space_repository_node_id , parent_folder_id = '' ):    # optional if uploading directly to a Space
        try:
            file_name = os.path.basename( local_file_path )
            file_size = os.stat( local_file_path ).st_size
            return self.oxygen_api_client.createUpload( self.session_id, space_id, parent_folder_id, file_name , file_size, space_repository_node_id )
        except:
            raise
    """

    def create_upload_object( self, space_id , space_repository_node_id , file_name , file_size , parent_folder_id = '' ):    # optional if uploading directly to a Space
        try:
            return self.oxygen_api_client.createUpload( self.session_id, space_id, parent_folder_id, file_name , file_size, space_repository_node_id )
        except:
            raise


    def confirm_upload( self, space_id, parent_folder_id, upload_id, name, hash_value, repository_node_service_id , file_modified_timestamp ):
        try:
            return self.oxygen_api_client.confirmUpload(self.session_id, space_id, parent_folder_id, upload_id, name, hash_value, repository_node_service_id , file_modified_timestamp )
        except:
            raise



    # BEGIN UNVERIFIED METHODS #########################


    def is_ldap_user(self, oxygen_id):
        try:
            return self.oxygen_api_client.isExternalUser(self.api_key, oxygen_id)
        except:
            raise

    def retrieve_space_contents(self, o2_space, parent_folder_id):
        try:
            return self.oxygen_api_client.findChildFiles(self.session_id, o2_space.repoNodeServiceId, o2_space.id, parent_folder_id, 0)
        except:
            raise


    def __hashfile( filepath , algorithm_instance , BUFFER_SIZE):
        with open( filepath, 'rb' ) as file:
            while True:
                buffer = file.read( BUFFER_SIZE )
                if not buffer:
                    break
                algorithm_instance.update( buffer )
        return  algorithm_instance.hexdigest()

    def __create_upload(self, space_id, parent_folder_id, name, size_in_bytes, repository_node_service_id):
        try:
            return self.oxygen_api_client.createUpload(self.session_id, space_id, parent_folder_id, name, size_in_bytes, repository_node_service_id)
        except:
            raise




    def __download_file(self, space_id, file_id, repository_node_service_id):
        try:
            return self.oxygen_api_client.createDownload(self.session_id, space_id, file_id, repository_node_service_id)
        except:
            raise

    def retrieve_file(self, o2_file):
        try:
            return self.oxygen_api_client.findFileById(self.session_id, o2_file.spaceId, o2_file.id, o2_file.repositoryNodeServiceId)
        except:
            raise

    def load_object_by_id(self, space_id, object_id, repository_node_service_id):
        try:
            return self.oxygen_api_client.findObjectById(self.session_id, space_id, object_id, repository_node_service_id)
        except:
            raise

    def delete_file(self, o2_file):
        try:
            self.oxygen_api_client.deleteFile(self.session_id, o2_file)
        except:
            raise

    def move_file(self, o2_file, new_parent_folder_id, new_name):
        try:
            return self.oxygen_api_client.moveFile(self.session_id, o2_file, new_parent_folder_id, new_name)
        except:
            raise

    def move_object(self, source, new_parent_folder_id, new_name):
        try:
            return self.oxygen_api_client.moveObject(self.session_id, source, new_parent_folder_id, new_name)
        except:
            raise

    def copy_file(self, o2_file, new_parent_folder_id, new_name):
        try:
            return self.oxygen_api_client.copyFile(self.session_id, o2_file, new_parent_folder_id, new_name)
        except:
            raise


    def create_web_link(self, o2_file, expiration_in_minutes, password):
        try:
            return self.oxygen_api_client.createWeblinkUrl(self.session_id, o2_file, expiration_in_minutes, password)
        except:
            raise


    def create_download( self, space_id, file_id, repository_node_service_id ):
        try:
            return self.oxygen_api_client.createDownload( self.session_id, space_id, file_id, repository_node_service_id )
        except:
            raise

  • « oxygen exception exit decorator
  • o2exceptions »

Published

Mar 9, 2013

Category

python-oxygencloud-snapshot

~570 words

Tags

  • o2lib 1
  • python 180
  • snapshot 12