pycrossword  0.3
Pure-Python implementation of a crossword puzzle generator and editor
Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
pycross.utils.onlineservices.Cloudstorage Class Reference

Public Member Functions

def __init__ (self, settings, auto_create_user=False, on_user_exist=None, on_update_users=None, on_error=None, show_errors=False, on_apikey_required=None, on_bearer_required=None, timeout=5000)
 
def init_settings (self, auto_create_user=True)
 
def find_or_create_folder (self, folder_name)
 
def clear_folder (self, folder_id=None)
 
def delete_folder (self, folder_id, permanent=True, recurse=True)
 
def rename_folder (self, folder_id, new_name)
 
def upload_file (self, filepath, folder_id=None, overwrite=False, makelink=True, activelink=True, directlink=True, expire=None, password=None)
 
def delete_file (self, file_id, permanent=True)
 
def rename_file (self, file_id, new_name)
 
def download_file (self, file_id, save_folder='', overwrite=False)
 
def create_file_link (self, file_id, activelink=True, directlink=True, expire=None, password=None)
 
def get_file_link (self, link_id)
 
def update_file_link (self, link_id, activelink=None, expire=None, password=None)
 
def delete_file_link (self, link_id)
 

Public Attributes

 settings
 
 timeout
 
 on_user_exist
 
 on_update_users
 
 on_error
 
 show_errors
 
 on_apikey_required
 
 on_bearer_required
 
 users
 

Static Public Attributes

string APIURL = 'https://api.kloudless.com/v2/'
 
int ACCID = 352604900
 
string ROOTNAME = 'pycrossall'
 
string APP_ID = 'RXaPpmxluGS7vMYoWfve847PzGuvPVdbunZe2W_vJKQdvxzx'
 
string OAUTH_URL = f"https://api.kloudless.com/v1/oauth/?client_id={APP_ID}&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=dropbox&state={{}}"
 

Private Member Functions

def _authenticate (self, force_api_key=False)
 
def _error (self, message, code=None, title=_('Error'), msgtype='error', raise_error=False)
 
def _error_tostr (self, error)
 
def _request (self, url, command='get', returntype='json', error_keymap={ 'message':'message', 'code':'status_code'}, **kwargs)
 
def _get_apikey (self)
 
def _get_bearer (self)
 
def _check_bearer (self, bearer_token=None)
 
def _make_headers (self, content_type='application/json', force_api_key=False)
 
def _create_account (self)
 
def _get_accounts (self, enabled=None, admin=None, search=None)
 
def _get_account_matadata (self, account_id, retrieve_tokens=False, retrieve_full=True)
 
def _get_quota (self)
 
def _get_folder_objects (self, fid, recurse=False)
 
def _get_folder_ancestors (self, folder_id)
 
def _is_user_folder (self, folder_id)
 
def _generate_username (self)
 
def _create_folder (self, folder_name, parent_id='root', error_on_exist=False)
 
def _update_users (self)
 
def _get_file_metadata (self, file_id)
 
def _get_folder_metadata (self, folder_id=None)
 
def _user_exists (self, username, update_user_list=False)
 
def _find_or_create_user (self, username=None, update_user_list=False)
 
def _delete_user (self, username=None)
 

Private Attributes

 _accid
 
 _baseurl
 
 _rootid
 
 _apikey
 
 _bearer
 
 _user
 

Constructor & Destructor Documentation

◆ __init__()

def pycross.utils.onlineservices.Cloudstorage.__init__ (   self,
  settings,
  auto_create_user = False,
  on_user_exist = None,
  on_update_users = None,
  on_error = None,
  show_errors = False,
  on_apikey_required = None,
  on_bearer_required = None,
  timeout = 5000 
)

Member Function Documentation

◆ _authenticate()

def pycross.utils.onlineservices.Cloudstorage._authenticate (   self,
  force_api_key = False 
)
private

◆ _check_bearer()

def pycross.utils.onlineservices.Cloudstorage._check_bearer (   self,
  bearer_token = None 
)
private

◆ _create_account()

def pycross.utils.onlineservices.Cloudstorage._create_account (   self)
private
Create a new client account and bind it to the Kloudless/pycross app.
Retrieved Account ID and Bearer Token will be written to settings.
TODO: Implement when default Dropbox storage is not enough.

◆ _create_folder()

def pycross.utils.onlineservices.Cloudstorage._create_folder (   self,
  folder_name,
  parent_id = 'root',
  error_on_exist = False 
)
private

◆ _delete_user()

