Exemple #1
0
    def get_page(self, url):
        response = Response()
        try:

            # Initilized the chrome driver
            print("Initilized the chrome driver")
            chrome_options = webdriver.ChromeOptions()
            chrome_options.add_argument('--no-sandbox')
            chrome_options.add_argument('--window-size=1420,1080')
            chrome_options.add_argument('--headless')
            chrome_options.add_argument('--disable-gpu')
            browser = webdriver.Chrome(chrome_options=chrome_options)

            # browser kibana
            print("browser kibana")
            browser.get(url)
            delay = 10000

            # wait till specific classes appears
            print("wait till specific classes appears")
            WebDriverWait(browser, delay).until(
                EC.presence_of_element_located((By.CLASS_NAME, 'kbn-table')))
            body = browser.find_element_by_class_name(
                "kbn-table").get_attribute('innerHTML')

            # calculate number of pages exists and loop them
            print("calculate number of pages exists and loop them")
            pages = (str(
                browser.find_element_by_class_name(
                    "kuiToolBarText").text).split(" ")[2]).replace(",", "")
            pages = math.ceil(int(pages) / 50) - 1

            print("pages found {}".format(pages))
            for page in range(1, pages):
                browser.execute_script(
                    "document.getElementsByClassName('kuiButton')[1].click()")
                chunk = browser.find_element_by_class_name(
                    "kbn-table").get_attribute('innerHTML').replace(
                        "<tbody>", "")
                body += chunk

            # apply table tags and generate pdf
            print("apply table tags and generate pdf")
            pdf = pydf.generate_pdf("<table>" + body + "</table>")
            with open('out.pdf', 'wb') as f:
                f.write(pdf)

            return json.loads(
                json.dumps((response.get_response(Constants.SUCCESS,
                                                  Constants.SUCCESS))))
        except Exception as e:
            logging.exception(e)

            return abort(
                make_response(
                    jsonify(
                        response.get_response(Constants.SERVER_ERROR,
                                              Constants.SERVER_ERROR)),
                    response.get_code(Constants.SERVER_ERROR)))
Exemple #2
0
def login():
    if request.method == 'POST':
        print("recieve post request")
        response = Response()
        request_object = request.json
        regex = re.compile(
            r'^(?:http|ftp)s?://'  # http:// or https://
            r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'  # domain...
            r'localhost|'  # localhost...
            r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'  # ...or ip
            r'(?::\d+)?'  # optional port
            r'(?:/?|[/?]\S+)$',
            re.IGNORECASE)
        if (not re.match(regex, request_object.get("url", ""))):
            abort(
                make_response(
                    jsonify(
                        response.get_response(Constants.URL_NOT_FOUND,
                                              Constants.URL_NOT_FOUND)),
                    response.get_code(Constants.URL_NOT_FOUND)))

        print("url is valid")
        return jsonify(
            SeleniumCrawler().get_page(url=request_object.get("url", "")))

    else:
        return send_file('out.pdf')
Exemple #3
0
def feedback_response(session, command, splited_content, phone_number_dict):
    token = splited_content[-1].split(' : ')[1]
    if command == '네':

        question = feedback_list[question_list[0]]
        if type(question) == str:
            resp = Response(question)
        else:
            resp = Response(question[0], keyboard_buttons=list(question[1]))

        resp.set_function(feedback_step(1, [], token))
        session.next = resp

        return (resp.get_response(), '피드백 참여', token)
    else:
        resp = setting.get_init_response()
        return (resp.get_response(), '피드백 불참', token)
