optimise the patch

This commit is contained in:
2022-05-07 01:46:36 +02:00
parent 99f61b733b
commit 8ca823613c
2 changed files with 69 additions and 53 deletions
+5 -11
View File
@@ -49,17 +49,11 @@ class DataManager:
doc_ref.set(sim_info.to_firestore_dict()) doc_ref.set(sim_info.to_firestore_dict())
def save(self, result: ReserveResultPojo): def save(self, result: ReserveResultPojo):
if result.type == PublishType.SUCCESS: id = result.url.split("/")[-1]
# get id result.id = id
id = result.url.split("/")[-1] document_name = str(datetime.date.today())
result.id = id doc_ref = self._db.collection(document_name).document(result.id)
document_name = str(datetime.date.today()) doc_ref.set(result.to_firestore_dict())
doc_ref = self._db.collection(document_name).document(result.id)
doc_ref.set(result.to_firestore_dict())
else:
if len(result.phone) > 0:
doc_ref = self._db.collection(ERROR_COLLECTION_NAME).document(result.phone)
doc_ref.set(result.to_firestore_dict())
def find_appointment_detail_via_phone(self, day, phone) -> ReserveResultPojo: def find_appointment_detail_via_phone(self, day, phone) -> ReserveResultPojo:
doc_ref = self._db.collection(day) doc_ref = self._db.collection(day)
+64 -42
View File
@@ -19,7 +19,7 @@ from utils.excel_reader import ExcelHelper
from utils.operator import Operator, check_operator from utils.operator import Operator, check_operator
RDV_URL = "https://rendezvousparis.hermes.com/client/register" RDV_URL = "https://rendezvousparis.hermes.com/client/register"
#
# RDV_URL = "file:///Users/lpan/Downloads/test_appointment.html" # RDV_URL = "file:///Users/lpan/Downloads/test_appointment.html"
# RDV_URL = "https://api.ipify.org" # RDV_URL = "https://api.ipify.org"
# RDV_URL ="https://bot.sannysoft.com/" # RDV_URL ="https://bot.sannysoft.com/"
@@ -59,10 +59,7 @@ class CommandorPage:
def on_success(self, result: ReserveResultPojo): def on_success(self, result: ReserveResultPojo):
self.logger.info("on_success called.") self.logger.info("on_success called.")
result.sim_position = self.sim_position
result.slot_position = self.slot_position
self.logger.info(result) self.logger.info(result)
params.firebase_store_manager.save(result)
params.oracle_log_sender.send_appoint_result(result) params.oracle_log_sender.send_appoint_result(result)
self.current_gsm_modem.modem.close() self.current_gsm_modem.modem.close()
self.is_finished = True self.is_finished = True
@@ -170,7 +167,7 @@ class CommandorPage:
if CONFIRMED_MESSAGE in message: if CONFIRMED_MESSAGE in message:
# publish the successful message # publish the successful message
self.logger.info("url is " + self.page.url) self.logger.info("url is " + self.page.url)
self.publish_message_to_queue(self.contact, PublishType.SUCCESS.value, self.page.url) self.publish_message_to_queue(self.contact, PublishType.SUCCESS, self.page.url)
else: else:
self.logger.info("timeout") self.logger.info("timeout")
self.reset_air_plan_mode() self.reset_air_plan_mode()
@@ -218,32 +215,41 @@ class CommandorPage:
def _setPhoneCountryAndStore(self): def _setPhoneCountryAndStore(self):
# document.getElementById("prefer").value = \"faubourg\"; # document.getElementById("prefer").value = \"faubourg\";
if self.store_type == 0: try:
self.page.evaluate("""()=>{ if self.store_type == 0:
document.getElementById("phone_country").focus(); self.page.evaluate("""()=>{
document.getElementById("phone_country").value = \"FR\" }""") document.getElementById("phone_country").focus();
else: document.getElementById("phone_country").value = \"FR\" }""")
self.page.evaluate("""()=>{ else:
document.getElementById("prefer").value = \"faubourg\"; self.page.evaluate("""()=>{
document.getElementById("phone_country").focus(); document.getElementById("prefer").value = \"faubourg\";
document.getElementById("phone_country").value = \"FR\" }""") document.getElementById("phone_country").focus();
document.getElementById("phone_country").value = \"FR\" }""")
except Exception as error:
self.logger.error(error)
def _setPhoneNumber(self, phoneNumber): def _setPhoneNumber(self, phoneNumber):
time.sleep(get_random_wait_time()) time.sleep(get_random_wait_time())
self.page.evaluate("""(phoneNumber)=>document.getElementById("phone_number").value =phoneNumber""", try:
phoneNumber) self.page.evaluate("""(phoneNumber)=>document.getElementById("phone_number").value =phoneNumber""",
phoneNumber)
except Exception as error:
self.logger.error(error)
def _setName(self, lastName, firstName): def _setName(self, lastName, firstName):
time.sleep(get_random_wait_time()) time.sleep(get_random_wait_time())
self.page.evaluate("""(name)=> { try:
document.getElementById("surname").focus(); self.page.evaluate("""(name)=> {
document.getElementById("surname").value = name.lastName; document.getElementById("surname").focus();
document.getElementById("name").focus(); document.getElementById("surname").value = name.lastName;
document.getElementById("name").value = name.firstName}""", {'lastName': lastName, 'firstName': firstName}) document.getElementById("name").focus();
document.getElementById("name").value = name.firstName}""", {'lastName': lastName, 'firstName': firstName})
except Exception as error:
self.logger.error(error)
def getErrors(self): def getErrors(self):
# send error result # send error result
self.publish_message_to_queue(self.contact, PublishType.ERROR.value, self.page.url) self.publish_message_to_queue(self.contact, PublishType.ERROR, self.page.url)
try: try:
items = self.page.query_selector("div.alert") items = self.page.query_selector("div.alert")
if items: if items:
@@ -253,31 +259,43 @@ class CommandorPage:
def _set_email(self, email): def _set_email(self, email):
time.sleep(get_random_wait_time()) time.sleep(get_random_wait_time())
self.page.evaluate("""(email)=>{ try:
document.getElementById("email").focus(); self.page.evaluate("""(email)=>{
document.getElementById("email").value = email;}""", email) document.getElementById("email").focus();
document.getElementById("email").value = email;}""", email)
except Exception as error:
self.logger.error(error)
def setIdNumber(self, id): def setIdNumber(self, id):
time.sleep(get_random_wait_time()) time.sleep(get_random_wait_time())
self.page.evaluate(""" (id) =>{ try:
document.getElementById("passport_id").focus(); self.page.evaluate(""" (id) =>{
document.getElementById("passport_id").value = id}""", id) document.getElementById("passport_id").focus();
document.getElementById("passport_id").value = id}""", id)
except Exception as error:
self.logger.error(error)
def _checkCgu(self): def _checkCgu(self):
# self.page.mouse.wheel(0, random.randint(200, 600)) # self.page.mouse.wheel(0, random.randint(200, 600))
self.page.evaluate(""" try:
document.getElementById("cgu").focus(); self.page.evaluate("""
document.getElementById("cgu").checked = true; document.getElementById("cgu").focus();
document.getElementById("processing").focus(); document.getElementById("cgu").checked = true;
document.getElementById("processing").checked = true""") document.getElementById("processing").focus();
document.getElementById("processing").checked = true""")
except Exception as error:
self.logger.error(error)
def clickOnValidBtn(self): def clickOnValidBtn(self):
# self.page.mouse.wheel(0, random.randint(400, 500)) # self.page.mouse.wheel(0, random.randint(400, 500))
time.sleep(get_random_wait_time()) time.sleep(get_random_wait_time())
self.page.evaluate("""document.getElementsByClassName("btn")[0].focus();""") try:
time.sleep(get_random_wait_time()) self.page.evaluate("""document.getElementsByClassName("btn")[0].focus();""")
self.page.evaluate(""" time.sleep(get_random_wait_time())
document.getElementsByClassName("btn")[0].click();""") self.page.evaluate("""
document.getElementsByClassName("btn")[0].click();""")
except Exception as error:
self.logger.error(error)
def clear_app_data(self): def clear_app_data(self):
pass pass
@@ -291,16 +309,20 @@ class CommandorPage:
self.logger.info("will close browser") self.logger.info("will close browser")
self.browser.close() self.browser.close()
def publish_message_to_queue(self, contact: ContactPojo, message: str, url: str): def publish_message_to_queue(self, contact: ContactPojo, status: PublishType, url: str):
# create the message # create the message
id = url.split("/")[-1] id = url.split("/")[-1]
result = ReserveResultPojo(type=PublishType.SUCCESS, phone=contact.phone, message=message, url=url, result = ReserveResultPojo(type=status, phone=contact.phone, message=status.value, url=url,
firstName=contact.first_name, lastName=contact.last_name, email=contact.mail, firstName=contact.first_name, lastName=contact.last_name, email=contact.mail,
passport=contact.passport, ccid=contact.ccid) passport=contact.passport, ccid=contact.ccid)
result.id = id result.id = id
self.on_success(result) result.sim_position = self.sim_position
time.sleep(2) result.slot_position = self.slot_position
self.browser.close() params.firebase_store_manager.save(result)
if status is PublishType.SUCCESS:
self.on_success(result)
time.sleep(2)
self.browser.close()
def get_random_id_number_for_proxy() -> str: def get_random_id_number_for_proxy() -> str: