package data

import (
	"time"

	"github.com/scraperwall/ipmeta"
)

type Fingerprint struct {
	// ID                  bson.ObjectId `bson:"_id,omitempty" json:"_id"`
	ClientID      string                 `bson:"cid" json:"cid" form:"cid"`
	Remote        string                 `bson:"remote" json:"remote" form:"remote"`
	Url           string                 `bson:"url" json:"url" form:"url"`
	Fingerprint   string                 `bson:"fp" json:"fp" form:"fp"`
	CreatedAt     time.Time              `bson:"created_at" json:"created_at" form:"created_at"`
	Source        string                 `bson:"source" json:"source" form:"source"`
	XForwardedFor string                 `bson:"x_forwarded_for" json:"x-forwarded-for" form:"x_forwarded_for"`
	XRealIP       string                 `bson:"x_real_ip" json:"x-real-ip" form:"x_real_ip"`
	XScwIP        string                 `bson:"x_scw_ip" json:"x-scw-ip" form:"x_scw_ip"`
	Data          map[string]interface{} `bson:"data" json:"data" form:"data"`
	Bot           bool                   `bson:"bot" json:"b" form:"b"`
	Country       string                 `bson:"country" json:"country" form:"country"`
	Extra         map[string]string      `bson:"extra" json:"extra" form:"extra"`
	IPMeta        *ipmeta.Meta           `bson:"meta" json:"meta" form:"meta"`
	//ASN           *asndb.ASN             `bson:"asn" json:"asn" form:"asn"`
	//GeoIP         *geoip.GeoIP           `bson:"geoip" json:"geoip" form:"geoip"`
	//Grs           *grs.GRS               `bson:"grs" json:"grs" form:"grs"`
	//UserAgent           string        `bson:"user_agent" json:"user_agent" form:"user_agent"`
	//Adblock             bool          `bson:"adblock" json:"adblock" form:"adblock"`
	//AvailableResolution []int         `bson:"available_resolution" json:"available_resolution" form:"available_resolution"`
	//Canvas              string        `bson:"canvas" json:"canvas" form:"canvas"`
	//ColorDepth          int           `bson:"color_depth" json:"color_depth" form:"color_depth"`
	//CpuClass            string        `bson:"cpu_class" json:"cpu_class" form:"cpu_class"`
	//DoNotTrack          string        `bson:"do_not_track" json:"do_not_track" form:"don_not_track"`
	//HasLiedBrowser      bool          `bson:"has_lied_browser" json:"has_lied_browser" form:"has_lied_browser"`
	//HasLiedLanguages    bool          `bson:"has_lied_languages" json:"has_lied_languages" form:"has_lied_languages"`
	//HasLiedOs           bool          `bson:"has_lied_os" json:"has_lied_os" form:"has_lied_os"`
	//HasLiedResolution   bool          `bson:"has_lied_resolution" json:"has_lied_resolution" form:"has_lied_resolution"`
	//IndexedDb           int           `bson:"indexed_db" json:"indexed_db" form:"indexed_db"`
	//JsFonts             []string      `bson:"js_fonts" json:"js_fonts" form:"js_fonts"`
	//Language            string        `bson:"language" json:"language" form:"language"`
	//LocalStorage        int           `bson:"local_storage" json:"local_storage" form:"local_storage"`
	//NavigatorPlatform   string        `bson:"navigator_platform" json:"navigator_platform" form:"navigator_platform"`
	//Plugins             []string      `bson:"regular_plugins" json:"regular_plugins" form:"regular_plugins"`
	//Resolution          []int         `bson:"resolution" json:"resolution" form:"resolution"`
	//SessionStorage      int           `bson:"session_storage" json:"session_storage" form:"session_storage"`
	//TouchSupport        []interface{} `bson:"touch_support" json:"touch_support" form:"touch_support"`
	//WebGl               string        `bson:"webgl" json:"webgl" form:"webgl"`
	//TimeZoneOffset      int           `bson:"timezone_offset" json:"timezone_offset" form:"timezone_offset"`
}