1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
package cmd
import (
"bufio"
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"github.com/lensesio/schema-registry"
"github.com/spf13/viper"
)
func stdinToString() string {
bs, err := ioutil.ReadAll(bufio.NewReader(os.Stdin))
if err != nil {
panic(err)
}
return string(bs)
}
func printSchema(sch schemaregistry.Schema) {
log.Printf("version: %d\n", sch.Version)
log.Printf("id: %d\n", sch.Id)
var indented bytes.Buffer
if err := json.Indent(&indented, []byte(sch.Schema), "", " "); err != nil {
fmt.Println(sch.Schema) //isn't a json object, which is legal
return
}
indented.WriteTo(os.Stdout)
os.Stdout.WriteString("\n")
}
func getById(id int) error {
cl := assertClient()
sch, err := cl.GetSchemaById(id)
if err != nil {
return err
}
fmt.Println(sch)
return nil
}
func getLatestBySubject(subj string) error {
cl := assertClient()
sch, err := cl.GetLatestSchema(subj)
if err != nil {
return err
}
printSchema(sch)
return nil
}
func getBySubjectVersion(subj string, ver int) error {
cl := assertClient()
sch, err := cl.GetSchemaBySubject(subj, ver)
if err != nil {
return err
}
printSchema(sch)
return nil
}
func assertClient() schemaregistry.Client {
c, err := schemaregistry.NewClient(viper.GetString("url"))
if err != nil {
fmt.Println(err)
os.Exit(-1)
}
return c
}
|