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)
}