Skip to content

Commit

Permalink
Merge pull request #798 from googlefonts/versions-api
Browse files Browse the repository at this point in the history
servers: get family version from api if it exists
  • Loading branch information
m4rc1e authored Jan 16, 2024
2 parents eeae343 + 455d0df commit 8dc9f28
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 12 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,14 @@ jobs:
DEV_FAMILY_DOWNLOAD: ${{ secrets.DEV_FAMILY_DOWNLOAD }}
DEV_META_URL: ${{ secrets.DEV_META_URL }}
DEV_URL: ${{ secrets.DEV_URL }}
DEV_VERSIONS_URL: ${{ secrets.DEV_VERSIONS_URL }}
PRODUCTION_META_URL: ${{ secrets.PRODUCTION_META_URL }}
PRODUCTION_URL: ${{ secrets.PRODUCTION_URL}}
PRODUCTION_VERSIONS_URL: ${{ secrets.PRODUCTION_VERSIONS_URL }}
SANDBOX_FAMILY_DOWNLOAD: ${{ secrets.SANDBOX_FAMILY_DOWNLOAD }}
SANDBOX_META_URL: ${{ secrets.SANDBOX_META_URL }}
SANDBOX_URL: ${{ secrets.SANDBOX_URL }}
SANDBOX_VERSIONS_URL: ${{ secrets.SANDBOX_VERSIONS_URL }}
TRAFFIC_JAM_ID: ${{ secrets.TRAFFIC_JAM_ID }}
STATUS_FIELD_ID: ${{ secrets.STATUS_FIELD_ID }}
LIST_FIELD_ID: ${{ secrets.LIST_FIELD_ID }}
Expand Down
43 changes: 31 additions & 12 deletions Lib/gftools/push/servers.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,24 @@
if os.path.exists(config_fp):
config = ConfigParser()
config.read(config_fp)
SANDBOX_META_URL = config["urls"]["sandbox_meta"]
PRODUCTION_META_URL = config["urls"]["production_meta"]
DEV_FAMILY_DOWNLOAD = config["urls"]["dev_family_download"]
DEV_META_URL = config["urls"]["dev_meta"]
DEV_VERSIONS_URL = config["urls"]["dev_versions"]
SANDBOX_FAMILY_DOWNLOAD = config["urls"]["sandbox_family_download"]
DEV_FAMILY_DOWNLOAD = config["urls"]["dev_family_download"]
SANDBOX_META_URL = config["urls"]["sandbox_meta"]
SANDBOX_VERSIONS_URL = config["urls"]["sandbox_versions"]
PRODUCTION_META_URL = config["urls"]["production_meta"]
PRODUCTION_VERSIONS_URL = config["urls"]["production_versions"]

else:
SANDBOX_META_URL = os.environ.get("SANDBOX_META_URL")
PRODUCTION_META_URL = os.environ.get("PRODUCTION_META_URL")
DEV_FAMILY_DOWNLOAD = os.environ.get("DEV_FAMILY_DOWNLOAD")
DEV_META_URL = os.environ.get("DEV_META_URL")
DEV_VERSIONS_URL = os.environ.get("DEV_VERSIONS_URL")
SANDBOX_FAMILY_DOWNLOAD = os.environ.get("SANDBOX_FAMILY_DOWNLOAD")
DEV_FAMILY_DOWNLOAD = os.environ.get("DEV_FAMILY_DOWNLOAD")
SANDBOX_META_URL = os.environ.get("SANDBOX_META_URL")
SANDBOX_VERSIONS_URL = os.environ.get("SANDBOX_VERSIONS_URL")
PRODUCTION_META_URL = os.environ.get("PRODUCTION_META_URL")
PRODUCTION_VERSIONS_URL = os.environ.get("PRODUCTION_VERSIONS_URL")


@lru_cache
Expand Down Expand Up @@ -72,14 +79,21 @@ def __init__(
name: str,
url: str = PRODUCTION_META_URL,
dl_url: str = PROD_FAMILY_DOWNLOAD,
version_url: str = PRODUCTION_VERSIONS_URL,
):
self.name = name
self.url = url
self.dl_url = dl_url
self.version_url = version_url
self.families: dict[str, Family] = {}
self.designers: dict[str, Designer] = {}
self.metadata: dict[str, FamilyMeta] = {}
self.axisregistry: dict[str, Axis] = {}
self.family_versions = json.loads(requests.get(self.version_url).text[5:])
self.family_versions = {
i["name"]: i["fontVersions"][0]["version"]
for i in self.family_versions["familyVersions"]
}

def compare_push_item(self, item: Items):
server_item = self.find_item(item)
Expand All @@ -103,10 +117,15 @@ def update_axis_registry(self, axis_data):
self.axisregistry[axis["tag"]] = Axis.from_gf_json(axis)

def update_family(self, name: str):
family = Family.from_gf(name, dl_url=self.dl_url)
if family:
self.families[name] = family
family_version = self.family_versions.get(name)
if family_version:
self.families[name] = Family(name, family_version)
return True
else:
family = Family.from_gf(name, dl_url=self.dl_url)
if family:
self.families[name] = family
return True
return False

def update_family_designers(self, name: str):
Expand Down Expand Up @@ -144,12 +163,12 @@ class GFServers(Itemer):

def __init__(self):
self.last_checked = datetime.fromordinal(1).isoformat().split("T")[0]
self.dev = GFServer(GFServers.DEV, DEV_META_URL, DEV_FAMILY_DOWNLOAD)
self.dev = GFServer(GFServers.DEV, DEV_META_URL, DEV_FAMILY_DOWNLOAD, DEV_VERSIONS_URL)
self.sandbox = GFServer(
GFServers.SANDBOX, SANDBOX_META_URL, SANDBOX_FAMILY_DOWNLOAD
GFServers.SANDBOX, SANDBOX_META_URL, SANDBOX_FAMILY_DOWNLOAD, SANDBOX_VERSIONS_URL
)
self.production = GFServer(
GFServers.PRODUCTION, PRODUCTION_META_URL, PROD_FAMILY_DOWNLOAD
GFServers.PRODUCTION, PRODUCTION_META_URL, PROD_FAMILY_DOWNLOAD, PRODUCTION_VERSIONS_URL
)
self.fp = None

Expand Down

0 comments on commit 8dc9f28

Please # to comment.