package intimate import ( "database/sql" "reflect" "github.com/474420502/hunter" "github.com/tidwall/gjson" ) type GetSet struct { } type Streamer struct { Uid int64 // Platform string // UserId string // UserName sql.NullString // LiveUrl sql.NullString // Channel sql.NullString // Ext interface{} // IsUpdateStreamer bool // 更新上面的内容 IsUpdateUrl bool updateInterval int32 UpdateUrl interface{} LatestLogUid int64 UpdateTime sql.NullTime // ErrorMsg sql.NullString Operator int32 LastOperator int32 } // Get Simple Value func (ai *Streamer) Get(field string) interface{} { return reflect.ValueOf(ai).Elem().FieldByName(field).Interface() } // Set Simple Value func (ai *Streamer) Set(field string, value interface{}) { reflect.ValueOf(ai).Elem().FieldByName(field).Set(reflect.ValueOf(value)) } type CollectLog struct { LogUid int64 // 日志id StreamerUid int64 // StreamerId 表id与 Platform string // UserId string // 平台的UserId IsLiveStreaming bool // IsError bool // Followers sql.NullInt64 // Views sql.NullInt64 // Giver interface{} // Gratuity sql.NullInt64 // LiveTitle sql.NullString // LiveStartTime sql.NullTime // LiveEndTime sql.NullTime // UpdateTime sql.NullTime // Tags interface{} Ext interface{} // ErrorMsg sql.NullString // } // Get Simple Value func (cl *CollectLog) Get(field string) interface{} { return reflect.ValueOf(cl).Elem().FieldByName(field).Interface() } // Set Simple Value func (cl *CollectLog) Set(field string, value interface{}) { reflect.ValueOf(cl).Elem().FieldByName(field).Set(reflect.ValueOf(value)) } type ExtractorSource struct { source gjson.Result extractor *hunter.Extractor } func NewExtractorSource(gr gjson.Result) *ExtractorSource { es := &ExtractorSource{} es.source = gr return es } func (es *ExtractorSource) CreateExtractor() { es.extractor = hunter.NewExtractor([]byte(es.source.Str)) } func (es *ExtractorSource) GetSource() gjson.Result { return es.source } func (es *ExtractorSource) GetExtractor() *hunter.Extractor { return es.extractor }