grim/youtrack-import
Clone
Summary
Browse
Changes
Graph
Disable the issue linker and only mentioned previously discarded comments once
draft
2020-09-01, Gary Kramlich
d8a71dd2be73
Disable the issue linker and only mentioned previously discarded comments once
package
youtrack
import
(
"encoding/xml"
"fmt"
"net/http"
)
type
CustomFieldParam
struct
{
Name
string
`xml:"name,attr"`
Value
string
`xml:"value,attr"`
}
type
ProjectCustomField
struct
{
XMLName
xml
.
Name
`xml:"projectCustomField"`
Type
string
`xml:"type,attr"`
EmptyText
string
`xml:"emptyText,attr"`
CanBeEmpty
bool
`xml:"canBeEmpty,attr"`
Name
string
`xml:"name,attr"`
URL
string
`xml:"url,attr"`
Params
[]
CustomFieldParam
`xml:"param"`
}
func
(
c
*
Client
)
GetProjectCustomField
(
projectID
,
name
string
)
(
*
ProjectCustomField
,
error
)
{
resp
,
err
:=
c
.
request
(
http
.
MethodGet
,
c
.
uri
+
"/admin/project/"
+
projectID
+
"/customfield/"
+
name
,
nil
,
)
if
err
!=
nil
{
return
nil
,
err
}
defer
resp
.
Body
.
Close
()
if
err
:=
c
.
checkStatus
(
resp
,
http
.
StatusOK
);
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to get custom field: %v"
,
err
)
}
pcf
:=
&
ProjectCustomField
{}
if
err
:=
xml
.
NewDecoder
(
resp
.
Body
).
Decode
(
pcf
);
err
!=
nil
{
return
nil
,
err
}
return
pcf
,
nil
}
func
(
pcf
*
ProjectCustomField
)
GetBundleName
()
(
string
,
error
)
{
bundle
:=
""
for
_
,
param
:=
range
pcf
.
Params
{
if
param
.
Name
==
"bundle"
{
bundle
=
param
.
Value
break
}
}
if
bundle
==
""
{
return
""
,
fmt
.
Errorf
(
"Failed to find the bundle for subsystems"
)
}
return
bundle
,
nil
}