123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package alarm
- import (
- "context"
- "net/http"
- "strings"
- "time"
- "go-common/app/service/main/resource/conf"
- "go-common/app/service/main/resource/model"
- "go-common/library/log"
- httpx "go-common/library/net/http/blademaster"
- )
- // Dao is redis dao.
- type Dao struct {
- c *conf.Config
- netClient *http.Client
- httpClient *httpx.Client
- }
- // New is new redis dao.
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- c: c,
- httpClient: httpx.NewClient(c.HTTPClient),
- netClient: &http.Client{
- Timeout: 3 * time.Second,
- },
- }
- return d
- }
- func (d *Dao) CheckURL(originURL string, wis []*model.ResWarnInfo) {
- var (
- url string
- req *http.Request
- resp *http.Response
- err error
- )
- if strings.HasPrefix(originURL, "https://") {
- log.Info("CheckURL url(%s) is https ,replace to http", originURL)
- url = strings.Replace(originURL, "https://", "http://", -1)
- } else if !strings.HasPrefix(originURL, "http://") {
- log.Info("CheckURL url(%s) don't have https and http", originURL)
- url = "http://" + originURL
- } else {
- url = originURL
- }
- if req, err = http.NewRequest("GET", url, nil); err != nil {
- log.Error("CheckURL NewRequest(%v) error(%v)", url, err)
- return
- }
- req.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
- req.Header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")
- resp, err = d.netClient.Do(req)
- if err != nil {
- log.Error("CheckURL url(%s) originURL(%s) error(%v)", url, originURL, err)
- } else if resp.StatusCode != http.StatusOK {
- log.Error("CheckURL url(%s) originURL(%s) code(%v) not OK ", url, originURL, resp.StatusCode)
- var sends = make(map[string][]*model.ResWarnInfo)
- for _, wi := range wis {
- sends[wi.UserName] = append(sends[wi.UserName], wi)
- }
- for userName, send := range sends {
- d.sendWeChartURL(context.TODO(), resp.StatusCode, userName, send)
- }
- }
- }
|