Esempio n. 1
0
    def slack(team_id=None, channel=None, params=None):


        target = Misc.array_pop(params,0)
        height = Misc.to_int(Misc.array_pop(params, 0))
        width  = Misc.to_int(Misc.array_pop(params, 0))

        if target is None: target = 'general'
        if width  is None: width = 800
        if height is None: height = 1000

        target_url = '/messages/{0}'.format(target)

        slack_message(":point_right: taking screenshot of slack channel: `{0}` with height `{1}` and width `{2}`".format(target, height,width), [], channel, team_id)

        payload = {'target' : target_url,
                   'channel': channel,
                   'team_id': team_id,
                   'width'  : width,
                   'height' : height}
        aws_lambda      = Lambda('osbot_browser.lambdas.slack_web')
        png_data        = aws_lambda.invoke(payload)

        browser_helper  = Browser_Lamdba_Helper()
        return browser_helper.send_png_data_to_slack(team_id, channel, target, png_data)
Esempio n. 2
0
 def screenshot(team_id=None, channel=None, params=[]):
     url          = params.pop(0).replace('<', '').replace('>', '')  # fix extra chars added by Slack
     delay        = Misc.to_int(Misc.array_pop(params,0))
     slack_message(":point_right: taking screenshot of url: {0}".format(url),[], channel,team_id)
     browser_helper = Browser_Lamdba_Helper().setup()
     png_data       = browser_helper.get_screenshot_png(url,full_page=True, delay=delay)
     return browser_helper.send_png_data_to_slack(team_id,channel,url, png_data)
Esempio n. 3
0
def run(event, context=None):
    headless = event.get('headless', True)
    url = event.get('url')
    delay = event.get('delay')
    js_code = event.get('js_code')
    browser_helper = Browser_Lamdba_Helper(headless).setup()
    png_data = browser_helper.get_screenshot_png(url=url,
                                                 full_page=True,
                                                 delay=delay,
                                                 js_code=js_code)
    return png_data
Esempio n. 4
0
def run(event, context):

    issue_id = event.get('issue_id')
    channel  = event.get('channel')
    team_id  = event.get('team_id')
    width    = event.get('width')
    height   = event.get('height')
    delay    = Misc.to_int(event.get('delay'))
    headless = event.get('headless', True)

    if issue_id is None:
        return { 'error': 'No issue ID provided' }

    Browser_Lamdba_Helper().load_browser_dependencies()

    #load_dependencies('syncer,requests,pyppeteer,websocket-client')
    try:
        from osbot_browser.browser.sites.Web_Jira import Web_Jira
        web_jira = Web_Jira(headless=headless).setup()


        slack_message(':one: Logging in...', [] ,channel)
        web_jira.login()
        #return web_jira.screenshot()

        slack_message(f':two: opening issue `{issue_id}` in headless chrome', [], channel)
        web_jira.issue(issue_id)

        if width is None:
            width = 1200
        if height is None:
            height = 300
        if delay:
            slack_message(f':hourglass: Pausing for {delay} seconds before taking the screenshot',[],channel)
            sleep(delay)

        web_jira.fix_issue_remove_ui_elements()

        #todo: next line breaks when delay is too big (need to find a way to keep the browser alive)

        png_data = web_jira.screenshot(width, height)

        if channel:
            title = "Issue: {0}".format(issue_id)
            slack_message(f':three: sending screenshot to slack image with size {len(png_data)}', [], channel)
            Browser_Lamdba_Helper().send_png_data_to_slack(team_id, channel, title, png_data)
            #return "sent png to slack"

    except Exception as error:
        message = f'Error in jira_web lambda: {error}'
        slack_message(message,[],channel)
        return message
    return png_data
Esempio n. 5
0
def run(event, context):
    load_dependency('syncer')
    from osbot_browser.browser.sites.Web_Jira import Web_Jira

    issue_id = event.get('issue_id')
    channel = event.get('channel')
    team_id = event.get('team_id')
    width = event.get('width')
    height = event.get('height')

    web_jira = Web_Jira().setup()

    web_jira.login()  #web_jira.fix_set_list_view()
    web_jira.issue(issue_id)
    web_jira.fix_issue_remove_ui_elements()
    if width is None:
        width = 1200
    if height is None:
        height = 300
    png_data = web_jira.screenshot(width, height)

    if channel:
        from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper
        title = "Issue: {0}".format(issue_id)
        Browser_Lamdba_Helper().send_png_data_to_slack(team_id, channel, title,
                                                       png_data)
        return "send png to slack"

    return png_data
    def default(team_id=None,
                channel=None,
                params=None,
                screenshot=True,
                no_render=False,
                headless=True):
        Browser_Lamdba_Helper().load_browser_dependencies()
        #load_dependencies('syncer,requests,pyppeteer,websocket-client');
        from osbot_browser.view_helpers.VivaGraph_Js import VivaGraph_Js

        graph_name = params[0]

        vivagraph_js = VivaGraph_Js(headless=headless)

        if len(params) > 1:
            vivagraph_js.browser_width = to_int(params[1], None)
        if len(params) > 2:
            vivagraph_js.render_wait = to_int(params[2], None)

        graph_data = vivagraph_js.get_graph_data(graph_name)

        if graph_data:

            (nodes,
             edges) = vivagraph_js.get_nodes_edges_from_graph_data(graph_data)

            if no_render is True:
                return graph_name, nodes, edges, graph_data, vivagraph_js

            return vivagraph_js.create_graph_and_send_screenshot_to_slack(
                nodes, edges, graph_name, screenshot, team_id, channel)
Esempio n. 7
0
def run(event, context):
    load_dependencies('syncer,requests,pyppeteer,websocket-client')
    from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper

    channel = event.get('channel')

    try:
        wait = 3
        aws = Web_AWS().setup()
        slack_message(':one: Logging in to AWS', [], channel)
        aws.login()

        slack_message(
            f':two: Opening Billing page and waiting {wait} seconds for data to load',
            [], channel)
        aws.page_billing()
        aws.page.wait(wait)
        png_data = aws.screenshot(width=1200)

        if channel:
            slack_message(
                f':three: sending screenshot of size {len(png_data)} to Slack channel {channel}',
                [], channel)
            Browser_Lamdba_Helper().send_png_data_to_slack(
                None, channel, 'AWS Billing', png_data)
        return png_data
    except Exception as error:
        message = f'Error in aws_web lambda: {error}'
        slack_message(message, [], channel)
        return message
    def elk(team_id=None, channel=None, params=None):
        load_dependency('syncer')
        from osbot_browser.browser.sites.Site_ELK import ELK_Commands
        from osbot_browser.browser.sites.Site_ELK import Site_ELK

        if len(params) == 0:
            Slack_Commands_Helper(ELK_Commands).invoke(team_id, channel,
                                                       params)
            return None

        browser_helper = Browser_Lamdba_Helper().setup()
        elk = Site_ELK(browser_helper.api_browser, team_id, channel)

        elk.sync__connect_and_login()

        params.append(browser_helper)
        params.append(elk)

        result = Slack_Commands_Helper(ELK_Commands).invoke(
            team_id, channel, params)

        if team_id:
            return None
        else:
            return result
Esempio n. 9
0
 def send_screenshot_to_slack(self,
                              team_id=None,
                              channel=None,
                              with_diffs=False):
     png_file = self.create_dashboard_screenshot(with_diffs)
     return Browser_Lamdba_Helper().send_png_file_to_slack(
         team_id, channel, 'risk dashboard', png_file)
Esempio n. 10
0
    def markdown(team_id, channel, params):
        path  = 'examples/markdown.html'
        js_code = {'name': 'convert', 'params': '# Markdown code!!! \n 123 \n - bullet point \n - another one ![](http://visjs.org/images/gettingstartedSlide.png)'}
        if params and len(params) > 0:
            js_code['params']= ' '.join(params).replace('```','')

        return Browser_Lamdba_Helper().setup()                                   \
                                      .render_file(team_id, channel, path,js_code)
Esempio n. 11
0
 def setup(self):
     self.browser_helper = Browser_Lamdba_Helper(headless=self.headless).setup()
     self.browser        = self.browser_helper.api_browser
     if self.new_page:
         self.page = self.browser.sync__new_page()
     else:
         self.page = self.browser.sync__page()
     return self
