コード例 #1
0
    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
コード例 #2
0
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)
コード例 #3
0
 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)
コード例 #4
0
    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
コード例 #5
0
def run(event, context):
    from osbot_utils.utils.Files import Files
    return 'checking python utils: {0}'.format(Files.temp_file())
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
ファイル: API_Browser.py プロジェクト: lucia15/OSBot-Browser
 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
コード例 #9
0
ファイル: API_Plant_UML.py プロジェクト: filetrust/OSBot-jira
 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')