diff --git a/document.go b/document.go index 0666348..c0089fd 100644 --- a/document.go +++ b/document.go @@ -61,7 +61,7 @@ func (d *document) Refresh() error { return fmt.Errorf("failed to reload page: %w", err) } - if resp.Status() != 200 { + if resp != nil && resp.Status() != 200 { return fmt.Errorf("invalid status code: %d", resp.Status()) } diff --git a/sites/archive/archive.go b/sites/archive/archive.go index 5d2ded9..828654b 100644 --- a/sites/archive/archive.go +++ b/sites/archive/archive.go @@ -104,15 +104,25 @@ func (c Config) Archive(ctx context.Context, b extractor.Browser, target string) return nil, fmt.Errorf("failed to open url: %w", err) } - err = doc.SelectFirst("input[name='url']").Type(u.String()) + urlInput := doc.SelectFirst("input[name='url']") + if urlInput == nil { + _ = doc.Close() + return nil, fmt.Errorf("failed to find url input element") + } + err = urlInput.Type(u.String()) if err != nil { _ = doc.Close() return nil, fmt.Errorf("failed to type url: %w", err) } - err = doc.SelectFirst("form#submiturl input[type=\"submit\"]").Click() + submitBtn := doc.SelectFirst("form#submiturl input[type=\"submit\"]") + if submitBtn == nil { + _ = doc.Close() + return nil, fmt.Errorf("failed to find submit button") + } + err = submitBtn.Click() if err != nil { _ = doc.Close() return nil, fmt.Errorf("failed to click submit: %w", err)