grim/youtrack-import

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
}