You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

75 lines
2.2 KiB

from urllib.parse import quote, unquote
from django.urls import include, path, register_converter
from hc.api import views
class QuoteConverter:
regex = r"[\w%~_.-]+"
def to_python(self, value):
return unquote(value)
def to_url(self, value):
return quote(value, safe="")
class SHA1Converter:
regex = "[A-z0-9]{40}"
def to_python(self, value):
return value
def to_url(self, value):
return value
register_converter(QuoteConverter, "quoted")
register_converter(SHA1Converter, "sha1")
uuid_urls = [
path("", views.ping),
path("fail", views.ping, {"action": "fail"}),
path("start", views.ping, {"action": "start"}),
path("<int:exitstatus>", views.ping),
]
slug_urls = [
path("fail", views.ping_by_slug, {"action": "fail"}),
path("start", views.ping_by_slug, {"action": "start"}),
path("<int:exitstatus>", views.ping_by_slug),
]
urlpatterns = [
path("ping/<uuid:code>", views.ping),
path("ping/<uuid:code>/", include(uuid_urls)),
path("ping/<slug:ping_key>/<slug:slug>", views.ping_by_slug),
path("ping/<slug:ping_key>/<slug:slug>/", include(slug_urls)),
path("api/v1/checks/", views.checks),
path("api/v1/checks/<uuid:code>", views.single, name="hc-api-single"),
path("api/v1/checks/<sha1:unique_key>", views.get_check_by_unique_key),
path("api/v1/checks/<uuid:code>/pause", views.pause, name="hc-api-pause"),
path(
"api/v1/notifications/<uuid:code>/status",
views.notification_status,
name="hc-api-notification-status",
),
path("api/v1/checks/<uuid:code>/pings/", views.pings, name="hc-api-pings"),
path("api/v1/checks/<uuid:code>/flips/", views.flips_by_uuid, name="hc-api-flips"),
path("api/v1/checks/<sha1:unique_key>/flips/", views.flips_by_unique_key),
path("api/v1/channels/", views.channels),
path("api/v1/badges/", views.badges),
path(
"badge/<slug:badge_key>/<slug:signature>/<quoted:tag>.<slug:fmt>",
views.badge,
name="hc-badge",
),
path(
"badge/<slug:badge_key>/<slug:signature>.<slug:fmt>",
views.badge,
{"tag": "*"},
name="hc-badge-all",
),
path("api/v1/metrics/", views.metrics),
path("api/v1/status/", views.status),
]