From 3cb5513cb405af78a01750a29a93be28ac5d90e4 Mon Sep 17 00:00:00 2001 From: Martin Czygan Date: Wed, 21 Apr 2021 17:49:12 +0200 Subject: wip: a few dot examples --- skate/cmd/skate-dot/main.go | 80 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 skate/cmd/skate-dot/main.go (limited to 'skate/cmd') diff --git a/skate/cmd/skate-dot/main.go b/skate/cmd/skate-dot/main.go new file mode 100644 index 0000000..97b70ad --- /dev/null +++ b/skate/cmd/skate-dot/main.go @@ -0,0 +1,80 @@ +// skate-dot generates dot files from inbound and outbound citation links. +package main + +import ( + "context" + "flag" + "fmt" + "io" + "log" + "os" + + "github.com/elastic/go-elasticsearch/esapi" + elasticsearch "github.com/elastic/go-elasticsearch/v7" +) + +var ( + es = flag.String("es", "http://localhost:9200", "elasticsearch holding fatcat_ref index") + index = flag.String("x", "fatcat_ref_v01", "index name") + fatcat = flag.String("f", "https://api.fatcat.wiki/v0", "fatcat api") + ident = flag.String("i", "2kw3xjf2cbcmdlm3ihkoz2t4lu", "release ident") +) + +func main() { + flag.Parse() + // s := "The Determination of Concentration and Type of Ownership on Bank Performance and Risks in Indonesia" + // fmt.Printf("%s\n", wordwrap.WrapString(s, 20)) + cfg := elasticsearch.Config{ + Addresses: []string{ + *es, + }, + } + es, err := elasticsearch.NewClient(cfg) + if err != nil { + log.Fatal(err) + } + client := &Client{ + Api: *fatcat, + Es: es, + Index: *index, + } + log.Println(client) + client.Outbound(*ident) + client.Inbound(*ident) +} + +// A client for fatcat and elasticsearch. +type Client struct { + Api string + Es *elasticsearch.Client + Index string +} + +func (c *Client) String() string { + info, _ := c.Es.Info() + return fmt.Sprintf("%s %s (%s) %s", c.Api, info, elasticsearch.Version, c.Index) +} + +func (c *Client) Inbound(ident string) []string { + resp, err := esapi.Search( + esapi.Search.WithContext(context.Background()), + esapi.Search.WithIndex(c.Index), + ) + if err != nil { + log.Fatal(err) + } + io.Copy(os.Stdout, resp.Body) + return nil +} + +func (c *Client) Outbound(ident string) []string { + req := &esapi.SearchRequest{ + Query: fmt.Sprintf("source_release_ident:%s", ident), + } + resp, err := req.Do(context.Background(), c.Es) + if err != nil { + log.Fatal(err) + } + io.Copy(os.Stdout, resp.Body) + return nil +} -- cgit v1.2.3