| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package worker |
| |
| import ( |
| "errors" |
| |
| "golang.org/x/vulndb/internal/worker/store" |
| ) |
| |
| // serviceID names the Cloud Run service. |
| const serviceID = "vuln-worker" |
| |
| // Config holds configuration information for the worker server. |
| type Config struct { |
| // Project is the Google Cloud Project where the resources live. |
| Project string |
| |
| // Namespace is the Firstore namespace to use. |
| Namespace string |
| |
| // UseErrorReporting determines whether errors go to the Error Reporting API. |
| UseErrorReporting bool |
| |
| // IssueRepo is the GitHub repo to use for issues. |
| // An empty string disables issue creation. |
| IssueRepo string |
| |
| // GitHubAccessToken is the token needed to authorize to the GitHub API. |
| GitHubAccessToken string |
| |
| // Store is the implementation of store.Store used by the server. |
| Store store.Store |
| } |
| |
| func (c *Config) Validate() error { |
| if c.Project == "" { |
| return errors.New("missing project") |
| } |
| if c.Namespace == "" { |
| return errors.New("missing namespace") |
| } |
| if c.IssueRepo != "" && c.GitHubAccessToken == "" { |
| return errors.New("issue repo requires access token") |
| } |
| return nil |
| } |