Compare commits
2 commits
de6b53e975
...
d907875d03
Author | SHA1 | Date | |
---|---|---|---|
d907875d03 | |||
345f71de3d |
1 changed files with 54 additions and 28 deletions
82
browser.go
82
browser.go
|
@ -22,6 +22,59 @@ type File struct {
|
|||
Data []byte
|
||||
}
|
||||
|
||||
type Browser struct {
|
||||
pw *playwright.Playwright
|
||||
browser playwright.Browser
|
||||
}
|
||||
|
||||
func Install() error {
|
||||
opts := playwright.RunOptions{
|
||||
Browsers: []string{"chromium"},
|
||||
}
|
||||
|
||||
return playwright.Install(&opts)
|
||||
}
|
||||
|
||||
type RunOptions struct {
|
||||
DB Database
|
||||
Headless *bool
|
||||
}
|
||||
|
||||
func Run(options RunOptions) (*Browser, error) {
|
||||
pw, err := playwright.Run()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
launchOptions := playwright.BrowserTypeLaunchOptions{
|
||||
Headless: playwright.Bool(*options.Headless),
|
||||
}
|
||||
|
||||
b, err := pw.Chromium.Launch(launchOptions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
browser := Browser{
|
||||
pw: pw,
|
||||
browser: b,
|
||||
}
|
||||
|
||||
return &browser, nil
|
||||
}
|
||||
|
||||
func (b Browser) Stop() error {
|
||||
return b.pw.Stop()
|
||||
}
|
||||
|
||||
func (b Browser) NewContext() (playwright.BrowserContext, error) {
|
||||
return b.browser.NewContext()
|
||||
}
|
||||
|
||||
// TODO
|
||||
// Browser LoadBrowserContext(platform: TPlatform): Promise<Playwright.BrowserContext>;
|
||||
// Browser SaveBrowserContext(platform: TPlatform, ctx: BrowserContext): Promise<void>;
|
||||
|
||||
var draw = `
|
||||
async function drawImage(imageFile) {
|
||||
const canvas = Object.assign(document.createElement("canvas"), {
|
||||
|
@ -98,34 +151,7 @@ func parseDataURL(dataURL string) (*File, error) {
|
|||
return &file, nil
|
||||
}
|
||||
|
||||
type BrowserContext interface {
|
||||
*playwright.BrowserContext
|
||||
}
|
||||
|
||||
type Browser struct {
|
||||
browser playwright.Browser
|
||||
}
|
||||
|
||||
// TODO
|
||||
// Browser loadBrowserContext(platform: TPlatform): Promise<Playwright.BrowserContext>;
|
||||
// Browser saveBrowserContext(platform: TPlatform, ctx: BrowserContext): Promise<void>;
|
||||
// Browser newContext(): Promise<Playwright.BrowserContext>;
|
||||
// Browser close(): Promise<void>;
|
||||
// Browser drawImage(
|
||||
// Browser DrawImage(
|
||||
// pageOrFrame: Playwright.Page | Playwright.Frame,
|
||||
// imageFile: ImageFile,
|
||||
// ): Promise<Blob>;
|
||||
// install
|
||||
|
||||
// newじゃないか? run/stop? launch/close?
|
||||
func New() (*Browser, error) {
|
||||
pw, err := playwright.Run()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
browser, err := pw.Chromium.Launch()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Browser{browser}, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue