| // Copyright 2022 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'dart:async'; |
| |
| import 'package:appengine/appengine.dart'; |
| import 'package:auto_submit/helpers.dart'; |
| import 'package:auto_submit/request_handling/authentication.dart'; |
| import 'package:auto_submit/requests/check_pull_request.dart'; |
| import 'package:auto_submit/requests/check_revert_request.dart'; |
| import 'package:auto_submit/requests/github_webhook.dart'; |
| import 'package:auto_submit/requests/readiness_check.dart'; |
| import 'package:auto_submit/service/config.dart'; |
| import 'package:auto_submit/service/secrets.dart'; |
| import 'package:neat_cache/neat_cache.dart'; |
| import 'package:shelf_router/shelf_router.dart'; |
| |
| /// Number of entries allowed in [Cache]. |
| const int kCacheSize = 1024; |
| |
| Future<void> main() async { |
| await withAppEngineServices(() async { |
| useLoggingPackageAdaptor(); |
| |
| final cache = Cache.inMemoryCacheProvider(kCacheSize); |
| final Config config = Config( |
| cacheProvider: cache, |
| secretManager: CloudSecretManager(), |
| ); |
| const CronAuthProvider authProvider = CronAuthProvider(); |
| |
| final Router router = Router() |
| ..post( |
| '/webhook', |
| GithubWebhook( |
| config: config, |
| ).post, |
| ) |
| ..get( |
| '/check-pull-request', |
| CheckPullRequest( |
| config: config, |
| cronAuthProvider: authProvider, |
| ).run, |
| ) |
| ..get( |
| '/check-revert-requests', |
| CheckRevertRequest( |
| config: config, |
| cronAuthProvider: authProvider, |
| ).run, |
| ) |
| ..get( |
| '/readiness_check', |
| ReadinessCheck( |
| config: config, |
| ).run, |
| ); |
| await serveHandler(router.call); |
| }); |
| } |