Skip to content

Commit

Permalink
Remove safetype dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
sheepla committed Feb 16, 2025
1 parent 8af4288 commit d5737d8
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 24 deletions.
24 changes: 11 additions & 13 deletions client/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ import (

"github.com/PuerkitoBio/goquery"
"golang.org/x/net/html"

safe "github.com/eminarican/safetypes"
)

type SearchParam struct {
Expand Down Expand Up @@ -103,10 +101,10 @@ type SearchResult struct {
Snippet string
}

func parse(r io.Reader) safe.Result[*[]SearchResult] {
func parse(r io.Reader) (*[]SearchResult, error) {
doc, err := goquery.NewDocumentFromReader(r)
if err != nil {
return safe.Err[*[]SearchResult](err.Error())
return nil, fmt.Errorf("failed to parse HTML document: %w", err)
}

var (
Expand All @@ -127,7 +125,7 @@ func parse(r io.Reader) safe.Result[*[]SearchResult] {
result = append(result, item)
})

return safe.AsResult[*[]SearchResult](&result, nil)
return &result, nil
}

func removeHtmlTags(node *html.Node, buf *bytes.Buffer) {
Expand Down Expand Up @@ -173,29 +171,29 @@ func extractLink(href string) string {
return q.Get("uddg")
}

func SearchWithOption(param *SearchParam, opt *ClientOption) safe.Result[*[]SearchResult] {
func SearchWithOption(param *SearchParam, opt *ClientOption) (*[]SearchResult, error) {
c := &http.Client{
Timeout: opt.Timeout,
}
req, err := buildRequest(param, opt)
if err != nil {
return safe.Err[*[]SearchResult](err.Error())
return nil, fmt.Errorf("failed to build request: %w", err)
}

resp, err := c.Do(req)
if err != nil {
return safe.Err[*[]SearchResult](err.Error())
return nil, fmt.Errorf("failed to send request: %w", err)
}
defer resp.Body.Close()

result := parse(resp.Body)
if result.IsErr() {
return result
result, err := parse(resp.Body)
if err != nil {
return result, nil
}

return result
return result, nil
}

func Search(param *SearchParam) safe.Result[*[]SearchResult] {
func Search(param *SearchParam) (*[]SearchResult, error) {
return SearchWithOption(param, defaultClientOption)
}
5 changes: 3 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
module github.com/sheepla/duckgo

go 1.20
go 1.21.2

toolchain go1.23.4

require (
github.com/PuerkitoBio/goquery v1.8.1
github.com/alexflint/go-arg v1.4.3
github.com/eminarican/safetypes v0.0.8
github.com/koki-develop/go-fzf v0.15.0
github.com/mattn/go-runewidth v0.0.15
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:Yyn
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/eminarican/safetypes v0.0.8 h1:J+WICjWuhDvIlFYV0jMJrpaar7+jaGLGuysbQt3oQwY=
github.com/eminarican/safetypes v0.0.8/go.mod h1:L15ewpL5jWPq3wbm4W2yHL3KZ1/ZSJg+NRpDIMcVTOU=
github.com/koki-develop/go-fzf v0.15.0 h1:M7wqkU6YtfHa5pXe3d6aWy5T5AvoGVfp78fDvp5TdkI=
github.com/koki-develop/go-fzf v0.15.0/go.mod h1:qrT0S4PW4rfyxvSvQj8DbaMjTOn60KgnCyAhgryK3Z4=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
Expand Down Expand Up @@ -53,6 +51,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
Expand Down Expand Up @@ -98,3 +97,4 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
14 changes: 7 additions & 7 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,14 @@ func run(opts *Options) error {
return err
}

result := client.SearchWithOption(param, &client.ClientOption{
result, err := client.SearchWithOption(param, &client.ClientOption{
Timeout: time.Duration(opts.TimeoutSec) * time.Second,
UserAgent: opts.UserAgent,
Referrer: opts.Referrer,
})
if result.IsErr() {
return result.Error()
}
if err != nil {
return err
}

if opts.Json {
if err := json.NewEncoder(os.Stdout).Encode(&result); err != nil {
Expand All @@ -93,20 +93,20 @@ func run(opts *Options) error {
return nil
}

selected, err := find(*result.Unwrap())
selected, err := find(*result)
if err != nil {
return err
}

for _, idx := range selected {
if opts.Browser == "" {
if err := open.Run((*result.Unwrap())[idx].Link); err != nil {
if err := open.Run(((*result)[idx]).Link); err != nil {
return err
}

return nil
} else {
if err := open.RunWith((*result.Unwrap())[idx].Link, opts.Browser); err != nil {
if err := open.RunWith((*result)[idx].Link, opts.Browser); err != nil {
return err
}

Expand Down

0 comments on commit d5737d8

Please sign in to comment.