chromedp/cmd/chromedp-gen/internal/enum.go
Kenneth Shaw 1e295eddfb Updating to latest protocol.json (clarifying timestamp behavior)
* Disabled AddOnLoadScript/RemoveOnLoadScript
* Updated chromedp-gen fixups for latest timestamp declarations
* Updated to latest protocol.json definitions
2017-07-09 08:40:29 +07:00

161 lines
2.9 KiB
Go

package internal
import (
"fmt"
"strconv"
)
// HandlerType are the handler targets for commands and events.
type HandlerType string
// HandlerType values.
const (
HandlerTypeBrowser HandlerType = "browser"
HandlerTypeRenderer HandlerType = "renderer"
)
// String satisfies stringer.
func (ht HandlerType) String() string {
return string(ht)
}
// MarshalJSON satisfies json.Marshaler.
func (ht HandlerType) MarshalJSON() ([]byte, error) {
return []byte(`"` + ht + `"`), nil
}
// UnmarshalJSON satisfies json.Unmarshaler.
func (ht *HandlerType) UnmarshalJSON(buf []byte) error {
s, err := strconv.Unquote(string(buf))
if err != nil {
return err
}
switch HandlerType(s) {
case HandlerTypeBrowser:
*ht = HandlerTypeBrowser
case HandlerTypeRenderer:
*ht = HandlerTypeRenderer
default:
return fmt.Errorf("unknown handler type %s", string(buf))
}
return nil
}
// TypeEnum is the Chrome domain type enum.
type TypeEnum string
// TypeEnum values.
const (
TypeAny TypeEnum = "any"
TypeArray TypeEnum = "array"
TypeBoolean TypeEnum = "boolean"
TypeInteger TypeEnum = "integer"
TypeNumber TypeEnum = "number"
TypeObject TypeEnum = "object"
TypeString TypeEnum = "string"
TypeTimestamp TypeEnum = "timestamp"
)
// String satisfies stringer.
func (te TypeEnum) String() string {
return string(te)
}
// MarshalJSON satisfies json.Marshaler.
func (te TypeEnum) MarshalJSON() ([]byte, error) {
return []byte(`"` + te + `"`), nil
}
// UnmarshalJSON satisfies json.Unmarshaler.
func (te *TypeEnum) UnmarshalJSON(buf []byte) error {
s, err := strconv.Unquote(string(buf))
if err != nil {
return err
}
switch TypeEnum(s) {
case TypeAny:
*te = TypeAny
case TypeArray:
*te = TypeArray
case TypeBoolean:
*te = TypeBoolean
case TypeInteger:
*te = TypeInteger
case TypeNumber:
*te = TypeNumber
case TypeObject:
*te = TypeObject
case TypeString:
*te = TypeString
default:
return fmt.Errorf("unknown type enum %s", string(buf))
}
return nil
}
// GoType returns the Go type for the TypeEnum.
func (te TypeEnum) GoType() string {
switch te {
case TypeAny:
return "easyjson.RawMessage"
case TypeBoolean:
return "bool"
case TypeInteger:
return "int64"
case TypeNumber:
return "float64"
case TypeString:
return "string"
case TypeTimestamp:
return "time.Time"
default:
panic(fmt.Sprintf("called GoType on non primitive type %s", te.String()))
}
return ""
}
// GoEmptyValue returns the Go empty value for the TypeEnum.
func (te TypeEnum) GoEmptyValue() string {
switch te {
case TypeBoolean:
return `false`
case TypeInteger:
return `0`
case TypeNumber:
return `0`
case TypeString:
return `""`
case TypeTimestamp:
return `time.Time{}`
}
return `nil`
}
// TimestampType are the various timestamp subtypes.
type TimestampType int
// TimestampType values.
const (
TimestampTypeMillisecond TimestampType = 1 + iota
TimestampTypeSecond
TimestampTypeMonotonic
)