mirror of https://github.com/nmasse-itix/liche.git
1 changed files with 48 additions and 0 deletions
@ -0,0 +1,48 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"net/http" |
||||
|
"time" |
||||
|
|
||||
|
"github.com/fatih/color" |
||||
|
) |
||||
|
|
||||
|
type urlChecker struct { |
||||
|
client http.Client |
||||
|
verbose bool |
||||
|
} |
||||
|
|
||||
|
func newURLChecker(timeout time.Duration, verbose bool) urlChecker { |
||||
|
return urlChecker{http.Client{Timeout: timeout}, verbose} |
||||
|
} |
||||
|
|
||||
|
func (c urlChecker) Check(s string) bool { |
||||
|
_, err := c.client.Get(s) |
||||
|
|
||||
|
if s := color.New(color.FgCyan).SprintFunc()(s); err != nil { |
||||
|
printToStderr( |
||||
|
color.New(color.FgRed).SprintFunc()("ERROR") + "\t" + s + "\t" + err.Error()) |
||||
|
} else if err == nil && c.verbose { |
||||
|
printToStderr(color.New(color.FgGreen).SprintFunc()("OK") + "\t" + s) |
||||
|
} |
||||
|
|
||||
|
return err == nil |
||||
|
} |
||||
|
|
||||
|
func (c urlChecker) CheckMany(ss []string) { |
||||
|
bs := make(chan bool, len(ss)) |
||||
|
|
||||
|
for _, s := range ss { |
||||
|
go func() { |
||||
|
bs <- c.Check() |
||||
|
}() |
||||
|
} |
||||
|
|
||||
|
ok := true |
||||
|
|
||||
|
for i := 0; i < len(ss); i++ { |
||||
|
ok = ok && <-bs |
||||
|
} |
||||
|
|
||||
|
return ok |
||||
|
} |
||||
Loading…
Reference in new issue