namecheck/cmd/server/main.go

44 lines
741 B
Go

package main
import (
"fmt"
"log"
"net/http"
"sync"
"time"
"github.com/foxdeveloper/namecheck"
_ "github.com/foxdeveloper/namecheck/github"
_ "github.com/foxdeveloper/namecheck/twitter"
)
func handler(w http.ResponseWriter, r *http.Request) {
var wg sync.WaitGroup
ch := make(chan string)
for _, sn := range namecheck.SocialNetworks() {
wg.Add(1)
go func(sn namecheck.SocialNetwork) {
namecheck.Namecheck(sn, r.URL.Path[1:], &wg, ch)
}(sn)
}
go func() {
wg.Wait()
close(ch)
}()
for v := range ch {
fmt.Fprintf(w, "%s", v)
}
}
func main() {
start := time.Now()
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
elapsed := time.Since(start)
log.Printf("Took %s", elapsed)
}