| 187 | self.host = host |
| 188 | |
| 189 | def make_absolute_url(self, base_url: str | URL) -> URL: |
| 190 | if isinstance(base_url, str): |
| 191 | base_url = URL(base_url) |
| 192 | if self.protocol: |
| 193 | scheme = { |
| 194 | "http": {True: "https", False: "http"}, |
| 195 | "websocket": {True: "wss", False: "ws"}, |
| 196 | }[self.protocol][base_url.is_secure] |
| 197 | else: |
| 198 | scheme = base_url.scheme |
| 199 | |
| 200 | netloc = self.host or base_url.netloc |
| 201 | path = base_url.path.rstrip("/") + str(self) |
| 202 | return URL(scheme=scheme, netloc=netloc, path=path) |
| 203 | |
| 204 | |
| 205 | class Secret: |