Exemplo n.º 1
0
package downloader

import (
	base "evilboy/base"
	mdw "evilboy/middleware"
	"evilboy/tool/log"
	"net/http"
)

// ID生成器。
var downloaderIdGenertor mdw.IdGenertor = mdw.NewIdGenertor()

// 生成并返回ID。
func genDownloaderId() uint32 {
	return downloaderIdGenertor.GetUint32()
}

// 网页下载器的接口类型。
type PageDownloader interface {
	Id() uint32                                        // 获得ID。
	Download(req base.Request) (*base.Response, error) // 根据请求下载网页并返回响应。
}

// 创建网页下载器。
func NewPageDownloader(client *http.Client) PageDownloader {
	id := genDownloaderId()
	if client == nil {
		client = &http.Client{}
	}
	return &myPageDownloader{
		id:         id,
Exemplo n.º 2
0
package analyzer

import (
	"errors"
	base "evilboy/base"
	mdw "evilboy/middleware"
	"evilboy/tool/log"
	"fmt"
	"net/url"
)

// ID生成器。
var analyzerIdGenertor mdw.IdGenertor = mdw.NewIdGenertor()

// 生成并返回ID。
func genAnalyzerId() uint32 {
	return analyzerIdGenertor.GetUint32()
}

// 分析器的接口类型。
type Analyzer interface {
	Id() uint32 // 获得ID。
	Analyze(
		respParsers []ParseResponse,
		resp base.Response) ([]base.Data, []error) // 根据规则分析响应并返回请求和条目。
}

// 创建分析器。
func NewAnalyzer() Analyzer {
	return &myAnalyzer{id: genAnalyzerId()}
}