AutoRpa/rpa_rebate/rebate_finder.py

53 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""生产 finder:登录一次,按合同号搜返利中心。Callable[[str], bool]。"""
from __future__ import annotations
import os
from rebate_flow_steps import (
DEFAULT_URL,
RebateFlowContext,
enter_purchase_agreement,
login_rebate_center,
open_rebate_center,
search_contract,
)
class RebateFinder:
def __init__(self, browser, ctx: RebateFlowContext | None = None, **kwargs):
self._browser = browser
self._ctx = ctx or RebateFlowContext(
rebate_url=kwargs["rebate_url"],
username=kwargs["username"],
password=kwargs["password"],
)
self._ready = False
def __call__(self, contract_no: str) -> bool:
self._ensure_session()
return search_contract(self._browser, contract_no)
def _ensure_session(self) -> None:
if self._ready:
return
open_rebate_center(self._browser, self._ctx)
login_rebate_center(self._browser, self._ctx)
enter_purchase_agreement(self._browser)
self._ready = True
def context_from_env() -> RebateFlowContext:
return RebateFlowContext(
rebate_url=(os.getenv("REBATE_URL") or DEFAULT_URL).strip(),
username=(os.getenv("REBATE_USERNAME") or "").strip(),
password=os.getenv("REBATE_PASSWORD") or "",
)
def production_finder() -> RebateFinder:
from apa_browser_adapter import ApaBrowserAdapter
ctx = context_from_env()
browser = ApaBrowserAdapter(url=ctx.rebate_url, flow="REBATE_FIND")
return RebateFinder(browser, ctx)