-
Notifications
You must be signed in to change notification settings - Fork 29
/
projectTypes.go
130 lines (97 loc) · 3.36 KB
/
projectTypes.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package jira
import (
"context"
"encoding/json"
"fmt"
"net/http"
)
type ProjectTypeService struct{ client *Client }
type ProjectTypeScheme struct {
Key string `json:"key"`
FormattedKey string `json:"formattedKey"`
DescriptionI18NKey string `json:"descriptionI18nKey"`
Icon string `json:"icon"`
Color string `json:"color"`
}
// Returns all project types, whether or not the instance has a valid license for each type.
// Docs: https://docs.go-atlassian.io/jira-software-cloud/projects/types#get-all-project-types
func (p *ProjectTypeService) Gets(ctx context.Context) (result *[]ProjectTypeScheme, response *Response, err error) {
var endpoint = "rest/api/3/project/type"
request, err := p.client.newRequest(ctx, http.MethodGet, endpoint, nil)
if err != nil {
return
}
request.Header.Set("Accept", "application/json")
response, err = p.client.Do(request)
if err != nil {
return
}
result = new([]ProjectTypeScheme)
if err = json.Unmarshal(response.BodyAsBytes, &result); err != nil {
return
}
return
}
// Returns all project types with a valid license.
// Docs: https://docs.go-atlassian.io/jira-software-cloud/projects/types#get-licensed-project-types
func (p *ProjectTypeService) Licensed(ctx context.Context) (result *[]ProjectTypeScheme, response *Response, err error) {
var endpoint = "rest/api/3/project/type/accessible"
request, err := p.client.newRequest(ctx, http.MethodGet, endpoint, nil)
if err != nil {
return
}
request.Header.Set("Accept", "application/json")
response, err = p.client.Do(request)
if err != nil {
return
}
result = new([]ProjectTypeScheme)
if err = json.Unmarshal(response.BodyAsBytes, &result); err != nil {
return
}
return
}
// Returns a project type.
// Docs: https://docs.go-atlassian.io/jira-software-cloud/projects/types#get-project-type-by-key
func (p *ProjectTypeService) Get(ctx context.Context, projectTypeKey string) (result *ProjectTypeScheme, response *Response, err error) {
if len(projectTypeKey) == 0 {
return nil, nil, fmt.Errorf("error, please provide a valid projectTypeKey value")
}
var endpoint = fmt.Sprintf("rest/api/3/project/type/%v", projectTypeKey)
request, err := p.client.newRequest(ctx, http.MethodGet, endpoint, nil)
if err != nil {
return
}
request.Header.Set("Accept", "application/json")
response, err = p.client.Do(request)
if err != nil {
return
}
result = new(ProjectTypeScheme)
if err = json.Unmarshal(response.BodyAsBytes, &result); err != nil {
return
}
return
}
// Returns a project type if it is accessible to the user.
// Docs: https://docs.go-atlassian.io/jira-software-cloud/projects/types#get-accessible-project-type-by-key
func (p *ProjectTypeService) Accessible(ctx context.Context, projectTypeKey string) (result *ProjectTypeScheme, response *Response, err error) {
if len(projectTypeKey) == 0 {
return nil, nil, fmt.Errorf("error, please provide a valid projectTypeKey value")
}
var endpoint = fmt.Sprintf("rest/api/3/project/type/%v/accessible", projectTypeKey)
request, err := p.client.newRequest(ctx, http.MethodGet, endpoint, nil)
if err != nil {
return
}
request.Header.Set("Accept", "application/json")
response, err = p.client.Do(request)
if err != nil {
return
}
result = new(ProjectTypeScheme)
if err = json.Unmarshal(response.BodyAsBytes, &result); err != nil {
return
}
return
}