Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Custom
**/*.code-workspace
9 changes: 9 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"python-envs.pythonProjects": [
{
"path": ".",
"envManager": "ms-python.python:venv",
"packageManager": "ms-python.python:pip"
}
]
}
26 changes: 0 additions & 26 deletions backend/Dockerfile

This file was deleted.

12 changes: 0 additions & 12 deletions backend/docker-compose.yaml

This file was deleted.

File renamed without changes.
26 changes: 26 additions & 0 deletions backend/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM python:3.14

ARG VERSION

ARG API_HOST
ENV API_HOST=${API_HOST}

ARG API_PORT
ENV API_PORT=${API_PORT}

ARG DATA_DIR="/var/cesium-api/"
ENV DATA_DIR=${DATA_DIR}

ARG API_PREFIX="/"
ENV API_PREFIX=${API_PREFIX}

ARG WHL_NAME
ENV WHL_NAME=cesium_api-${VERSION}-py3-none-any.whl

COPY --from=dist ${WHL_NAME} /
RUN pip install -U /${WHL_NAME}
RUN rm /${WHL_NAME}

EXPOSE ${API_PORT}

ENTRYPOINT cesium-api --host ${API_HOST} --port ${API_PORT} --data-dir ${DATA_DIR} --prefix ${API_PREFIX}
File renamed without changes.
20 changes: 20 additions & 0 deletions backend/docker/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
services:
cesium-api:
image: cesium-api:latest
ports:
- '9000:9000'
volumes:
- globe_data:/var/cesium-api/
build:
additional_contexts:
dist: ../dist
args:
VERSION: 1.1.0
API_HOST: 0.0.0.0
API_PORT: 9000
tags:
- uniclogs/cesium-api:latest
- uniclogs/cesium-api:1.1.0

volumes:
globe_data:
60 changes: 24 additions & 36 deletions backend/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
[build-system]
requires = ["setuptools", "setuptools_scm"]
build-backend = "setuptools.build_meta"

[project]
name = "cesium-api"
description = "A supporting API for the CesiumJS App"
version = "1.0.2"
version = "1.1.0"
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.14"
license = { text = "GPL-2.0" }
classifiers = [
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
Expand All @@ -18,40 +14,32 @@ classifiers = [
"Programming Language :: Python :: 3.11",
]
dependencies = [
"dataclasses-json",
"flask",
"flask-cors",
"gunicorn",
"flask==3.1.3",
"flask-cors==6.0.5",
"skyfield==1.55",
"pygeoif==0.7",
"python-dateutil",
"requests",
"satellite-czml",
"skyfield",
"dataclasses-json==0.6.7",
"python-dateutil==2.9.0.post0",
"requests==2.34.2",
"satellite-czml==0.1.2",
]

[project.scripts]
cesium-api = "cesium_api.__main__:main"

[tool.setuptools.packages.find]
exclude = ["docs*", "tests*"]
[project.optional-dependencies]
ci = ["ruff==0.16.5", "pytest==9.1.1"]
build = ["build==1.6.0", "gunicorn==26.2.0"]

[tool.setuptools.package-data]
"*" = ["*.yaml", "*.csv"]

[tool.black]
line_length = 100
[tool.ruff]
line-length = 100
indent-width = 4

[tool.pylama]
format = "pylint"
skip = "*/.tox/*,*/.env/,*/.git/*,*/.github/*,*/build/*,.direnv/*"
linters = "pycodestyle,pyflakes,pylint,mccabe,mypy,radon"

[[tool.pylama.files]]
path = "*/__init__.py"
# W0611: Imported but unused
# R0903: Too few public methods
ignore = "W0611,R0903"
[tool.ruff.lint]
select = [
"E", # pycodestyle
"F", # Pyflakes
"I", # isort
]

[tool.isort]
profile = "black"
line_length = 100
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
13 changes: 0 additions & 13 deletions backend/ruff.toml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import os
import json
from flask_cors import CORS
from flask import Flask, send_file
from importlib.metadata import version
from .data import Data, GroundStation, Satellite

from flask_cors import CORS

from .data import GroundStation, Satellite

APP_NAME = "cesium-api"
APP_DESCRIPTION = "A supporting API for the CesiumJS App"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
import logging

from argparse import ArgumentParser, Namespace
from .app import App
from .data import Data

from flask_cors import CORS
from . import APP_NAME, APP_DESCRIPTION, APP_VERSION, SATELLITES, GROUND_STATIONS, DEFAULT_HOST, DEFAULT_PORT, DEFAULT_DATA_DIR, DEFAULT_API_PREFIX

from . import (
APP_DESCRIPTION,
APP_NAME,
APP_VERSION,
DEFAULT_API_PREFIX,
DEFAULT_DATA_DIR,
DEFAULT_HOST,
DEFAULT_PORT,
GROUND_STATIONS,
SATELLITES,
)
from .app import App
from .data import Data

LOG = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
Expand Down
7 changes: 4 additions & 3 deletions backend/cesium_api/app.py → backend/src/cesium_api/app.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from __future__ import annotations
from flask import Flask, Blueprint
from flask_cors import CORS

from flask import Flask

from . import DEFAULT_DATA_DIR
from .views import view_czml, view_groundstation, view_passes, view_satellite, view_tiles
from .data import Data
from .views import view_czml, view_groundstation, view_passes, view_satellite, view_tiles


class App(Flask):
Expand Down
11 changes: 6 additions & 5 deletions backend/cesium_api/data.py → backend/src/cesium_api/data.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
from __future__ import annotations

import json
import requests
from time import sleep
from threading import Thread
from marshmallow import fields
from dataclasses import dataclass, field
from satellite_czml import satellite_czml
from datetime import datetime, timedelta, timezone
from threading import Thread
from time import sleep

import requests
from dataclasses_json import config, dataclass_json
from marshmallow import fields
from satellite_czml import satellite_czml
from skyfield.api import EarthSatellite, Loader, Topos, wgs84

ACTIVAE_SAT_URL = "https://celestrak.org/NORAD/elements/gp.php?GROUP=active&FORMAT=tle"
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from json import loads
from ..data import Data

from flask import Blueprint, current_app

view_czml = Blueprint("view_czml", __name__)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from ..data import Data
from flask import Blueprint, current_app

from ..data import Data

view_groundstation = Blueprint("view_groundstation", __name__)


Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from json import dumps
from ..data import Data

from flask import Blueprint, current_app

from ..data import Data

view_satellite = Blueprint("view_satellite", __name__)


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from os.path import exists, abspath
from json import dumps
from os.path import abspath, exists

from flask import Blueprint, current_app, send_file

view_tiles = Blueprint("view_tiles", __name__)
Expand Down