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)))
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')
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)
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()
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)
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