Coverage for src/couchers/urls.py: 94%
72 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-09 02:24 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-09 02:24 +0000
1# The source of truth for URLs is
2# //docs/urls.md
3# Please make sure this file stays in sync with that file as well as
4# //app/web/src/routes.ts
7from couchers.config import config
10def app_link() -> str:
11 return f"{config['BASE_URL']}/"
14def icon_url() -> str:
15 return f"{config['BASE_URL']}/logo512.png"
18def profile_link() -> str:
19 return f"{config['BASE_URL']}/profile"
22def user_link(*, username: str) -> str:
23 return f"{config['BASE_URL']}/user/{username}"
26def edit_profile_link() -> str:
27 return f"{config['BASE_URL']}/profile/edit"
30def signup_link(*, token: str) -> str:
31 return f"{config['BASE_URL']}/signup?token={token}"
34def account_settings_link() -> str:
35 return f"{config['BASE_URL']}/account-settings"
38def notification_settings_link() -> str:
39 return f"{config['BASE_URL']}/account-settings/notifications"
42def feature_preview_link() -> str:
43 return f"{config['BASE_URL']}/preview"
46def password_reset_link(*, password_reset_token: str) -> str:
47 return f"{config['BASE_URL']}/complete-password-reset?token={password_reset_token}"
50def host_request_link_host() -> str:
51 return f"{config['BASE_URL']}/messages/hosting/"
54def host_request_link_guest() -> str:
55 return f"{config['BASE_URL']}/messages/surfing/"
58def host_request(*, host_request_id: str) -> str:
59 return f"{config['BASE_URL']}/messages/request/{host_request_id}"
62def messages_link() -> str:
63 return f"{config['BASE_URL']}/messages/"
66def chat_link(*, chat_id: str) -> str:
67 return f"{config['BASE_URL']}/messages/chats/{chat_id}"
70def event_link(*, occurrence_id: str, slug: str = "e") -> str:
71 return f"{config['BASE_URL']}/event/{occurrence_id}/{slug}"
74def community_link(*, node_id: str, slug: str = "e") -> str:
75 return f"{config['BASE_URL']}/community/{node_id}/{slug}"
78def discussion_link(*, discussion_id: str, slug: str = "e") -> str:
79 return f"{config['BASE_URL']}/discussion/{discussion_id}/{slug}"
82def leave_reference_link(*, reference_type: str, to_user_id: str, host_request_id: str | None = None) -> str:
83 assert reference_type in ["friend", "surfed", "hosted"]
84 if host_request_id:
85 return f"{config['BASE_URL']}/leave-reference/{reference_type}/{to_user_id}/{host_request_id}"
86 else:
87 return f"{config['BASE_URL']}/leave-reference/{reference_type}/{to_user_id}"
90def profile_references_link() -> str:
91 return f"{config['BASE_URL']}/profile/references"
94def friend_requests_link() -> str:
95 return f"{config['BASE_URL']}/connections/friends/"
98def media_upload_url(*, path: str) -> str:
99 return f"{config['MEDIA_SERVER_UPLOAD_BASE_URL']}/{path}"
102def change_email_link(*, confirmation_token: str) -> str:
103 return f"{config['BASE_URL']}/confirm-email?token={confirmation_token}"
106def donation_url() -> str:
107 return f"{config['BASE_URL']}/donate"
110def donation_cancelled_url() -> str:
111 return f"{config['BASE_URL']}/donate?cancelled=true"
114def donation_success_url() -> str:
115 return f"{config['BASE_URL']}/donate?success=true"
118def complete_strong_verification_url(*, verification_attempt_token: str) -> str:
119 return f"{config['BASE_URL']}/complete-strong-verification?verification_attempt_token={verification_attempt_token}"
122def delete_account_link(*, account_deletion_token: str) -> str:
123 return f"{config['BASE_URL']}/delete-account?token={account_deletion_token}"
126def recover_account_link(*, account_undelete_token: str) -> str:
127 return f"{config['BASE_URL']}/recover-account?token={account_undelete_token}"
130def unsubscribe_link(*, payload: str, sig: str) -> str:
131 return f"{config['BASE_URL']}/quick-link?payload={payload}&sig={sig}"
134def quick_link(*, payload: str, sig: str) -> str:
135 return f"{config['BASE_URL']}/quick-link?payload={payload}&sig={sig}"
138def media_url(*, filename: str, size: str) -> str:
139 return f"{config['MEDIA_SERVER_BASE_URL']}/img/{size}/{filename}"
142def console_link(*, page: str) -> str:
143 return f"{config['CONSOLE_BASE_URL']}/{page}"
146def invite_code_link(*, code: str) -> str:
147 return f"{config['BASE_URL']}/invite?code={code}"