Exemple #4
0
def set_name(session, status_code, reserv_info, reserv_id):
    if status_code == 'reservwait':
        resp = Response('이름을 입력해주세요')
        resp.next_function = set_name_confirm(reserv_id)
        session.next = resp
    elif status_code == 'reserved':
        resp = setting.get_init_response()
        resp.message = '이미 확정된 예약입니다.'
    else:
        resp = setting.get_init_response()
        resp.message = '확정할 수 없는 예약입니다.\n(시간 초과, 취소된 예약 등)'
    return resp.get_response()
    def process_request(connection, address, data):
        start_time = datetime.now().microsecond
        if data is None:
            print("No data received")
            connection.close()

        request = Request(data)
        print(f'Request received from {address[0]}. Resource: {request.url}')

        response = Response(Server.__root_path, request)

        connection.send(response.get_response())
        connection.close()
        end_time = datetime.now().microsecond
        print(
            f'Responded with {response.status_code} in {end_time - start_time}ms'
        )

        Server.print_memory_usage()
Exemple #6
0
    def start(self):
        Logger.info('Server start')
        with socket.socket() as sock:
            # чтобы несколько приложений могли «слушать» сокет
            # SO_REUSEADDR - Разрешает повторное использование локальных адресов (если данная возможность поддерживается используемым протоколом).
            # Параметр имеет логическое значение.
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            sock.bind(self.address_pair)  # связываем сокет с хостом
            sock.listen(self.size_queue
                        )  # максимальное количество подключений в очереди
            Logger.info('Parent pid: {}'.format(os.getpid()))

            for _ in range(self.count_cpu):
                pid = os.fork()

                # fork в родительский процесс вернет PID дочернего процесса,
                # а в дочернем процессе переменная pid будет равна нулю

                if pid == 0:
                    Logger.info('Child pid: {}'.format(os.getpid()))

                    while True:
                        conn, adr = sock.accept()
                        with conn:
                            request = conn.recv(self.chunk)

                            if len(request.strip()) == 0:  # empty  request
                                conn.close()
                                continue

                            pars_request = Request(request.decode())
                            response = Response(pars_request,
                                                root_dir=self.root_dir)
                            conn.sendall(response.get_response())

                else:
                    self.pid_workers.append(pid)
                    Logger.info('Parent pid: {} Children pid: {}'.format(
                        os.getpid(), pid))

            for pid in self.pid_workers:
                os.waitpid(pid, 0)
Exemple #7
0
    def start(self):
        Logger.info('Server start')
        with socket.socket() as sock:
            # чтобы несколько приложений могли «слушать» сокет
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            sock.bind(self.address_pair)
            sock.listen(self.size_queue)
            Logger.info('Parent pid: {}'.format(os.getpid()))

            for _ in range(self.count_cpu):
                pid = os.fork()

                # fork в родительский процесс вернет PID дочернего процесса,
                # а в дочернем процессе переменная pid будет равна нулю

                if pid == 0:
                    Logger.info('Child pid: {}'.format(os.getpid()))

                    while True:
                        conn, adr = sock.accept()
                        with conn:
                            request = conn.recv(self.chunk)

                            if len(request.strip()) == 0:  # empty  request
                                conn.close()
                                continue

                            pars_request = Request(request.decode())
                            response = Response(pars_request,
                                                root_dir=self.root_dir)
                            conn.sendall(response.get_response())

                else:

                    self.pid_workers.append(pid)
                    Logger.info('Parent pid: {} Children pid: {}'.format(
                        os.getpid(), pid))

            for pid in self.pid_workers:
                os.waitpid(pid, 0)