Esempio n. 12
0
 def browser(
     self
 ):  # we have make sure there is only one instance of browser created
     if self._browser is None:
         from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper
         browser_helper = Browser_Lamdba_Helper(
             headless=self.headless).setup()
         self._browser = browser_helper.api_browser
     return self._browser
 def list(team_id, channel, params):
     text = "Here are the current examples files:"
     attachments = []
     files = ''
     web_root = Browser_Lamdba_Helper().web_root() + '/'
     for file in Files.files(web_root):
         files += '{0} \n'.format(file.replace(web_root, ''))
     attachments.append({'text': files})
     return text, attachments
Esempio n. 14
0
def run(event, context):
    load_dependencies('syncer,requests,pyppeteer,websocket-client')
    from osbot_aws.helpers.Lambda_Helpers import slack_message

    from osbot_browser.browser.sites.Web_Slack import Web_Slack
    from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper

    target = event.get('target')
    channel = event.get('channel')
    team_id = event.get('team_id')
    width = event.get('width')
    height = event.get('height')
    scroll_by = event.get('scroll_by')
    delay = event.get('delay')

    try:
        if width is None: width = 1200
        if height is None: height = 1000

        web_slack = Web_Slack(team_id=team_id).setup()

        web_slack.login()
        web_slack.page.width(width, height)

        if target: web_slack.open(target)
        if scroll_by: web_slack.scroll_messages_by(scroll_by)
        if delay: web_slack.wait(delay)

        web_slack.fix_ui_for_screenshot()
        png_data = web_slack.screenshot()
        slack_message(
            ':information_source: got screenshot with size `{0}` | :point_right: sending screeenshot to slack channel `{1}`'
            .format(len(png_data), channel), [],
            channel=channel,
            team_id=team_id)
        browser_helper = Browser_Lamdba_Helper()
        return browser_helper.send_png_data_to_slack(team_id, channel, target,
                                                     png_data)
    except Exception as error:
        return slack_message(
            ':red_circle: Error in `slack_web` lambda: {0}'.format(error), [],
            channel=channel,
            team_id=team_id)
Esempio n. 15
0
 def test_send_to_slack(self):
     team_id = None
     channel = 'DRE51D4EM'
     issue_id = 'Person-42'
     png_data = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8" \
                "/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
     from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper
     title = "Issue: {0}".format(issue_id)
     Browser_Lamdba_Helper().send_png_data_to_slack(team_id, channel, title,
                                                    png_data)
Esempio n. 16
0
 def send_screenshot_to_slack(
         self, team_id,
         channel):  # todo: refactor screenshot creation from this method
     if self.browser_width:
         self.browser().sync__browser_width(self.browser_width)
     if self.render_wait:
         sleep(self.render_wait)
     png_file = self.create_dashboard_screenshot()
     return Browser_Lamdba_Helper().send_png_file_to_slack(
         team_id, channel, 'risk dashboard', png_file)
Esempio n. 17
0
    def screenshot(team_id=None, channel=None, params=None):
        params = params or []
        try:
            url = None
            if len(params) > 0:
                url = params.pop(0).replace('<', '') \
                                   .replace('>', '')                # fix extra chars added by Slack and the u00a0 unicode char.
                if url == '_':  # special mode to not render
                    url = None
                else:
                    message = ":point_right: taking screenshot of url: {0}".format(
                        url)
            if url is None:
                message = ':point_right: no url provided, so showing what is currently on the browser'

            width = to_int(Misc.array_pop(params, 0))
            height = to_int(Misc.array_pop(params, 0))
            delay = to_int(Misc.array_pop(params, 0))

            if width: message += ", with width `{0}`".format(width)
            if height:
                message += ", with height `{0}` (min height)".format(height)
            if delay: message += ", with delay of  `{0}` seconds".format(delay)
            slack_message(message, [], channel)

            browser_helper = Browser_Lamdba_Helper().setup()
            if width:
                browser_helper.api_browser.sync__browser_width(width, height)
            png_data = browser_helper.get_screenshot_png(url,
                                                         full_page=True,
                                                         delay=delay)
            slack_message(
                f':point_right: got screenshot of size {len(png_data)}, sending it to Slack...',
                [], channel)
            return browser_helper.send_png_data_to_slack(
                team_id, channel, url, png_data)
        except Exception as error:
            import traceback
            message = f':red_circle: Browser Error: {error} \n {traceback.format_exc()}'
            #message = f':red_circle: Browser Error: {error}'
            return slack_message(message, [], channel, team_id)
