1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: Apache-2.0
15 //map[string]interface {}{
16 /* "release":map[string]interface {}{
17 "description":interface {}(nil),
19 "name":"Arvados 2.3.7",
20 "planned_velocity":interface {}(nil),
21 "project":map[string]interface {}{
24 "release_end_date":"2021-12-24",
25 "release_start_date":"2021-11-26",
26 "sharing":"hierarchy",
30 ID int `json:"id,omitempty"`
31 Name string `json:"name,omitempty"`
32 Description string `json:"description,omitempty"`
33 Sharing string `json:"sharing,omitempty"`
34 ReleaseStartDate string `json:"release_start_date,omitempty"`
35 ReleaseEndDate string `json:"release_end_date,omitempty"`
36 PlannedVelocity string `json:"planned_velocity,omitempty"`
37 Status string `json:"status,omitempty"`
38 ProjectID int `json:"project_id,omitempty"`
39 Project *IDName `json:"project,omitempty"`
42 type releaseWrapper struct {
43 Release Release `json:"release"`
46 // FindReleaseByName retrieves a redmine Release object by name
47 func (c *Client) FindReleaseByName(project, name string) (*Release, error) {
48 // This api call only returns the first matching release object. There is no unique index on release names.
49 res, err := c.Get("/rb/release/" + strings.ToLower(project) + "/find_by_name.json?name=" + url.QueryEscape(name))
53 defer res.Body.Close()
55 if res.StatusCode == 404 {
56 return nil, fmt.Errorf("Missing API call /rb/release/project_id/find_by_name.json")
59 err = responseHelper(res, &r, 200)
63 if r.Release.ID == 0 {
66 return &r.Release, nil
69 // FindReleaseByName retrieves a redmine Release object by name
70 func (c *Client) GetRelease(ID int) (*Release, error) {
71 // This api call only returns the first matching release object. There is no unique index on release names.
72 res, err := c.Get("/rb/release/" + strconv.Itoa(ID) + ".json")
76 defer res.Body.Close()
78 if res.StatusCode == 404 {
79 return nil, fmt.Errorf("Not found")
82 err = responseHelper(res, &r, 200)
86 if r.Release.ID == 0 {
89 return &r.Release, nil
92 func (c *Client) CreateRelease(release Release) (*Release, error) {
95 s, err := json.Marshal(rr)
99 res, err := c.Post("/rb/release/"+strings.ToLower(release.Project.Name)+"/new.json", string(s))
103 defer res.Body.Close()
106 err = responseHelper(res, &r, 201)
110 return &r.Release, nil