Merge branch '19092-upload-crunchstat_summary-to-pypi'
[arvados-dev.git] / lib / redmine / version.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 package redmine
6
7 import (
8         "errors"
9         "strconv"
10 )
11
12 type versionWrapper struct {
13         Version Version `json:"version"`
14 }
15
16 type versionsResult struct {
17         Versions []Version `json:"versions"`
18 }
19
20 type Version struct {
21         ID          int    `json:"id"`
22         Project     IDName `json:"project"`
23         Name        string `json:"name"`
24         Description string `json:"description"`
25         Status      string `json:"status"`
26         DueDate     string `json:"due_date"`
27         CreatedOn   string `json:"created_on"`
28         UpdatedOn   string `json:"updated_on"`
29 }
30
31 func (c *Client) Version(id int) (*Version, error) {
32         res, err := c.Get("/versions/" + strconv.Itoa(id) + ".json")
33         if err != nil {
34                 return nil, err
35         }
36         defer res.Body.Close()
37
38         if res.StatusCode == 404 {
39                 return nil, errors.New("Not Found")
40         }
41
42         var r versionWrapper
43         err = responseHelper(res, &r, 200)
44         if err != nil {
45                 return nil, err
46         }
47         return &r.Version, nil
48 }
49
50 func (c *Client) Versions(projectId int) ([]Version, error) {
51         res, err := c.Get("/projects/" + strconv.Itoa(projectId) + "/versions.json")
52         if err != nil {
53                 return nil, err
54         }
55         defer res.Body.Close()
56
57         var r versionsResult
58         err = responseHelper(res, &r, 200)
59         if err != nil {
60                 return nil, err
61         }
62         return r.Versions, nil
63 }