| package clients |
| |
| import ( |
| "fmt" |
| |
| "github.com/buildkite/go-buildkite/buildkite" |
| ) |
| |
| type BuildkiteAPI interface { |
| ListAgents(org string, page, perPage int) ([]buildkite.Agent, int, error) |
| ListBuildyByOrg(org string, page, perPage int) ([]buildkite.Build, int, error) |
| ListBuildsByPipeline(org, pipeline string, page, perPage int) ([]buildkite.Build, int, error) |
| } |
| |
| type BuildkiteAPIWrapper struct { |
| client *buildkite.Client |
| } |
| |
| func CreateBuildkiteAPI(apiToken string, debug bool) (BuildkiteAPI, error) { |
| tokenConfig, err := buildkite.NewTokenConfig(apiToken, debug) |
| if err != nil { |
| return nil, fmt.Errorf("Could not create Buildkite config: %v", err) |
| } |
| return &BuildkiteAPIWrapper{ |
| client: buildkite.NewClient(tokenConfig.Client()), |
| }, |
| nil |
| } |
| |
| func (bk *BuildkiteAPIWrapper) ListAgents(org string, page, perPage int) ([]buildkite.Agent, int, error) { |
| opt := buildkite.AgentListOptions{ListOptions: buildkite.ListOptions{Page: page, PerPage: perPage}} |
| agents, response, err := bk.client.Agents.List(org, &opt) |
| return agents, getLastPage(response), err |
| } |
| |
| func (bk *BuildkiteAPIWrapper) ListBuildyByOrg(org string, page, perPage int) ([]buildkite.Build, int, error) { |
| opt := buildkite.BuildsListOptions{ListOptions: buildkite.ListOptions{Page: page, PerPage: perPage}} |
| builds, response, err := bk.client.Builds.ListByOrg(org, &opt) |
| return builds, getLastPage(response), err |
| } |
| |
| func (bk *BuildkiteAPIWrapper) ListBuildsByPipeline(org, pipeline string, page, perPage int) ([]buildkite.Build, int, error) { |
| opt := buildkite.BuildsListOptions{ListOptions: buildkite.ListOptions{Page: page, PerPage: perPage}} |
| builds, response, err := bk.client.Builds.ListByPipeline(org, pipeline, &opt) |
| return builds, getLastPage(response), err |
| } |
| |
| func getLastPage(response *buildkite.Response) int { |
| if response == nil { |
| return 0 |
| } |
| return response.LastPage |
| } |