def get_driver_script(name, name2=None): # noqa: E501 """Retrieve the contents of a script Retrieve the contents of a script # noqa: E501 :param name2: Get status of a driver with this name :type name2: str :param name: The script name. :type name: str :rtype: Response """ response = errorIfUnauthorized(role='user') if response: return response else: response = ApitaxResponse() print(name) print(name2) driver: Driver = LoadedDrivers.getDriver(name2) response.body.add({'content': driver.getDriverScript(name)}) return Response(status=200, body=response.getResponseBody())
def handleDriverScript(self, command: Command) -> ApitaxResponse: t0 = time() scriptax = ScriptaxExecutor(command.parameters, command.options) result = scriptax.execute(command.command[0]) executionTime = round2str(time() - t0) if command.options.debug: State.log.log('>> Script Finished Processing in ' + executionTime + 's') State.log.log('') response = ApitaxResponse() response.body.add({'result': result[0][1]}) response.body.add({'commandtax': command.command[0]}) response.body.add({'execution-time': executionTime}) if result[1].is_error(): response.body.add({'error': result[1].message}) response.status = 500 else: response.status = 200 return response
def rename_driver_script(name, rename=None): # noqa: E501 """Rename a script Rename a script # noqa: E501 :param name: Get status of a driver with this name :type name: str :param rename: The data needed to save this script :type rename: dict | bytes :rtype: Response """ if connexion.request.is_json: rename = Rename.from_dict(connexion.request.get_json()) # noqa: E501 response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) if not driver.renameDriverScript(rename.original.name, rename.new.name): return ErrorResponse(status=500, message='Cannot rename to an existing file.') return Response(status=200, body=response.getResponseBody())
def delete_driver_script(name, delete=None): # noqa: E501 """Delete a script Delete a script # noqa: E501 :param name: Get status of a driver with this name :type name: str :param delete: The data needed to delete this script :type delete: dict | bytes :rtype: Response """ if connexion.request.is_json: delete = Delete1.from_dict(connexion.request.get_json()) # noqa: E501 response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) driver.deleteDriverScript(delete.script.name) return Response(status=200, body=response.getResponseBody())
def get_driver_status(name): # noqa: E501 """Retrieve the status of a loaded driver Retrieve the status of a loaded driver # noqa: E501 :param name: Get status of a driver with this name :type name: str :rtype: Response """ response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) response.body.add({'name': driver.getDriverName()}) response.body.add({'description': driver.getDriverDescription()}) response.body.add({'tips': driver.getDriverTips()}) response.body.add({'help': driver.getDriverHelpEndpoint()}) response.body.add({'minimum-role': driver.getDriverMinimumRole()}) options = {} options['configurable'] = driver.isDriverConfigurable() options['authenticatable'] = driver.isDriverAuthenticatable() options['role-restricted'] = driver.isDriverRoleRestricted() options['whitelisted'] = driver.isDriverWhitelisted() options['blacklisted'] = driver.isDriverBlacklisted() response.body.add({'options': options}) return Response(status=200, body=response.getResponseBody())
def delete_user(user, driver, user_delete=None): # noqa: E501 """Delete a user Delete a user # noqa: E501 :param user: Delete user with this name :type user: str :param driver: The driver to use for the request. ie. github :type driver: str :param user_delete: The data needed to delete this user :type user_delete: dict | bytes :rtype: Response """ if connexion.request.is_json: user_delete = UserDelete.from_dict( connexion.request.get_json()) # noqa: E501 response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) if driver.deleteApitaxUser(User(username=user)): return Response(status=200, body=response.getResponseBody()) return ErrorResponse(status=500, message='Failed to create user')
def create_user(user, name, create=None): # noqa: E501 """Create a new script Create a new script # noqa: E501 :param user: Get user with this name :type user: str :param name: Get status of a driver with this name :type name: str :param create: The data needed to create this user :type create: dict | bytes :rtype: Response """ if connexion.request.is_json: create = Create.from_dict(connexion.request.get_json()) # noqa: E501 response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) user: User = mapUserToUser(create.script) if driver.createApitaxUser(user): return Response(status=200, body=response.getResponseBody()) return ErrorResponse(status=500, message='Failed to create user')
def delete_driver_script(driver, script_delete=None): # noqa: E501 """Delete a script Delete a script # noqa: E501 :param driver: The driver to use for the request. ie. github :type driver: str :param script_delete: The data needed to delete this script :type script_delete: dict | bytes :rtype: Response """ if connexion.request.is_json: script_delete = ScriptDelete.from_dict( connexion.request.get_json()) # noqa: E501 response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) driver.deleteDriverScript(script_delete.script.name) return Response(status=200, body=response.getResponseBody())
def rename_driver_script(driver, script_rename=None): # noqa: E501 """Rename a script Rename a script # noqa: E501 :param driver: The driver to use for the request. ie. github :type driver: str :param script_rename: The data needed to rename this script :type script_rename: dict | bytes :rtype: Response """ if connexion.request.is_json: script_rename = ScriptRename.from_dict( connexion.request.get_json()) # noqa: E501 response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) if not driver.renameDriverScript(script_rename.original.name, script_rename.new.name): return ErrorResponse(status=500, message='Cannot rename to an existing file.') return Response(status=200, body=response.getResponseBody())
def getResponse(self, format=None) -> ApitaxResponse: if format: response = ApitaxResponse(responseFormat=format) else: response = ApitaxResponse(responseFormat=self.requestFormat) response.request = self.request return response
def get_driver_list(): # noqa: E501 """Retrieve the catalog of drivers Retrieve the catalog of drivers # noqa: E501 :rtype: Response """ response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() response.body.add({'drivers': LoadedDrivers.drivers}) return Response(status=200, body=response.getResponseBody())
def get_driver_config(name): # noqa: E501 """Retrieve the config of a loaded driver Retrieve the config of a loaded driver # noqa: E501 :param name: Get status of a driver with this name :type name: str :rtype: Response """ response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() # TODO: This needs an implementation, but likely requires a change to configs in apitaxcore return Response(status=200, body=response.getResponseBody())
def get_user(user, name): # noqa: E501 """Retrieve a user Retrieve a user # noqa: E501 :param user: Get user with this name :type user: str :param name: Get status of a driver with this name :type name: str :rtype: Response """ response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) user: User = driver.getApitaxUser(User(username=user)) response.body.add({'user': {'username': user.username, 'role': user.role}}) return Response(status=200, body=response.getResponseBody())
def get_driver_config(driver): # noqa: E501 """Retrieve the config of a loaded driver Retrieve the config of a loaded driver # noqa: E501 :param driver: The driver to use for the request. ie. github :type driver: str :rtype: Response """ response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() # TODO: This needs an implementation, but likely requires a change to configs in apitaxcore return Response(status=200, body=response.getResponseBody())
def get_user(user, driver): # noqa: E501 """Retrieve a user Retrieve a user # noqa: E501 :param user: Get user with this name :type user: str :param driver: The driver to use for the request. ie. github :type driver: str :rtype: Response """ response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) user: User = driver.getApitaxUser(User(username=user)) response.body.add({'user': {'username': user.username, 'role': user.role}}) return Response(status=200, body=response.getResponseBody())
def get_driver_api_catalog(name): # noqa: E501 """Retrieve the api catalog Retrieve the api catalog # noqa: E501 :param name: Get status of a driver with this name :type name: str :rtype: Response """ response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) response.body.add(driver.getApiEndpointCatalog()) return Response(status=200, body=response.getResponseBody())
def get_driver_api_catalog(driver): # noqa: E501 """Retrieve the api catalog Retrieve the api catalog # noqa: E501 :param driver: The driver to use for the request. ie. github :type driver: str :rtype: Response """ response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) response.body.add(driver.getApiEndpointCatalog()) return Response(status=200, body=response.getResponseBody())
def get_driver_blacklist(name): # noqa: E501 """Retrieve the blacklist in the driver Retrieve the blacklist in the driver # noqa: E501 :param name: Get status of a driver with this name :type name: str :rtype: Response """ response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) response.body.add({'blacklist': driver.getDriverBlacklist()}) return Response(status=200, body=response.getResponseBody())
def get_driver_blacklist(driver): # noqa: E501 """Retrieve the blacklist in the driver Retrieve the blacklist in the driver # noqa: E501 :param driver: The driver to use for the request. ie. github :type driver: str :rtype: Response """ response = errorIfUnauthorized(role='admin') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) response.body.add({'blacklist': driver.getDriverBlacklist()}) return Response(status=200, body=response.getResponseBody())
def get_driver_api_status(name): # noqa: E501 """Retrieve the status of an api Retrieve the status of an api # noqa: E501 :param name: Get status of a driver with this name :type name: str :rtype: Response """ response = errorIfUnauthorized(role='developer') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(name) response.body.add({"format": driver.getApiFormat()}) response.body.add({"description": driver.getApiDescription()}) response.body.add({"status": driver.getApiStatus()}) response.body.add({"auth-type": driver.getApiAuthType()}) endpoints = {} endpoints['base'] = driver.getApiBaseEndpoint() endpoints['catalog'] = driver.getApiCatalogEndpoint() endpoints['auth'] = driver.getApiAuthEndpoint() response.body.add({'endpoints': endpoints}) options = {} options['authenticatable'] = driver.isApiAuthenticated() options[ 'authentication-separate'] = driver.isApiAuthenticationSeparateRequest( ) options['cataloggable'] = driver.isApiCataloggable() options['tokenable'] = driver.isApiTokenable() response.body.add({'options': options}) return Response(status=200, body=response.getResponseBody())
def get_driver_script(driver, script=None): # noqa: E501 """Retrieve the contents of a script Retrieve the contents of a script # noqa: E501 :param driver: The driver to use for the request. ie. github :type driver: str :param script: The script name. :type script: str :rtype: Response """ response = errorIfUnauthorized(role='user') if response: return response else: response = ApitaxResponse() driver: Driver = LoadedDrivers.getDriver(driver) response.body.add({'content': driver.getDriverScript(script)}) return Response(status=200, body=response.getResponseBody())
def handleDriverCommand(self, command: Command) -> ApitaxResponse: response: ApitaxResponse = ApitaxResponse() driverName = None if len(command.command) < 1: return response.res_bad_request( body={ 'error': 'Improper command: `blank` command was attempted.' }) if '--apitax-debug' in command.command: command.options.debug = True del command.command[command.command.index('--apitax-debug')] if '--apitax-sensitive' in command.command: command.options.sensitive = True del command.command[command.command.index('--apitax-sensitive')] if '--apitax-driver' in command.command: driverName = command.command[ command.command.index('--apitax-driver') + 1] del command.command[command.command.index('--apitax-sensitive') + 1] del command.command[command.command.index('--apitax-driver')] if driverName: command.options.driver = LoadedDrivers.getDriver(driverName) elif LoadedDrivers.getDriver(command.command[0]): command.options.driver = LoadedDrivers.getDriver( command.command[0]) del command.command[0] else: command.options.driver = LoadedDrivers.getPrimaryDriver() if not command.options.driver: return response.res_server_error( body={ 'error': 'Could not find a valid driver to use for command: ' + str(command.command) }) command.command = Command(command=command.command, request=command.request, parameters=command.parameters, options=command.options) if command.options.driver.isDriverCommandable(): if command.options.driver.isApiAuthenticated(): self.authenticate(command) response = command.options.driver.handleDriverCommand( command.command) else: return response.res_server_error( body={ 'error': 'Driver `' + command.options.driver.getDriverName() + '` does not support this operation: ' + str(command.command) }) return response
def handleDriverCommand(self, command: Command) -> ApitaxResponse: response: ApitaxResponse = ApitaxResponse() if '--url' not in command.command: return response.res_server_error( body= '--url parameter is required for api commands and is not found' ) url = command.command[command.command.index('--url') + 1] command.request.preEndpoint = url postData = '' # Post Data paramData = '' # Data container in the URL, but only the part after the ?: someurl.com/user/7?thisIsAParamData=true pathData = '' # Data contained in the URL headerData = '' # Data contained in the headers if '--data-post' in command.command: postData = command.command[command.command.index('--data-post') + 1] if '--data-query' in command.command: paramData = command.command[command.command.index('--data-query') + 1] if '--data-path' in command.command: pathData = command.command[command.command.index('--data-path') + 1] if '--data-header' in command.command: headerData = command.command[command.command.index('--data-header') + 1] if postData != '': command.request.bodyBuilder.add(json.loads(str(postData))) if paramData != '': command.request.queryBuilder.add(json.loads(str(paramData))) if pathData != '': command.request.path = json.loads(str(pathData)) if headerData != '': command.request.headerBuilder.add(json.loads(str(headerData))) command.request.requestFormat = self.getApiFormat() self.addApiHeaders(command.request.headerBuilder) if '--get' in command.command: command.request.get() elif '--post' in command.command: command.request.post() elif '--put' in command.command: command.request.put() elif '--patch' in command.command: command.request.patch() elif '--delete' in command.command: command.request.delete() else: return response.res_server_error( body='No API request method specified') return command.request.getResponse()
def authenticateApi(self, credentials: Credentials) -> ApitaxResponse: return ApitaxResponse()
def handleDriverCommand(self, command: Command) -> ApitaxResponse: return ApitaxResponse()