Esempio n. 18
0
    def render(team_id, channel, params):

        if params:
            target = params.pop(0)
            delay  = Misc.to_int(Misc.array_pop(params,0))
            if len(params) == 4:
                clip = {'x': int(params[0]), 'y': int(params[1]), 'width': int(params[2]), 'height': int(params[3])}
            else:
                clip = None
        else:
            return None

        slack_message(":point_right: rendering file `{0}`".format(target), [], channel, team_id)
        return Browser_Lamdba_Helper().setup().render_file(team_id, channel, target,clip=clip, delay=delay)
Esempio n. 19
0
    def view(team_id=None, channel=None, params=None):

        if params and len(params) == 1:
            issue_id = params.pop()
            from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper
            from osbot_aws.apis.Lambda import Lambda

            lambda_name = 'osbot_browser.lambdas.gw.sow'

            png_data = Lambda(lambda_name).invoke({'issue_id': issue_id})
            if png_data is None:
                return f':red_circle: No png data created for {issue_id}'
            if channel is None:
                return png_data
            else:
                title = f'howing issue: {issue_id}'
                Browser_Lamdba_Helper().send_png_data_to_slack(
                    team_id, channel, title, png_data)
        else:
            return f":red_circle: Missing `jira_id` param, try SOW-121"
Esempio n. 20
0
    def test_create_dashboard_with_scores(self):
        scores = {
            'r1_1': 1,
            'r2_1': 2,
            'r3_1': 3,
            'r4_1': None,
            'r5_1': 5,
            'r6_1': 6,
            'r1_2': 4,
            'r2_2': 5,
            'r3_2': 6,
            'r4_2': None,
            'r5_2': 2,
            'r6_2': 7,
            'r1_3': 7,
            'r2_3': 8,
            'r3_3': 9,
            'r4_3': None,
            'r5_3': 3,
            'r6_3': 8,
            'r2_4': None,
            'r3_4': None,
            'r4_4': None,
            'r5_4': 4,
            'r6_4': 9,
            'r2_5': None,
            'r3_5': None,
            'r4_5': None,
            'r5_5': 5,
            'r3_6': None,
            'r4_6': None,
        }

        self.risk_dashboard.create_dashboard_with_scores(scores)
        png_data = self.risk_dashboard.send_screenshot_to_slack()
        Browser_Lamdba_Helper().save_png_data(png_data)
Esempio n. 21
0
 def tearDown(self):
     super().tearDown()
     if self.png_data:
         Browser_Lamdba_Helper().save_png_data(self.png_data)
Esempio n. 22
0
 def tearDown(self):
     png_data = self.browser.sync__screenshot_base64()
     Browser_Lamdba_Helper().save_png_data(png_data)
 def tearDown(self):
     if self.png_data:
         Browser_Lamdba_Helper(headless=False).save_png_data(self.png_data)
     if self.result:
         Dev.pprint(self.result)
Esempio n. 24
0
def run(event, context):
    url = event.get('url')
    if url:
        from osbot_browser.browser.Browser_Lamdba_Helper import Browser_Lamdba_Helper
        browser = Browser_Lamdba_Helper().setup()
        return browser.get_screenshot_png(url)
Esempio n. 25
0
 def tearDown(self):
     if self.png_data:
         Browser_Lamdba_Helper(headless=False).save_png_data(self.png_data)
Esempio n. 26
0
    def tearDown(self):
        if self.result is not None:
            Dev.pprint(self.result)

        if self.png_data:
            Browser_Lamdba_Helper().save_png_data(self.png_data)
Esempio n. 27
0
 def test_create_dashboard_with_test_data(self):
     result = self.risk_dashboard.create_dashboard_with_test_data()
     png_data = self.risk_dashboard.send_screenshot_to_slack()
     result = Browser_Lamdba_Helper().save_png_data(png_data)
     Dev.pprint(result)
Esempio n. 28
0
 def send_screenshot_to_slack(self, team_id, channel):
     png_file = self.create_dashboard_screenshot()
     return Browser_Lamdba_Helper().send_png_file_to_slack(
         team_id, channel, 'risk dashboard', png_file)
Esempio n. 29
0
 def send_screenshot_to_slack(self, team_id=None, channel=None, clip=None):
     png_file = self.create_dashboard_screenshot(clip)
     return Browser_Lamdba_Helper().send_png_file_to_slack(
         team_id, channel, self.title, png_file)