blob: f5e83afe77cb58696d68f81c83ae72cfa454100e [file] [log] [blame]
// 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/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(
'/readiness_check',
ReadinessCheck(
config: config,
).run,
);
await serveHandler(router);
});
}