def pycross.utils.onlineservices.Cloudstorage._delete_user (   self,
  username = None 
)
private

◆ _error()

def pycross.utils.onlineservices.Cloudstorage._error (   self,
  message,
  code = None,
  title = _('Error'),
  msgtype = 'error',
  raise_error = False 
)
private

◆ _error_tostr()

def pycross.utils.onlineservices.Cloudstorage._error_tostr (   self,
  error 
)
private

◆ _find_or_create_user()

def pycross.utils.onlineservices.Cloudstorage._find_or_create_user (   self,
  username = None,
  update_user_list = False 
)
private
Creates or finds the subfolder: dropbox/pycrossall/<username>.
If found and 'error_on_exist' == True, displays error and quits.
Otherwise, sets self._user = (user_name, user_id).
On any failure, self._user will be set to None.
If username == None (default), an automatic username is generated.

◆ _generate_username()

def pycross.utils.onlineservices.Cloudstorage._generate_username (   self)
private

◆ _get_account_matadata()

def pycross.utils.onlineservices.Cloudstorage._get_account_matadata (   self,
  account_id,
  retrieve_tokens = False,
  retrieve_full = True 
)
private
Service method: gets metadata for account specified by 'account_id'.

◆ _get_accounts()

def pycross.utils.onlineservices.Cloudstorage._get_accounts (   self,
  enabled = None,
  admin = None,
  search = None 
)
private
Service method: lists all accounts tied to the pycross app on Kloudless.

◆ _get_apikey()

def pycross.utils.onlineservices.Cloudstorage._get_apikey (   self)
private

◆ _get_bearer()

def pycross.utils.onlineservices.Cloudstorage._get_bearer (   self)
private

◆ _get_file_metadata()

def pycross.utils.onlineservices.Cloudstorage._get_file_metadata (   self,
  file_id 
)
private
Retrieves the metadata of the given file: name, path, size, date, etc.

◆ _get_folder_ancestors()

def pycross.utils.onlineservices.Cloudstorage._get_folder_ancestors (   self,
  folder_id 
)
private

◆ _get_folder_metadata()

def pycross.utils.onlineservices.Cloudstorage._get_folder_metadata (   self,
  folder_id = None 
)
private
Retrieves the metadata of the given folder: name, path, size, date, etc.
If 'folder_id' is None, the current user's folder will be used.

◆ _get_folder_objects()

def pycross.utils.onlineservices.Cloudstorage._get_folder_objects (   self,
  fid,
  recurse = False 
)
private

◆ _get_quota()

def pycross.utils.onlineservices.Cloudstorage._get_quota (   self)
private
Retrieves storage quota information.

◆ _is_user_folder()

def pycross.utils.onlineservices.Cloudstorage._is_user_folder (   self,
  folder_id 
)
private
Checks if given folder is inside current user's folder.

◆ _make_headers()

def pycross.utils.onlineservices.Cloudstorage._make_headers (   self,
  content_type = 'application/json',
  force_api_key = False 
)
private

◆ _request()

def pycross.utils.onlineservices.Cloudstorage._request (   self,
  url,
  command = 'get',
  returntype = 'json',
  error_keymap = {'message': 'message', 'code': 'status_code'},
**  kwargs 
)
private

◆ _update_users()

def pycross.utils.onlineservices.Cloudstorage._update_users (   self)
private
Updates the list of subfolders present in dropbox/pycrossall root folder.
The names of these subfolders correspond to the names of the
registered users.

◆ _user_exists()

def pycross.utils.onlineservices.Cloudstorage._user_exists (   self,
  username,
  update_user_list = False 
)
private

◆ clear_folder()

def pycross.utils.onlineservices.Cloudstorage.clear_folder (   self,
  folder_id = None 
)
Clears given (sub)folder.

◆ create_file_link()

def pycross.utils.onlineservices.Cloudstorage.create_file_link (   self,
  file_id,
  activelink = True,
  directlink = True,
  expire = None,
  password = None 
)
Creates public link to specified file (given by file ID).
Returns the link meta info (dict).

◆ delete_file()

def pycross.utils.onlineservices.Cloudstorage.delete_file (   self,
  file_id,
  permanent = True 
)
Deletes the file with the given ID, optionally permanently.
Returns True on success, False otherwise.

◆ delete_file_link()

def pycross.utils.onlineservices.Cloudstorage.delete_file_link (   self,
  link_id 
)
Deletes public link to specified file (given by file ID).
Returns True on success / False on failure.

◆ delete_folder()

