Skip to content

Commit 9757aa1

Browse files
committed
Tweaks
- error handling - http request/response cleanup
1 parent f70cb9b commit 9757aa1

File tree

4 files changed

+24
-23
lines changed

4 files changed

+24
-23
lines changed

files.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ func LoadVideoMeta(config Config, video *youtube.Video) (*VideoMeta, error) {
9090
if config.MetaJSON != "" {
9191
file, e := os.ReadFile(config.MetaJSON)
9292
if e != nil {
93-
e2 := fmt.Errorf("error reading file %q: %s", config.MetaJSON, e)
93+
e2 := fmt.Errorf("error reading file %q: %w", config.MetaJSON, e)
9494
return nil, e2
9595
}
9696

9797
e = json.Unmarshal(file, &videoMeta)
9898
if e != nil {
99-
e2 := fmt.Errorf("error parsing file %q: %s", config.MetaJSON, e)
99+
e2 := fmt.Errorf("error parsing file %q: %w", config.MetaJSON, e)
100100
return nil, e2
101101
}
102102

@@ -192,7 +192,7 @@ func Open(filename string, mediaType MediaType) (io.ReadCloser, int, error) {
192192
var resp *http.Response
193193
resp, err = http.Head(filename)
194194
if err != nil {
195-
return reader, 0, fmt.Errorf("error opening %s: %s", filename, err)
195+
return reader, 0, fmt.Errorf("error opening %q: %w", filename, err)
196196
}
197197
lenStr := resp.Header.Get("content-length")
198198
if lenStr != "" {
@@ -204,9 +204,11 @@ func Open(filename string, mediaType MediaType) (io.ReadCloser, int, error) {
204204

205205
resp, err = http.Get(filename)
206206
if err != nil {
207-
return reader, 0, fmt.Errorf("error opening %s: %s", filename, err)
207+
return reader, 0, fmt.Errorf("error opening %q: %w", filename, err)
208208
}
209-
if resp.ContentLength != 0 {
209+
// Go doc: When err is nil, resp always contains a non-nil resp.Body. Caller should close resp.Body when done reading from it.
210+
defer resp.Body.Close()
211+
if resp.ContentLength > 0 {
210212
filesize = resp.ContentLength
211213
}
212214
reader = resp.Body
@@ -217,23 +219,23 @@ func Open(filename string, mediaType MediaType) (io.ReadCloser, int, error) {
217219
var fileInfo os.FileInfo
218220
file, err = os.Open(filename)
219221
if err != nil {
220-
return reader, 0, fmt.Errorf("error opening %s: %s", filename, err)
222+
return reader, 0, fmt.Errorf("error opening %q: %w", filename, err)
221223
}
222224

223225
fileInfo, err = file.Stat()
224226
if err != nil {
225-
return reader, 0, fmt.Errorf("error stat'ing %s: %s", filename, err)
227+
return reader, 0, fmt.Errorf("error stat'ing %q: %w", filename, err)
226228
}
227229

228230
// check the file looks like the media type it is supposed to be
229231
buf := make([]byte, 512)
230232
_, err = file.Read(buf)
231233
if err != nil {
232-
return reader, 0, fmt.Errorf("error reading %s: %s", filename, err)
234+
return reader, 0, fmt.Errorf("error reading %q: %w", filename, err)
233235
}
234236
_, err = file.Seek(0, 0)
235237
if err != nil {
236-
return reader, 0, fmt.Errorf("error reading %s: %s", filename, err)
238+
return reader, 0, fmt.Errorf("error reading %q: %w", filename, err)
237239
}
238240
contentType := http.DetectContentType(buf)
239241
switch mediaType {

http.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func playlistList(service *youtube.Service, pageToken string) (*youtube.Playlist
6363

6464
response, err := call.Do()
6565
if err != nil {
66-
return nil, fmt.Errorf("error retrieving playlists: %s", err)
66+
return nil, fmt.Errorf("error retrieving playlists: %w", err)
6767
}
6868

6969
return response, nil
@@ -107,7 +107,7 @@ func (plx *Playlistx) AddVideoToPlaylist(service *youtube.Service, videoID strin
107107
// API doesn't return playlist ID here!?
108108
playlist, err = insertCall.Do()
109109
if err != nil {
110-
return fmt.Errorf("error creating playlist with title %q: %s", plx.Title, err)
110+
return fmt.Errorf("error creating playlist with title %q: %w", plx.Title, err)
111111
}
112112
}
113113

internal/limiter/limiter.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ limitations under the License.
1515
package limiter
1616

1717
import (
18-
"bytes"
1918
"context"
2019
"fmt"
2120
"io"
2221
"net/http"
22+
"net/http/httputil"
2323
"strings"
2424
"sync"
2525
"time"
@@ -226,9 +226,10 @@ func (t *LimitTransport) RoundTrip(r *http.Request) (*http.Response, error) {
226226
t.reader.ReadCloser.Close()
227227
}
228228

229+
// wrap request body in a limitchecker
229230
t.reader.ReadCloser = r.Body
230-
231231
r.Body = &t.reader
232+
232233
t.reader.Unlock()
233234
}
234235

@@ -241,13 +242,11 @@ func (t *LimitTransport) RoundTrip(r *http.Request) (*http.Response, error) {
241242
if err == nil {
242243
t.logger.Debugf("Response status code: %d\n", resp.StatusCode)
243244
if resp.Body != nil {
244-
defer resp.Body.Close()
245-
bodyBytes, err := io.ReadAll(resp.Body)
245+
respBytes, err := httputil.DumpResponse(resp, true)
246246
if err != nil {
247-
t.logger.Debugf("Error reading response body: %s\n", err)
247+
t.logger.Debugf("Error reading response: %s\n", err)
248248
} else {
249-
t.logger.Debugf("response body %s", bodyBytes)
250-
resp.Body = io.NopCloser(bytes.NewBuffer(bodyBytes))
249+
t.logger.Debugf("response dump:\n%s", respBytes)
251250
}
252251
}
253252
}

oauth.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,12 +300,12 @@ func BuildOAuthHTTPClient(ctx context.Context, scopes []string, oAuthPort int) (
300300
func (f CacheFile) Token() (*oauth2.Token, error) {
301301
file, err := os.Open(string(f))
302302
if err != nil {
303-
return nil, fmt.Errorf("CacheFile.Token: %s", err.Error())
303+
return nil, fmt.Errorf("CacheFile.Token: %w", err)
304304
}
305305
defer file.Close()
306306
tok := &oauth2.Token{}
307307
if err := json.NewDecoder(file).Decode(tok); err != nil {
308-
return nil, fmt.Errorf("CacheFile.Token: %s", err.Error())
308+
return nil, fmt.Errorf("CacheFile.Token: %w", err)
309309
}
310310
return tok, nil
311311
}
@@ -314,14 +314,14 @@ func (f CacheFile) Token() (*oauth2.Token, error) {
314314
func (f CacheFile) PutToken(tok *oauth2.Token) error {
315315
file, err := os.OpenFile(string(f), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
316316
if err != nil {
317-
return fmt.Errorf("CacheFile.PutToken: %s", err.Error())
317+
return fmt.Errorf("CacheFile.PutToken: %w", err)
318318
}
319319
if err := json.NewEncoder(file).Encode(tok); err != nil {
320320
file.Close()
321-
return fmt.Errorf("CacheFile.PutToken: %s", err.Error())
321+
return fmt.Errorf("CacheFile.PutToken: %w", err)
322322
}
323323
if err := file.Close(); err != nil {
324-
return fmt.Errorf("CacheFile.PutToken: %s", err.Error())
324+
return fmt.Errorf("CacheFile.PutToken: %w", err)
325325
}
326326
return nil
327327
}

0 commit comments

Comments
 (0)