def handle(request):
    request_namespace = request["directive"]["header"]["namespace"]
    request_name = request["directive"]["header"]["name"]

    if request_namespace == "Alexa.PowerController":
        if request_name == "TurnOn":
            client = MQTT_client()
            result = client.send_message(state_report, color_topic,
                                         bytes([10, 10, 10]))

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)
            if l > 0:
                logger.debug("device is turned on")
                value = "ON"
            else:
                logger.debug("device is turned off")
                value = "OFF"
        else:
            client = MQTT_client()
            result = client.send_message(state_report, color_topic,
                                         bytes([0, 0, 0]))

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)
            if l > 0:
                logger.debug("device is turned on")
                value = "ON"
            else:
                logger.debug("device is turned off")
                value = "OFF"

        context = {
            "properties": [{
                "namespace": "Alexa.PowerController",
                "name": "powerState",
                "value": value,
                "timeOfSample": skill_utils.get_utc_timestamp(),
                "uncertaintyInMilliseconds": 5000
            }]
        }
        response_object = Response(request)
        response_object.set_context(context)
        response = response_object.get_response()
        return response

    elif request_namespace == "Alexa.BrightnessController":
        if request_name == "SetBrightness":
            client = MQTT_client()

            result = client.send_message(state_report, report_state, None)

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)

            l = int(request["directive"]["payload"]["brightness"]) / 100 / 2

            logger.debug("hls new")
            for x in h, l, s:
                logger.debug(x)

            r, g, b = colorsys.hls_to_rgb(h, l, s)

            logger.debug("rgb")
            for x in r, g, b:
                logger.debug(x)

            result = client.send_message(
                state_report, color_topic,
                bytes([int(r * 255), int(g * 255),
                       int(b * 255)]))

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)

            context = {
                "properties": [{
                    "namespace":
                    "Alexa.BrightnessController",
                    "name":
                    "brightness",
                    "value":
                    int(l * 100 * 2) if int(l * 100 * 2) <= 100 else 100,
                    "timeOfSample":
                    skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds":
                    5000
                }]
            }

            response_object = Response(request)
            response_object.set_context(context)
            response = response_object.get_response()
            return response
        elif request_name == "AdjustBrightness":
            client = MQTT_client()

            result = client.send_message(state_report, report_state, None)

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)

            l = l + int(
                request["directive"]["payload"]["brightnessDelta"]) / 100 / 2
            if l < 0: l = 0
            if l > 1: l = 1

            logger.debug("hls new")
            for x in h, l, s:
                logger.debug(x)

            r, g, b = colorsys.hls_to_rgb(h, l, s)

            logger.debug("rgb")
            for x in r, g, b:
                logger.debug(x)

            result = client.send_message(
                state_report, color_topic,
                bytes([int(r * 255), int(g * 255),
                       int(b * 255)]))

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)

            context = {
                "properties": [{
                    "namespace":
                    "Alexa.BrightnessController",
                    "name":
                    "brightness",
                    "value":
                    int(l * 100 * 2) if int(l * 100 * 2) <= 100 else 100,
                    "timeOfSample":
                    skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds":
                    5000
                }]
            }

            response_object = Response(request)
            response_object.set_context(context)
            response = response_object.get_response()
            return response
    elif request_namespace == "Alexa.ColorController":
        if request_name == "SetColor":
            client = MQTT_client()

            result = client.send_message(state_report, report_state, None)

            h = request["directive"]["payload"]["color"]["hue"] / 360
            l = request["directive"]["payload"]["color"]["brightness"] / 2
            s = request["directive"]["payload"]["color"]["saturation"]

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)

            r, g, b = colorsys.hls_to_rgb(h, l, s)

            logger.debug("rgb")
            for x in r, g, b:
                logger.debug(x)

            result = client.send_message(
                state_report, color_topic,
                bytes([int(r * 255), int(g * 255),
                       int(b * 255)]))

            h, l, s = result_to_HLS(result)

            context = {
                "properties": [{
                    "namespace": "Alexa.ColorController",
                    "name": "color",
                    "value": {
                        "hue": int(h * 360),
                        "saturation": s,
                        "brightness": l * 2 if l * 2 <= 1 else 1
                    },
                    "timeOfSample": skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds": 5000
                }]
            }
            response_object = Response(request)
            response_object.set_context(context)
            response = response_object.get_response()
            return response

    elif request_namespace == "Alexa.ColorTemperatureController":
        if request_name == "SetColorTemperature":
            client = MQTT_client()

            from temperature_util import temperatureToRgb
            r, g, b = temperatureToRgb(
                request["directive"]["payload"]["colorTemperatureInKelvin"])

            logger.debug("rgb")
            for x in r, g, b:
                logger.debug(x)

            result = client.send_message(state_report, color_topic,
                                         bytes([r, g, b]))

            h, l, s = result_to_HLS(result)

            logger.debug("hls")
            for x in h, l, s:
                logger.debug(x)

            context = {
                "properties": [{
                    "namespace":
                    "Alexa.ColorTemperatureController",
                    "name":
                    "colorTemperatureInKelvin",
                    "value":
                    request["directive"]["payload"]
                    ["colorTemperatureInKelvin"],
                    "timeOfSample":
                    skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds":
                    5000
                }]
            }
            response_object = Response(request)
            response_object.set_context(context)
            response = response_object.get_response()
            return response

    elif request_namespace == "Alexa":
        if request_name == "ReportState":
            client = MQTT_client()

            result = client.send_message(state_report, report_state, None)

            h, l, s = result_to_HLS(result)

            for x in h, l, s:
                logger.debug(x)

            context = {
                "properties": [{
                    "namespace": "Alexa.ColorController",
                    "name": "color",
                    "value": {
                        "hue": int(h * 360),
                        "saturation": s,
                        "brightness": l * 2 if l * 2 <= 1 else 1
                    },
                    "timeOfSample": skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds": 5000
                }, {
                    "namespace": "Alexa.PowerController",
                    "name": "powerState",
                    "value": "ON" if l > 0 else "OFF",
                    "timeOfSample": skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds": 5000
                }, {
                    "namespace":
                    "Alexa.BrightnessController",
                    "name":
                    "brightness",
                    "value":
                    int(l * 100 * 2) if int(l * 100 * 2) <= 100 else 100,
                    "timeOfSample":
                    skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds":
                    5000
                }]
            }
            response_object = Response(request)
            response_object.set_context(context)
            response_object.set_response_type("StateReport")
            response = response_object.get_response()
            return response
