Fixing issue with missing target_type values in client package
This commit is contained in:
parent
dd8119a9c5
commit
69e069d131
|
@ -2,7 +2,7 @@ package client
|
|||
|
||||
import "fmt"
|
||||
|
||||
//go:generate easyjson -omit_empty -pkg -output_filename easyjson.go
|
||||
//go:generate easyjson -omit_empty -output_filename easyjson.go chrome.go
|
||||
|
||||
// Chrome holds connection information for a Chrome, Edge, or Safari target.
|
||||
//
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
// and related funcs.
|
||||
package client
|
||||
|
||||
//go:generate go run gen.go
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
@ -35,6 +37,14 @@ var (
|
|||
ErrUnsupportedProtocolVersion = errors.New("unsupported protocol version")
|
||||
)
|
||||
|
||||
// Target is the common interface for a Chrome Debugging Protocol target.
|
||||
type Target interface {
|
||||
String() string
|
||||
GetID() string
|
||||
GetType() TargetType
|
||||
GetWebsocketURL() string
|
||||
}
|
||||
|
||||
// Client is a Chrome Debugging Protocol client.
|
||||
type Client struct {
|
||||
url string
|
||||
|
|
|
@ -67,67 +67,83 @@ func easyjsonC5a4559bEncodeGithubComKnqChromedpClient(out *jwriter.Writer, in Ch
|
|||
first := true
|
||||
_ = first
|
||||
if in.Description != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"description\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"description\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.Description))
|
||||
}
|
||||
if in.DevtoolsURL != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"devtoolsFrontendUrl\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"devtoolsFrontendUrl\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.DevtoolsURL))
|
||||
}
|
||||
if in.ID != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"id\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"id\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.ID))
|
||||
}
|
||||
if in.Title != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"title\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"title\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.Title))
|
||||
}
|
||||
if in.Type != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"type\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"type\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
(in.Type).MarshalEasyJSON(out)
|
||||
}
|
||||
if in.URL != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"url\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"url\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.URL))
|
||||
}
|
||||
if in.WebsocketURL != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"webSocketDebuggerUrl\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"webSocketDebuggerUrl\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.WebsocketURL))
|
||||
}
|
||||
if in.FaviconURL != "" {
|
||||
if !first {
|
||||
out.RawByte(',')
|
||||
}
|
||||
const prefix string = ",\"faviconURL\":"
|
||||
if first {
|
||||
first = false
|
||||
out.RawString("\"faviconURL\":")
|
||||
out.RawString(prefix[1:])
|
||||
} else {
|
||||
out.RawString(prefix)
|
||||
}
|
||||
out.String(string(in.FaviconURL))
|
||||
}
|
||||
out.RawByte('}')
|
||||
|
|
142
client/gen.go
Normal file
142
client/gen.go
Normal file
|
@ -0,0 +1,142 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"sort"
|
||||
|
||||
"github.com/knq/snaker"
|
||||
)
|
||||
|
||||
const (
|
||||
// chromiumSrc is the base chromium source repo location
|
||||
chromiumSrc = "https://chromium.googlesource.com/chromium/src"
|
||||
|
||||
// devtoolsHTTPClientCc contains the target_type names.
|
||||
devtoolsHTTPClientCc = chromiumSrc + "/+/master/chrome/test/chromedriver/chrome/devtools_http_client.cc?format=TEXT"
|
||||
)
|
||||
|
||||
var (
|
||||
flagOut = flag.String("out", "targettype.go", "out file")
|
||||
|
||||
typeAsStringRE = regexp.MustCompile(`type_as_string\s+==\s+"([^"]+)"`)
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
// grab source
|
||||
buf, err := grab(devtoolsHTTPClientCc)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// find names
|
||||
matches := typeAsStringRE.FindAllStringSubmatch(string(buf), -1)
|
||||
names := make([]string, len(matches))
|
||||
for i, m := range matches {
|
||||
names[i] = m[1]
|
||||
}
|
||||
sort.Strings(names)
|
||||
|
||||
// process names
|
||||
var constVals, decodeVals string
|
||||
for _, n := range names {
|
||||
name := snaker.SnakeToCamelIdentifier(n)
|
||||
constVals += fmt.Sprintf("%s TargetType = \"%s\"\n", name, n)
|
||||
decodeVals += fmt.Sprintf("case %s:\n*tt=%s\n", name, name)
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(*flagOut, []byte(fmt.Sprintf(targetTypeSrc, constVals, decodeVals)), 0644)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
err = exec.Command("gofmt", "-w", "-s", *flagOut).Run()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
// grab retrieves a file from the chromium source code.
|
||||
func grab(path string) ([]byte, error) {
|
||||
res, err := http.Get(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
buf, err := base64.StdEncoding.DecodeString(string(body))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
const (
|
||||
targetTypeSrc = `package client
|
||||
|
||||
// Code generated by gen.go. DO NOT EDIT.
|
||||
|
||||
import (
|
||||
// "errors"
|
||||
easyjson "github.com/mailru/easyjson"
|
||||
jlexer "github.com/mailru/easyjson/jlexer"
|
||||
jwriter "github.com/mailru/easyjson/jwriter"
|
||||
)
|
||||
|
||||
// TargetType are the types of targets available in Chrome.
|
||||
type TargetType string
|
||||
|
||||
// TargetType values.
|
||||
const (
|
||||
%s
|
||||
)
|
||||
|
||||
// String satisfies stringer.
|
||||
func (tt TargetType) String() string {
|
||||
return string(tt)
|
||||
}
|
||||
|
||||
// MarshalEasyJSON satisfies easyjson.Marshaler.
|
||||
func (tt TargetType) MarshalEasyJSON(out *jwriter.Writer) {
|
||||
out.String(string(tt))
|
||||
}
|
||||
|
||||
// MarshalJSON satisfies json.Marshaler.
|
||||
func (tt TargetType) MarshalJSON() ([]byte, error) {
|
||||
return easyjson.Marshal(tt)
|
||||
}
|
||||
|
||||
// UnmarshalEasyJSON satisfies easyjson.Unmarshaler.
|
||||
func (tt *TargetType) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
||||
z := TargetType(in.String())
|
||||
switch z {
|
||||
%s
|
||||
|
||||
default:
|
||||
// in.AddError(errors.New("unknown TargetType"))
|
||||
*tt = z
|
||||
}
|
||||
}
|
||||
|
||||
// UnmarshalJSON satisfies json.Unmarshaler.
|
||||
func (tt *TargetType) UnmarshalJSON(buf []byte) error {
|
||||
return easyjson.Unmarshal(buf, tt)
|
||||
}
|
||||
`
|
||||
)
|
|
@ -1,31 +1,30 @@
|
|||
package client
|
||||
|
||||
// Code generated by gen.go. DO NOT EDIT.
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/mailru/easyjson"
|
||||
"github.com/mailru/easyjson/jlexer"
|
||||
"github.com/mailru/easyjson/jwriter"
|
||||
// "errors"
|
||||
easyjson "github.com/mailru/easyjson"
|
||||
jlexer "github.com/mailru/easyjson/jlexer"
|
||||
jwriter "github.com/mailru/easyjson/jwriter"
|
||||
)
|
||||
|
||||
// Target is the common interface for a Chrome Debugging Protocol target.
|
||||
type Target interface {
|
||||
String() string
|
||||
GetID() string
|
||||
GetType() TargetType
|
||||
GetWebsocketURL() string
|
||||
}
|
||||
|
||||
// TargetType are the types of targets available in Chrome.
|
||||
type TargetType string
|
||||
|
||||
// TargetType values.
|
||||
const (
|
||||
App TargetType = "app"
|
||||
BackgroundPage TargetType = "background_page"
|
||||
Browser TargetType = "browser"
|
||||
External TargetType = "external"
|
||||
Iframe TargetType = "iframe"
|
||||
Other TargetType = "other"
|
||||
Page TargetType = "page"
|
||||
ServiceWorker TargetType = "service_worker"
|
||||
Node TargetType = "node"
|
||||
SharedWorker TargetType = "shared_worker"
|
||||
Webview TargetType = "webview"
|
||||
Worker TargetType = "worker"
|
||||
)
|
||||
|
||||
// String satisfies stringer.
|
||||
|
@ -45,20 +44,34 @@ func (tt TargetType) MarshalJSON() ([]byte, error) {
|
|||
|
||||
// UnmarshalEasyJSON satisfies easyjson.Unmarshaler.
|
||||
func (tt *TargetType) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
||||
switch TargetType(in.String()) {
|
||||
z := TargetType(in.String())
|
||||
switch z {
|
||||
case App:
|
||||
*tt = App
|
||||
case BackgroundPage:
|
||||
*tt = BackgroundPage
|
||||
case Browser:
|
||||
*tt = Browser
|
||||
case External:
|
||||
*tt = External
|
||||
case Iframe:
|
||||
*tt = Iframe
|
||||
case Other:
|
||||
*tt = Other
|
||||
case Page:
|
||||
*tt = Page
|
||||
case ServiceWorker:
|
||||
*tt = ServiceWorker
|
||||
case Node:
|
||||
*tt = Node
|
||||
case SharedWorker:
|
||||
*tt = SharedWorker
|
||||
case Webview:
|
||||
*tt = Webview
|
||||
case Worker:
|
||||
*tt = Worker
|
||||
|
||||
default:
|
||||
in.AddError(errors.New("unknown TargetType"))
|
||||
// in.AddError(errors.New("unknown TargetType"))
|
||||
*tt = z
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user