mirror of
https://github.com/Threnklyn/jira.git
synced 2026-05-18 20:23:28 +02:00
[#232] fix api to use common Version schema
also rewrote the schema fetcher to use Go
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user