Skip to content

Instantly share code, notes, and snippets.

@apollo13
Last active June 2, 2023 10:13
Show Gist options
  • Save apollo13/f4fc8f33a2700dffb9e11c1b056c53ba to your computer and use it in GitHub Desktop.
Save apollo13/f4fc8f33a2700dffb9e11c1b056c53ba to your computer and use it in GitHub Desktop.
OwnCloud/NextCloud emulator
[tool.poetry]
name = "owncloudemulator"
version = "0.1.0"
description = ""
authors = ["Florian Apolloner <florian@apolloner.eu>"]
[tool.poetry.dependencies]
python = "^3.7"
starlette = "^0.13.0"
uvicorn = "^0.10.8"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
# This simple server emulates a owncloud server for gnome-online-accounts.
# It just redirects the DAV discovery to fastmail :D
from starlette.applications import Starlette
from starlette.routing import Route, Mount
from starlette.requests import Request
from starlette.responses import Response, RedirectResponse
async def homepage(request: Request):
return Response()
async def dav(request: Request):
mapping = {
"caldav": "https://caldav.fastmail.com/dav/calendars",
"carddav": "https://carddav.fastmail.com/dav/addressbooks",
}
return RedirectResponse(mapping[request.path_params["type"]])
app = Starlette(
debug=False,
routes=[
Route("/.well-known/{type}", dav, methods=["PROPFIND"]),
Mount(
"/remote.php",
routes=[
Route("/webdav/", homepage),
Route("/{type}/", dav, methods=["PROPFIND"]),
],
),
],
)
@phs
Copy link

phs commented Apr 30, 2023

Please let me know if any of this is a (licensing) issue for you, and I will do my best to rectify it.

Nope, go for it. And thanks for putting that together!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment