github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/api/routes.go (about)

     1  // Copyright 2017 The WPT Dashboard Project. All rights reserved.
     2  // Use of this source code is governed by a BSD-style license that can be
     3  // found in the LICENSE file.
     4  
     5  package api
     6  
     7  import "github.com/web-platform-tests/wpt.fyi/shared"
     8  
     9  // RegisterRoutes adds all the api route handlers.
    10  func RegisterRoutes() {
    11  	// API endpoint for diff of two test run summary JSON blobs.
    12  	shared.AddRoute("/api/diff", "api-diff",
    13  		shared.WrapApplicationJSON(
    14  			shared.WrapPermissiveCORS(apiDiffHandler)))
    15  
    16  	// API endpoint for fetching all labels.
    17  	shared.AddRoute("/api/labels", "api-labels",
    18  		shared.WrapApplicationJSON(
    19  			shared.WrapPermissiveCORS(apiLabelsHandler)))
    20  
    21  	// API endpoint for fetching a manifest for a commit SHA.
    22  	shared.AddRoute("/api/manifest", "api-manifest",
    23  		shared.WrapApplicationJSON(
    24  			shared.WrapPermissiveCORS(apiManifestHandler)))
    25  
    26  	// API endpoint for listing all test runs for a given SHA.
    27  	shared.AddRoute("/api/runs", "api-test-runs",
    28  		shared.WrapApplicationJSON(
    29  			shared.WrapPermissiveCORS(apiTestRunsHandler)))
    30  
    31  	// API endpoint for listing SHAs for the test runs.
    32  	shared.AddRoute("/api/shas", "api-shas",
    33  		shared.WrapApplicationJSON(
    34  			shared.WrapPermissiveCORS(apiSHAsHandler)))
    35  
    36  	// API endpoint for listing SHAs for the test runs.
    37  	shared.AddRoute("/api/versions", "api-versions",
    38  		shared.WrapApplicationJSON(
    39  			shared.WrapPermissiveCORS(apiVersionsHandler)))
    40  
    41  	// API endpoints for a single test run, by
    42  	// ID:
    43  	shared.AddRoute("/api/runs/{id}", "api-test-run",
    44  		shared.WrapApplicationJSON(
    45  			shared.WrapPermissiveCORS(apiTestRunHandler)))
    46  	// 'product' param & 'sha' param:
    47  	shared.AddRoute("/api/run", "api-test-run",
    48  		shared.WrapApplicationJSON(
    49  			shared.WrapPermissiveCORS(apiTestRunHandler)))
    50  
    51  	// API endpoint for listing pending test runs
    52  	pendingTestRuns := shared.WrapApplicationJSON(
    53  		shared.WrapPermissiveCORS(apiPendingTestRunsHandler))
    54  	shared.AddRoute("/api/status", "api-pending-test-runs", pendingTestRuns)
    55  	shared.AddRoute("/api/status/{filter:pending|invalid|empty|duplicate}", "api-pending-test-runs", pendingTestRuns)
    56  
    57  	// API endpoint for redirecting to a run's summary JSON blob.
    58  	shared.AddRoute("/api/results", "api-results", shared.WrapPermissiveCORS(apiResultsRedirectHandler))
    59  
    60  	// API endpoint for redirecting to a screenshot png blob.
    61  	shared.AddRoute(
    62  		"/api/screenshot/{screenshot:.*}",
    63  		"api-screenshot",
    64  		shared.WrapPermissiveCORS(apiScreenshotRedirectHandler),
    65  	)
    66  
    67  	// API endpoint for searching Metadata for the products.
    68  	shared.AddRoute("/api/metadata", "api-metadata", shared.WrapPermissiveCORS(apiMetadataHandler))
    69  
    70  	// API endpoint for searching pending Metadata stored in memory.
    71  	shared.AddRoute(
    72  		"/api/metadata/pending",
    73  		"api-pending-metadata",
    74  		shared.WrapApplicationJSON(shared.WrapPermissiveCORS(apiPendingMetadataHandler)),
    75  	)
    76  
    77  	// API endpoint for modifying Metadata.
    78  	shared.AddRoute(
    79  		"/api/metadata/triage",
    80  		"api-metadata-triage",
    81  		shared.WrapTrustedCORS(apiMetadataTriageHandler, CORSList, []string{"PATCH"}),
    82  	)
    83  
    84  	// API endpoint for checking a user's login status.
    85  	shared.AddRoute(
    86  		"/api/user",
    87  		"api-user",
    88  		shared.WrapApplicationJSON(shared.WrapTrustedCORS(apiUserHandler, CORSList, nil)),
    89  	)
    90  
    91  	// API endpoint for fetching browser-specific failure data.
    92  	shared.AddRoute(
    93  		"/api/bsf",
    94  		"api-bsf",
    95  		shared.WrapApplicationJSON(shared.WrapPermissiveCORS(apiBSFHandler)),
    96  	)
    97  
    98  	// API endpoint for fetching historical data of a specific test for each of the four major browsers.
    99  	shared.AddRoute("/api/history", "api-history",
   100  		shared.WrapApplicationJSON(
   101  			shared.WrapPermissiveCORS(testHistoryHandler)))
   102  }