def pycross.utils.onlineservices.Cloudstorage.delete_folder (   self,
  folder_id,
  permanent = True,
  recurse = True 
)
Deletes the folder with the given ID, optionally permanently.
Returns True on success, False otherwise.

◆ download_file()

def pycross.utils.onlineservices.Cloudstorage.download_file (   self,
  file_id,
  save_folder = '',
  overwrite = False 
)
Downloads the given file to the folder given by 'save_folder'.
If 'save_folder' is empty, the file is downloaded to the working dir.
Returns True on success / False otherwise.

◆ find_or_create_folder()

def pycross.utils.onlineservices.Cloudstorage.find_or_create_folder (   self,
  folder_name 
)
Finds or creates new subfolder in user's folder.
Returns the tuple (folder_name, folder_id) or None on failure.

◆ get_file_link()

def pycross.utils.onlineservices.Cloudstorage.get_file_link (   self,
  link_id 
)
Retrieves file link info (given by link ID).
Returns the link meta info (dict).

◆ init_settings()

def pycross.utils.onlineservices.Cloudstorage.init_settings (   self,
  auto_create_user = True 
)

◆ rename_file()

def pycross.utils.onlineservices.Cloudstorage.rename_file (   self,
  file_id,
  new_name 
)
Renames the given file (in the original folder).
Returns the tuple (file_name, file_id) or None on failure.

◆ rename_folder()

def pycross.utils.onlineservices.Cloudstorage.rename_folder (   self,
  folder_id,
  new_name 
)
Renames the given (sub)folder to 'new_name'.
Returns the tuple (folder_name, folder_id) or None on failure.

◆ update_file_link()

def pycross.utils.onlineservices.Cloudstorage.update_file_link (   self,
  link_id,
  activelink = None,
  expire = None,
  password = None 
)
Updates public link to specified file (given by file ID).
Returns the link meta info (dict).

◆ upload_file()

def pycross.utils.onlineservices.Cloudstorage.upload_file (   self,
  filepath,
  folder_id = None,
  overwrite = False,
  makelink = True,
  activelink = True,
  directlink = True,
  expire = None,
  password = None 
)
Uploads a file into the current user's folder (optionally subfolder) and returns the link info.
If 'overwrite' == True, the first file with the same name will be overwritten.
Otherwise, the uploaded file will be automatically renamed.

Member Data Documentation

◆ _accid

pycross.utils.onlineservices.Cloudstorage._accid
private

◆ _apikey

pycross.utils.onlineservices.Cloudstorage._apikey
private

◆ _baseurl

pycross.utils.onlineservices.Cloudstorage._baseurl
private

◆ _bearer

pycross.utils.onlineservices.Cloudstorage._bearer
private

◆ _rootid

pycross.utils.onlineservices.Cloudstorage._rootid
private

◆ _user

pycross.utils.onlineservices.Cloudstorage._user
private

◆ ACCID

int pycross.utils.onlineservices.Cloudstorage.ACCID = 352604900
static

◆ APIURL

string pycross.utils.onlineservices.Cloudstorage.APIURL = 'https://api.kloudless.com/v2/'
static

◆ APP_ID

string pycross.utils.onlineservices.Cloudstorage.APP_ID = 'RXaPpmxluGS7vMYoWfve847PzGuvPVdbunZe2W_vJKQdvxzx'
static

◆ OAUTH_URL

string pycross.utils.onlineservices.Cloudstorage.OAUTH_URL = f"https://api.kloudless.com/v1/oauth/?client_id={APP_ID}&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=dropbox&state={{}}"
static

◆ on_apikey_required

pycross.utils.onlineservices.Cloudstorage.on_apikey_required

◆ on_bearer_required

pycross.utils.onlineservices.Cloudstorage.on_bearer_required

◆ on_error

pycross.utils.onlineservices.Cloudstorage.on_error

◆ on_update_users

pycross.utils.onlineservices.Cloudstorage.on_update_users

◆ on_user_exist

pycross.utils.onlineservices.Cloudstorage.on_user_exist

◆ ROOTNAME

string pycross.utils.onlineservices.Cloudstorage.ROOTNAME = 'pycrossall'
static

◆ settings

pycross.utils.onlineservices.Cloudstorage.settings

◆ show_errors

pycross.utils.onlineservices.Cloudstorage.show_errors

◆ timeout

pycross.utils.onlineservices.Cloudstorage.timeout

◆ users

pycross.utils.onlineservices.Cloudstorage.users

The documentation for this class was generated from the following file: