18093: add functionality to create a new release checklist ticket in
[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         //      "encoding/json"
9         "errors"
10         "strconv"
11         //      "strings"
12 )
13
14 type versionWrapper struct {
15         Version Version `json:"version"`
16 }
17
18 type versionsResult struct {
19         Versions []Version `json:"versions"`
20 }
21
22 type Version struct {
23         ID          int    `json:"id"`
24         Project     IDName `json:"project"`
25         Name        string `json:"name"`
26         Description string `json:"description"`
27         Status      string `json:"status"`
28         DueDate     string `json:"due_date"`
29         CreatedOn   string `json:"created_on"`
30         UpdatedOn   string `json:"updated_on"`
31 }
32
33 func (c *Client) Version(id int) (*Version, error) {
34         res, err := c.Get("/versions/" + strconv.Itoa(id) + ".json")
35         if err != nil {
36                 return nil, err
37         }
38         defer res.Body.Close()
39
40         if res.StatusCode == 404 {
41                 return nil, errors.New("Not Found")
42         }
43
44         var r versionWrapper
45         err = responseHelper(res, &r, 200)
46         if err != nil {
47                 return nil, err
48         }
49         return &r.Version, nil
50         /*
51                 decoder := json.NewDecoder(res.Body)
52                 var r versionWrapper
53                 if res.StatusCode != 200 {
54                         var er errorsResult
55                         err = decoder.Decode(&er)
56                         if err == nil {
57                                 err = errors.New(strings.Join(er.Errors, "\n"))
58                         }
59                 } else {
60                         err = decoder.Decode(&r)
61                 }
62                 if err != nil {
63                         return nil, err
64                 } */
65         return &r.Version, nil
66 }