hlfw.ca

wkcli

Download patch

ref: 5806c444f118a8bd6c979c2a52a26059f56518b4
parent: ab91f6b00015858a8d8e115279ec1a06c0617a7d
author: halfwit <michaelmisch1985@gmail.com>
date: Wed Jun 15 03:16:31 PDT 2022

2022 get back to working order

--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
 
 Search wikimedia sites from the command line
 
-
 ## Usage
 ```
 wkcli [ -lx ] [ -w wiki ]
--- /dev/null
+++ b/go.mod
@@ -1,0 +1,10 @@
+module github.com/halfwit/wkcli
+
+go 1.18
+
+require github.com/tidwall/gjson v1.14.1
+
+require (
+	github.com/tidwall/match v1.1.1 // indirect
+	github.com/tidwall/pretty v1.2.0 // indirect
+)
--- /dev/null
+++ b/go.sum
@@ -1,0 +1,6 @@
+github.com/tidwall/gjson v1.14.1 h1:iymTbGkQBhveq21bEvAQ81I0LEBork8BFe1CUZXdyuo=
+github.com/tidwall/gjson v1.14.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
+github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
--- a/list.go
+++ b/list.go
@@ -1,8 +1,8 @@
 package main
 
 import (
-	"compress/gzip"
 	"fmt"
+	"io"
 	"io/ioutil"
 
 	"github.com/tidwall/gjson"
@@ -16,7 +16,7 @@
 		return fmt.Errorf("Received incomplete results, cannot continue")
 	}
 	names := iface.getslice(r[1], "Names")
-	syn   := iface.getslice(r[2], "Synopsis")
+	syn   := iface.getslice(r[3], "Synopsis")
 	if err := iface.errors(); err != nil {
 		return err
 	}
@@ -26,7 +26,7 @@
 	return nil
 }
 
-func listLinks(header []interface{}, results *gzip.Reader) error {
+func listLinks(header []interface{}, results io.ReadCloser) error {
 	err := listHeading(header)
 	if err != nil || ! *refs {
 		return err
@@ -40,7 +40,7 @@
 func listHeading(r []interface{}) error {
 	var iface fromInterface
 	if len(r) < 3 || r == nil {
-		fmt.Errorf("Unable to parse results, cannot continue")
+		return fmt.Errorf("Unable to parse results, cannot continue")
 	}
 	name := iface.getslice(r[1], "Names")
 	syns := iface.getslice(r[2], "Synopsis")
@@ -57,7 +57,7 @@
 	case []interface{}:
 		return v
 	}
-	*e = append(*e, fmt.Sprintf("Unable to locate %s in results"))
+	*e = append(*e, fmt.Sprintf("Unable to locate %s in results", name))
 	return nil
 }
 
--- a/searches.go
+++ b/searches.go
@@ -1,9 +1,9 @@
 package main
 
 import (
-	"compress/gzip"
 	"encoding/json"
 	"fmt"
+	"io"
 	"net/http"
 	"time"
 )
@@ -15,6 +15,7 @@
 	url := fmt.Sprintf(initial, *wiki, query)
 	var r []interface{}
 	gr, err := run(url)
+	defer gr.Close()
 	if err != nil {
 		return nil, err
 	}
@@ -24,7 +25,7 @@
 	return r, nil
 }
 
-func getLinks(query string) (*gzip.Reader, error) {
+func getLinks(query string) (io.ReadCloser, error) {
 	url := fmt.Sprintf(links, *wiki, query)
 	return run(url)	
 }
@@ -41,7 +42,7 @@
 	return len(names) > 1
 }
 
-func run(url string) (*gzip.Reader, error) {
+func run(url string) (io.ReadCloser, error) {
 	client := &http.Client{
 		Timeout: 15 * time.Second,
 	}
@@ -49,12 +50,10 @@
 	if err != nil {
 		return nil, err
 	}
-	req.Header.Set("Accept-Encoding", "gzip")
-	req.Header.Set("User-Agent", "gcli (gzip)")
+	req.Header.Set("User-Agent", "wkcli")
 	response, err := client.Do(req)
 	if err != nil {
 		return nil, err
 	}
-	defer response.Body.Close()
-	return gzip.NewReader(response.Body)
+	return response.Body, nil
 }
\ No newline at end of file
--- a/wkcli.go
+++ b/wkcli.go
@@ -32,6 +32,7 @@
 		os.Exit(0)
 	}
 	d2, err := getLinks(query)
+	defer d2.Close()
 	if err != nil {
 		log.Fatalf("%s\n%s\n", listHeading(d), err)
 	}