Merge branch '19092-upload-crunchstat_summary-to-pypi'
[arvados-dev.git] / lib / redmine / projects.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 // Somewhat inspired by https://github.com/mattn/go-redmine (MIT licensed)
6
7 package redmine
8
9 import (
10         "strconv"
11 )
12
13 type projectWrapper struct {
14         Project Project `json:"project"`
15 }
16
17 type projectsResult struct {
18         Projects []Project `json:"projects"`
19 }
20
21 type Project struct {
22         ID          int    `json:"id"`
23         Parent      IDName `json:"parent"`
24         Name        string `json:"name"`
25         IDentifier  string `json:"identifier"`
26         Description string `json:"description"`
27         CreatedOn   string `json:"created_on"`
28         UpdatedOn   string `json:"updated_on"`
29 }
30
31 func (c *Client) GetProject(id int) (*Project, error) {
32         res, err := c.Get("/projects/" + strconv.Itoa(id) + ".json")
33         if err != nil {
34                 return nil, err
35         }
36         defer res.Body.Close()
37
38         var r projectWrapper
39         err = responseHelper(res, &r, 200)
40         if err != nil {
41                 return nil, err
42         }
43         return &r.Project, nil
44 }
45
46 func (c *Client) GetProjectByName(name string) (*Project, error) {
47         res, err := c.Get("/projects/" + name + ".json")
48         if err != nil {
49                 return nil, err
50         }
51         defer res.Body.Close()
52
53         var r projectWrapper
54         err = responseHelper(res, &r, 200)
55         if err != nil {
56                 return nil, err
57         }
58         return &r.Project, nil
59 }