async def pdf(self, url=None, page=None, full_page=True, file_pdf=None, clip=None, viewport=None, js_code=None, delay=None): if url: await self.open(url, page=page) await self.js_execute(js_code) if delay: await asyncio.sleep(delay) if file_pdf is None: file_pdf = Files.temp_file('.pdf') page = await self.page() if viewport: await self.viewport(viewport) if clip: full_page = False await page.pdf({'path': file_pdf, 'fullPage': full_page, 'clip': clip}) return file_pdf
def upload(): def save_to_gofile(files_to_save): server_name = GET_Json('https://apiv2.gofile.io/getServer').get('data').get('server') upload_url = f'https://{server_name}.gofile.io/upload' multipart_form_data = None for file_name, content_type, file_path in files_to_save: print(f">>>> Uploading file to gofile server: {file_name}") if multipart_form_data is None: multipart_form_data = (('filesUploaded', (file_name, open(file_path, 'rb') ,content_type)),) else: multipart_form_data = (*multipart_form_data, ('filesUploaded', (file_name, open(file_path, 'rb'),content_type))) #print(multipart_form_data) urllib3.disable_warnings() verify_SSL = False #todo: figure out why this isn't working (note: currenly running server as root due to need to open server in port 443) response = requests.post(upload_url, files=multipart_form_data, verify=verify_SSL) result = response.content print(f">>>> {result}") return result def rebuild_files(targets): gw_azure = GW_Rebuild_Azure() rebuilds = [] for file_name, content_type, file_path in targets: print(f'\n########## Rebuilding file: {file_name}') bytes = gw_azure.file_protect(file_path) if len(bytes) > 0: rebuilt_file = Files.save_bytes_as_file(bytes) print(f'########## File rebuild ok\n\n') rebuilds.append((file_name, content_type, rebuilt_file)) else: print(f'########## File NOT rebuilt, using original \n') rebuilds.append((file_name, content_type, file_path)) return rebuilds headers = {'content-type': 'application/json; charset=utf-8', 'status': 200} try: files_to_rebuild = [] for file in request.files.getlist('filesUploaded'): temp_file = Files.temp_file() file.save(temp_file) files_to_rebuild.append((file.filename, file.content_type, temp_file)) files_to_save = rebuild_files(files_to_rebuild) data = save_to_gofile(files_to_save) return Response(data, 200, headers) except Exception as error: data = f'{{"status":"error", "data": "{error}"}}' print(data) return Response(data, 200, headers)
async def get_screenshot_via_browser(self, url=None, png_file=None, full_page=True, clip=None, viewport=None, js_code=None, delay=None): if clip is not None: full_page = False if png_file is None: png_file = Files.temp_file('.png') if url is None: url = self.web_server.url() await self.api_browser.browser() return await self.api_browser.screenshot(url, full_page=full_page, file_screenshot=png_file, clip=clip, viewport=viewport, js_code=js_code, delay=delay)
async def screenshot(self, url=None, page=None, full_page=True, file_screenshot=None, clip=None, viewport=None, js_code=None, delay=None): try: if url: await self.open(url, page=page) await self.js_execute(js_code) if delay: await asyncio.sleep(delay) if file_screenshot is None: file_screenshot = Files.temp_file('.png') page = await self.page() if viewport: await self.viewport(viewport) if clip: full_page = False await page.screenshot({ 'path': file_screenshot, 'fullPage': full_page, 'clip': clip }) return file_screenshot except Exception as error: pprint(f"Error in API_Browser.screenshot: f{error}" ) # todo: add support for logging
def run(event, context): from osbot_utils.utils.Files import Files return 'checking python utils: {0}'.format(Files.temp_file())
def send_png_data_to_slack(self, team_id, channel, target, png_data): png_file = Files.temp_file('.png') with open(png_file, "wb") as fh: fh.write(base64.decodebytes(png_data.encode())) return self.send_png_file_to_slack(team_id, channel, target, png_file)
def save(self, path=None): if path is None: path = Files.temp_file('graph.json') data = {'nodes': self.nodes, 'edges': self.edges} return Json.save_file_pretty(path, data)
def __init__(self, browser=None, headless=True): # headless = True, new_browser=False, url_chrome = None): self.file_tmp_screenshot = Files.temp_file('.png') self.file_tmp_pdf = Files.temp_file('.pdf') self._browser = browser self.headless = headless self.log_js_errors_to_console = True
def __init__(self): #self.path_plantuml = abspath(join(__file__,'../../../_lambda_dependencies/plantuml/plantuml.jar')) #self.url_plantuml_server = 'http://localhost:8080/form' self.tmp_png_file = Files.temp_file('.png')