grim/youtrack-import

cdadae07e61c
Convert bold, italic, and bold italic to the markdown version
package youtrack
import (
"encoding/xml"
"fmt"
"net/http"
"net/url"
)
type OwnedField struct {
Owner string `xml:"owner,attr"`
Description string `xml:"description,attr"`
Value string `xml:",cdata"`
}
type OwnedFieldBundle struct {
XMLName xml.Name `xml:"ownedFieldBundle"`
Name string `xml:"name,attr"`
Fields []OwnedField `xml:"ownedField"`
}
func (c *Client) GetOwnedFieldBundle(name string) (*OwnedFieldBundle, error) {
resp, err := c.request(
http.MethodGet,
c.uri+"/admin/customfield/ownedFieldBundle/"+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 owned field bundle: %v", err)
}
bundle := &OwnedFieldBundle{}
return bundle, xml.NewDecoder(resp.Body).Decode(bundle)
}
func (c *Client) AppendOwnedFieldBundle(name string, field OwnedField) error {
baseUri := c.uri + "/admin/customfield/ownedFieldBundle/" + name + "/" + field.Value
values := url.Values{}
if field.Description != "" {
values.Add("description", field.Description)
}
if field.Owner != "" {
values.Add("login", field.Owner)
}
resp, err := c.request(
http.MethodPut,
baseUri+"?"+values.Encode(),
nil,
)
if err != nil {
return err
}
defer resp.Body.Close()
if err := c.checkStatus(resp, http.StatusCreated); err != nil {
return fmt.Errorf("failed to append %q to %q: %s", field.Value, name, err)
}
return nil
}