@@ -3,17 +3,16 @@ package api
33import (
44 "bytes"
55 "encoding/json"
6+ "fmt"
67 "io"
78 "net/http"
9+ "net/http/httputil"
810 "net/url"
911 "os"
1012 "path"
1113 "strings"
1214
13- "net/http/httputil"
14-
1515 "github.com/MakeNowJust/heredoc"
16- "github.com/pkg/errors"
1716 "github.com/planetscale/cli/internal/cmdutil"
1817 "github.com/spf13/cobra"
1918 "golang.org/x/oauth2"
@@ -121,33 +120,33 @@ func ApiCmd(ch *cmdutil.Helper, userAgent string, defaultHeaders map[string]stri
121120
122121 u , err := parseURL (ch , opts , args [0 ])
123122 if err != nil {
124- return errors . Wrap ( err , "parsing URL" )
123+ return fmt . Errorf ( "parsing URL: %w" , err )
125124 }
126125
127126 body , err := parseBody (opts )
128127 if err != nil {
129- return errors . Wrap ( err , "parsing HTTP request body" )
128+ return fmt . Errorf ( "parsing HTTP request body: %w" , err )
130129 }
131130
132131 req , err := http .NewRequestWithContext (ctx , method , u .String (), body )
133132 if err != nil {
134- return errors . Wrap ( err , "preparing HTTP request" )
133+ return fmt . Errorf ( "preparing HTTP request: %w" , err )
135134 }
136135
137136 req .Header , err = parseHeader (opts , req .Method , userAgent , defaultHeaders )
138137 if err != nil {
139- return errors . Wrap ( err , "parsing HTTP request header" )
138+ return fmt . Errorf ( "parsing HTTP request header: %w" , err )
140139 }
141140
142141 if ch .Debug () {
143142 debugReq , err := httputil .DumpRequestOut (req , true )
144143 if err != nil {
145- return errors . Wrap ( err , "dumping request output" )
144+ return fmt . Errorf ( "dumping request output: %w" , err )
146145 }
147146 debugReq = append (debugReq , '\n' )
148147 _ , err = os .Stderr .Write (debugReq )
149148 if err != nil {
150- return errors . Wrap ( err , "writing request output to stderr" )
149+ return fmt . Errorf ( "writing request output to stderr: %w" , err )
151150 }
152151 }
153152
@@ -161,16 +160,16 @@ func ApiCmd(ch *cmdutil.Helper, userAgent string, defaultHeaders map[string]stri
161160 }
162161 res , err := cl .Do (req )
163162 if err != nil {
164- return errors . Wrap ( err , "sending HTTP request" )
163+ return fmt . Errorf ( "sending HTTP request: %w" , err )
165164 }
166165 defer res .Body .Close ()
167166
168167 if _ , err := io .Copy (os .Stdout , res .Body ); err != nil {
169- return errors . Wrap ( err , "reading HTTP response body" )
168+ return fmt . Errorf ( "reading HTTP response body: %w" , err )
170169 }
171170
172171 if res .StatusCode > 399 {
173- return errors .Errorf ("HTTP %s" , res .Status )
172+ return fmt .Errorf ("HTTP %s" , res .Status )
174173 }
175174
176175 return nil
@@ -187,15 +186,15 @@ func parseURL(ch *cmdutil.Helper, opts *ApiOpts, endpoint string) (*url.URL, err
187186
188187 u , err := url .Parse (ch .Config .BaseURL )
189188 if err != nil {
190- return nil , errors . Wrap ( err , "parsing base URL" )
189+ return nil , fmt . Errorf ( "parsing base URL: %w" , err )
191190 }
192191 u = u .ResolveReference (& url.URL {Path : path .Join ("v1" , reqPath )})
193192
194193 if len (opts .Query ) > 0 {
195194 for _ , param := range opts .Query {
196195 k , v , ok := strings .Cut (param , "=" )
197196 if ! ok {
198- return nil , errors . Wrapf ( err , "parsing query param %q" , param )
197+ return nil , fmt . Errorf ( "missing '=' in query param %q" , param )
199198 }
200199 q := u .Query ()
201200 q .Add (k , v )
@@ -221,7 +220,7 @@ func parseHeader(opts *ApiOpts, method, userAgent string, defaultHeaders map[str
221220 for _ , header := range opts .Header {
222221 k , v , ok := strings .Cut (header , ":" )
223222 if ! ok {
224- return nil , errors .Errorf ("invalid header: %q" , header )
223+ return nil , fmt .Errorf ("invalid header: %q" , header )
225224 }
226225 out .Set (k , strings .TrimPrefix (v , " " ))
227226 }
@@ -242,12 +241,12 @@ func parseBody(opts *ApiOpts) (io.Reader, error) {
242241 if opts .Input == "-" {
243242 raw , err = io .ReadAll (os .Stdin )
244243 if err != nil {
245- return nil , errors . Wrap ( err , "reading body from stdin" )
244+ return nil , fmt . Errorf ( "reading body from stdin: %w" , err )
246245 }
247246 } else {
248247 raw , err = os .ReadFile (opts .Input )
249248 if err != nil {
250- return nil , errors . Wrapf ( err , "reading body from file %q" , opts .Input )
249+ return nil , fmt . Errorf ( "reading body from file %q: %w " , opts .Input , err )
251250 }
252251 }
253252 }
@@ -256,7 +255,7 @@ func parseBody(opts *ApiOpts) (io.Reader, error) {
256255 if err := json .Unmarshal (raw , & bodyMap ); err != nil {
257256 // body wasn't JSON
258257 if len (opts .Field ) > 0 {
259- return nil , errors . Wrap ( err , "parsing input as JSON (--field/-F was specified)" )
258+ return nil , fmt . Errorf ( "parsing input as JSON (--field/-F was specified): %w" , err )
260259 }
261260
262261 return bytes .NewReader (raw ), nil
@@ -266,12 +265,12 @@ func parseBody(opts *ApiOpts) (io.Reader, error) {
266265
267266 bodyMap , err = parseFields (bodyMap , opts .Field )
268267 if err != nil {
269- return nil , errors . Wrap ( err , "parsing body field" )
268+ return nil , fmt . Errorf ( "parsing body field: %w" , err )
270269 }
271270 if bodyMap != nil {
272271 jsonBody , err := json .MarshalIndent (bodyMap , "" , "\t " )
273272 if err != nil {
274- return nil , errors . Wrap ( err , "parsing body field" )
273+ return nil , fmt . Errorf ( "parsing body field: %w" , err )
275274 }
276275 return bytes .NewReader (jsonBody ), nil
277276 }
@@ -285,7 +284,7 @@ func parseFields(out map[string]interface{}, fields []string) (map[string]interf
285284 for _ , field := range fields {
286285 err := parseFieldInto (out , field )
287286 if err != nil {
288- return nil , errors . Wrapf ( err , "parsing field %q" , field )
287+ return nil , fmt . Errorf ( "parsing field %q: %w " , field , err )
289288 }
290289 }
291290 return out , nil
@@ -294,7 +293,7 @@ func parseFields(out map[string]interface{}, fields []string) (map[string]interf
294293func parseFieldInto (tgt map [string ]interface {}, field string ) error {
295294 k , v , ok := strings .Cut (field , "=" )
296295 if ! ok {
297- return errors .Errorf ("no `=` found in field %q" , field )
296+ return fmt .Errorf ("no `=` found in field %q" , field )
298297 }
299298 paths := strings .Split (k , "." )
300299
@@ -311,7 +310,7 @@ func parseFieldInto(tgt map[string]interface{}, field string) error {
311310 }
312311 parsed , err := parseValue (v )
313312 if err != nil {
314- return errors . Wrapf ( err , "parsing value of field %q" , field )
313+ return fmt . Errorf ( "parsing value of field %q: %w " , field , err )
315314 }
316315 tail [lastPath ] = parsed
317316 return nil
@@ -322,7 +321,7 @@ func parseValue(s string) (interface{}, error) {
322321 filename := s [1 :]
323322 value , err := os .ReadFile (filename )
324323 if err != nil {
325- return nil , errors . Wrapf ( err , "reading value %q as file" , s )
324+ return nil , fmt . Errorf ( "reading value %q as file: %w " , s , err )
326325 }
327326 return string (value ), nil
328327 }
0 commit comments