# -*- coding: utf-8 -*- from app.visa_free_config_fetchers.base_fetcher import BaseFetcher class BLSFetcher(BaseFetcher): def __init__(self): super(BLSFetcher, self).__init__("bls") def fetch_free_config(self, origin, target, visa_type, vac_code=None): origin_clean = origin.lower().strip() target_clean = target.lower().strip() vac_clean = (vac_code or "").lower().strip() visa_clean = visa_type.lower().strip() missions = self.metadata.get("missions", {}) mission_key = "{}_{}".format(origin_clean, target_clean) mission_data = missions.get(mission_key, {}) free_config = { "domain": mission_data.get("domain", ""), "ocr_model": mission_data.get("ocr_model", "bls_v1"), "apt_configs": {} } vacs = self.metadata.get("vacs", {}) vac_key = "{}_{}_{}_{}".format(origin_clean, target_clean, vac_clean, visa_clean) vac_info = vacs.get(vac_key, {}) if not vac_info and vac_clean: for k, v in vacs.items(): if k.startswith("{}_{}_{}".format(origin_clean, target_clean, vac_clean)): vac_info = v break if vac_info or vac_clean: routing_key = "slot.{}.{}.{}".format(vac_clean, target_clean, visa_clean) free_config["apt_configs"][routing_key] = vac_info return free_config