diff --git a/jiradata/ProjectVersion.go b/jiradata/ProjectVersion.go deleted file mode 100644 index 2b52538..0000000 --- a/jiradata/ProjectVersion.go +++ /dev/null @@ -1,13 +0,0 @@ -package jiradata - -type ProjectVersion struct { - Self string `json:"self,omitempty" yaml:"self,omitempty"` - ID string `json:"id,omitempty" yaml:"id,omitempty"` - Description string `json:"description,omitempty" yaml:"description,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - Archived bool `json:"archived,omitempty" yaml:archived,omitempty"` - Released bool `json:"released,omitempty" yaml:released,omitempty"` - ReleaseDate string `json:"releaseDate,omitempty" yaml:"releaseDate,omitempty"` - UserReleaseDate string `json:"userReleaseDate,omitempty" yaml:"userReleaseDate,omitempty"` - ProjectID int `json:"projectId,omitempty" yaml:"projectId,omitempty"` -} diff --git a/jiradata/ProjectVersions.go b/jiradata/ProjectVersions.go deleted file mode 100644 index d1896a9..0000000 --- a/jiradata/ProjectVersions.go +++ /dev/null @@ -1,3 +0,0 @@ -package jiradata - -type ProjectVersions []*ProjectVersion diff --git a/project.go b/project.go index 8b3f03b..9139b20 100644 --- a/project.go +++ b/project.go @@ -27,11 +27,11 @@ func GetProjectComponents(ua HttpClient, endpoint string, project string) (*jira } // https://developer.atlassian.com/cloud/jira/platform/rest/v2#api-api-2-project-projectIdOrKey-versions-get -func (j *Jira) GetProjectVersions(project string) (*jiradata.ProjectVersions, error) { +func (j *Jira) GetProjectVersions(project string) (*jiradata.Versions, error) { return GetProjectVersions(j.UA, j.Endpoint, project) } -func GetProjectVersions(ua HttpClient, endpoint string, project string) (*jiradata.ProjectVersions, error) { +func GetProjectVersions(ua HttpClient, endpoint string, project string) (*jiradata.Versions, error) { uri := URLJoin(endpoint, "rest/api/2/project", project, "versions") resp, err := ua.GetJSON(uri) if err != nil { @@ -40,8 +40,8 @@ func GetProjectVersions(ua HttpClient, endpoint string, project string) (*jirada defer resp.Body.Close() if resp.StatusCode == 200 { - results := jiradata.ProjectVersions{} - return &results, readJSON(resp.Body, &results) + results := jiradata.Versions{} + return &results, json.NewDecoder(resp.Body).Decode(&results) } return nil, responseError(resp) } diff --git a/schemas/fetch-schemas.go b/schemas/fetch-schemas.go new file mode 100644 index 0000000..e241dbd --- /dev/null +++ b/schemas/fetch-schemas.go @@ -0,0 +1,63 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "strings" + + "golang.org/x/net/html" +) + +func mayPanic(err error) { + if err != nil { + panic(err) + } +} + +func main() { + resp, err := http.Get("https://docs.atlassian.com/software/jira/docs/api/REST/7.12.0/") + mayPanic(err) + defer resp.Body.Close() + + capture := false + nextCodeBlock := false + stream := html.NewTokenizer(resp.Body) + var buffer string + for tt := stream.Next(); tt != html.ErrorToken; tt = stream.Next() { + t := stream.Token() + if t.Data == "h6" && tt == html.StartTagToken { + capture = true + } + if t.Data == "h6" && tt == html.EndTagToken { + capture = false + if strings.Contains(strings.ToLower(buffer), "schema") { + nextCodeBlock = true + } + buffer = "" + } + if nextCodeBlock && t.Data == "code" && tt == html.StartTagToken { + capture = true + } + if nextCodeBlock && t.Data == "code" && tt == html.EndTagToken { + capture = false + schema := map[string]interface{}{} + err := json.Unmarshal([]byte(buffer), &schema) + mayPanic(err) + title, ok := schema["title"].(string) + if ok { + title = strings.ReplaceAll(title, " ", "") + fileName := fmt.Sprintf("%s.json", title) + fmt.Printf("Writing %s\n", fileName) + err := ioutil.WriteFile(fileName, []byte(buffer), 0644) + mayPanic(err) + } + buffer = "" + nextCodeBlock = false + } + if capture && tt == html.TextToken { + buffer += t.Data + } + } +} diff --git a/schemas/fetch-schemas.py b/schemas/fetch-schemas.py deleted file mode 100755 index e27a1f0..0000000 --- a/schemas/fetch-schemas.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python -from lxml import html -import requests -import json - -page = requests.get('https://docs.atlassian.com/jira/REST/cloud') -tree = html.fromstring(page.content) - -schemas = tree.xpath("//div[@class='representation-doc-block']//code/text()") - -for schema in schemas: - try: - data = json.loads(schema) - if "title" in data: - title = data["title"].replace(" ", "") - print "Writing {}.json".format(title) - with open("{}.json".format(title), 'w') as f: - f.write(schema) - except: - True -