def handle(request):
    request_namespace = request["directive"]["header"]["namespace"]
    request_name = request["directive"]["header"]["name"]

    if request_namespace == "Alexa.PowerController":
        if request_name == "TurnOn":
            client = MQTT_client()
            result = None
            while result == None:
                result = client.send_message(state_report, on_topic, None)
            result = result.decode('UTF-8')
            logger.debug(result)
            if result == '1':
                logger.debug("device is turned on")
                value = "ON"
            else:
                logger.debug("device is turned off")
                value = "OFF"
        else:
            client = MQTT_client()
            result = None
            while result == None:
                result = client.send_message(state_report, off_topic, None)
            result = result.decode('UTF-8')
            logger.debug(result)
            if result == '1':
                logger.debug("device is turned on")
                value = "ON"
            else:
                logger.debug("device is turned off")
                value = "OFF"

        context = {
            "properties": [{
                "namespace": "Alexa.PowerController",
                "name": "powerState",
                "value": value,
                "timeOfSample": skill_utils.get_utc_timestamp(),
                "uncertaintyInMilliseconds": 5000
            }]
        }

        response_object = Response(request)
        response_object.set_context(context)
        response = response_object.get_response()
        return response

    elif request_namespace == "Alexa":
        if request_name == "ReportState":
            client = MQTT_client()
            result = client.send_message(state_report, report_state, None)
            result = result.decode('UTF-8')
            logger.debug(result)
            if result == '1':
                logger.debug("device is turned on")
                value = "ON"
            else:
                logger.debug("device is turned off")
                value = "OFF"

            context = {
                "properties": [{
                    "namespace": "Alexa.PowerController",
                    "name": "powerState",
                    "value": value,
                    "timeOfSample": skill_utils.get_utc_timestamp(),
                    "uncertaintyInMilliseconds": 5000
                }]
            }

            response_object = Response(request)
            response_object.set_context(context)
            response_object.set_response_type("StateReport")
            response = response_object.get_response()
            return response