github.com/crosbymichael/octokat@v0.0.0-20160826194511-076a32289ed5/releases.go (about) 1 package octokat 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 type Release struct { 9 ID int `json:"id,omitempty"` 10 URL string `json:"url,omitempty"` 11 HTMLURL string `json:"html_url,omitempty"` 12 AssetsURL string `json:"assets_url,omitempty"` 13 UploadURL string `json:"upload_url,omitempty"` 14 TagName string `json:"tag_name,omitempty"` 15 TargetCommitsh string `json:"target_commitish,omitempty"` 16 Name string `json:"name,omitempty"` 17 Body string `json:"body,omitempty"` 18 Draft bool `json:"draft,omitempty"` 19 Prerelease bool `json:"prerelease,omitempty"` 20 CreatedAt time.Time `json:"created_at,omitempty"` 21 PublishedAt time.Time `json:"published_at,omitempty"` 22 Assets []Asset `json:"assets,omitempty"` 23 } 24 25 // List releases for a repository 26 // 27 // http://developer.github.com/v3/repos/releases/#list-releases-for-a-repository 28 func (c *Client) Releases(repo Repo, options *Options) (releases []Release, err error) { 29 path := fmt.Sprintf("repos/%s/releases", repo) 30 options = addPreviewMediaType(options) 31 err = c.jsonGet(path, options, &releases) 32 return 33 } 34 35 type ReleaseParams struct { 36 TagName string `json:"tag_name,omitempty"` 37 TargetCommitish string `json:"target_commitish,omitempty"` 38 Name string `json:"name,omitempty"` 39 Body string `json:"body,omitempty"` 40 Draft bool `json:"draft,omitempty"` 41 Prerelease bool `json:"prerelease,omitempty"` 42 } 43 44 // Create a release 45 // 46 // See http://developer.github.com/v3/repos/releases/#create-a-release 47 func (c *Client) CreateRelease(repo Repo, options *Options) (release *Release, err error) { 48 path := fmt.Sprintf("repos/%s/releases", repo) 49 options = addPreviewMediaType(options) 50 err = c.jsonPost(path, options, &release) 51 return 52 } 53 54 func addPreviewMediaType(options *Options) *Options { 55 if options == nil { 56 options = &Options{} 57 } 58 59 if options.Headers == nil { 60 options.Headers = Headers{} 61 } 62 63 if options.Headers["Accept"] == "" { 64 options.Headers["Accept"] = PreviewMediaType 65 } 66 67 return options 68 }