From 08dd80a9224f49346a6ddc98bf062bd191846e57 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 22 Nov 2019 14:06:12 +0100 Subject: [PATCH] Support fetching markdown from arbitrary HTTP sources --- main.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 90b2ab0..994eede 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,10 @@ import ( "fmt" "io" "io/ioutil" + "net/http" + "net/url" "os" + "strings" "github.com/spf13/cobra" @@ -31,11 +34,26 @@ func readerFromArgument(s string) (io.ReadCloser, error) { return os.Stdin, nil } - if isGitHubURL(s) { - resp, err := findGitHubREADME(s) + if u, err := url.ParseRequestURI(s); err == nil { + if !strings.HasPrefix(u.Scheme, "http") { + return nil, fmt.Errorf("%s is not a supported protocol", u.Scheme) + } + + if isGitHubURL(s) { + resp, err := findGitHubREADME(s) + if err != nil { + return nil, err + } + return resp.Body, nil + } + + resp, err := http.Get(u.String()) if err != nil { return nil, err } + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("HTTP status %d", resp.StatusCode) + } return resp.Body, nil }