Documentation ¶
Overview ¶
Package browser contains the primary browser implementation.
Index ¶
- Variables
- func DownloadAsset(asset Downloadable, out io.Writer) (int64, error)
- func DownloadAssetAsync(asset Downloadable, out io.Writer, c AsyncDownloadChannel)
- type Asset
- type AssetType
- type Assetable
- type AsyncDownloadChannel
- type AsyncDownloadResult
- type Attribute
- type AttributeMap
- type Browsable
- type Browser
- func (bow *Browser) AddRequestHeader(name, value string)
- func (bow *Browser) Back() bool
- func (bow *Browser) Body() string
- func (bow *Browser) Bookmark(name string) error
- func (bow *Browser) ClearConverter(content_type string)
- func (bow *Browser) Click(expr string) error
- func (bow *Browser) DelRequestHeader(name string)
- func (bow *Browser) Dom() *goquery.Selection
- func (bow *Browser) Download(o io.Writer) (int64, error)
- func (bow *Browser) Find(expr string) *goquery.Selection
- func (bow *Browser) Form(expr string) (Submittable, error)
- func (bow *Browser) Forms() []Submittable
- func (bow *Browser) GetAllRequestHeaders() string
- func (bow *Browser) GetCookieJar() http.CookieJar
- func (bow *Browser) GetRequestHeader(name string) string
- func (bow *Browser) GetTransport() *http.Transport
- func (bow *Browser) Head(u string) error
- func (bow *Browser) Images() []*Image
- func (bow *Browser) InitConverters()
- func (bow *Browser) Links() []*Link
- func (bow *Browser) Open(u string) error
- func (bow *Browser) OpenBookmark(name string) error
- func (bow *Browser) OpenForm(u string, data url.Values) error
- func (bow *Browser) Post(u string, contentType string, body io.Reader) error
- func (bow *Browser) PostForm(u string, data url.Values) error
- func (bow *Browser) PostMultipart(u string, data url.Values) error
- func (bow *Browser) Reload() error
- func (bow *Browser) ResolveStringUrl(u string) (string, error)
- func (bow *Browser) ResolveUrl(u *url.URL) *url.URL
- func (bow *Browser) ResponseHeaders() http.Header
- func (bow *Browser) Scripts() []*Script
- func (bow *Browser) SetAttribute(a Attribute, v bool)
- func (bow *Browser) SetAttributes(a AttributeMap)
- func (bow *Browser) SetBookmarksJar(bj jar.BookmarksJar)
- func (bow *Browser) SetConverter(content_type string, f func([]byte) []byte)
- func (bow *Browser) SetCookieJar(cj http.CookieJar)
- func (bow *Browser) SetHeadersJar(h http.Header)
- func (bow *Browser) SetHistoryCapacity(capacity int)
- func (bow *Browser) SetHistoryJar(hj jar.History)
- func (bow *Browser) SetState(sj *jar.State)
- func (bow *Browser) SetTransport(t *http.Transport)
- func (bow *Browser) SetUserAgent(userAgent string)
- func (bow *Browser) SiteCookies() []*http.Cookie
- func (bow *Browser) StatusCode() int
- func (bow *Browser) Stylesheets() []*Stylesheet
- func (bow *Browser) Title() string
- func (bow *Browser) Url() *url.URL
- type Button
- type Checkbox
- type Downloadable
- type DownloadableAsset
- type Field
- type Form
- type Image
- type Link
- type Script
- type Stylesheet
- type Submittable
Constants ¶
This section is empty.
Variables ¶
var InitialAssetsSliceSize = 20
InitialAssetsArraySize is the initial size when allocating a slice of page assets. Increasing this size may lead to a very small performance increase when downloading assets from a page with a lot of assets.
Functions ¶
func DownloadAsset ¶
func DownloadAsset(asset Downloadable, out io.Writer) (int64, error)
DownloadAsset copies a remote file to the given writer.
func DownloadAssetAsync ¶
func DownloadAssetAsync(asset Downloadable, out io.Writer, c AsyncDownloadChannel)
DownloadAssetAsync downloads an asset asynchronously and notifies the given channel when the download is complete.
Types ¶
type Asset ¶
type Asset struct { // ID is the value of the id attribute if available. ID string // URL is the asset URL. URL *url.URL // Type describes the type of asset. Type AssetType }
Asset implements Assetable.
type AssetType ¶
type AssetType uint16
AssetType describes a type of page asset, such as an image or stylesheet.
type Assetable ¶
type Assetable interface { // Url returns the asset URL. Url() *url.URL // Id returns the asset ID or an empty string when not available. Id() string // Type describes the type of asset. AssetType() AssetType }
Assetable represents a page asset, such as an image or stylesheet.
type AsyncDownloadChannel ¶
type AsyncDownloadChannel chan *AsyncDownloadResult
AsyncDownloadChannel is a channel upon which the results of an async download are passed.
type AsyncDownloadResult ¶
type AsyncDownloadResult struct { // Asset is a pointer to the Downloadable asset that was downloaded. Asset Downloadable // Writer where the asset data was written. Writer io.Writer // Size is the number of bytes written to the io.Writer. Size int64 // Error contains any error that occurred during the download or nil. Error error }
AsyncDownloadResult has the results of an asynchronous download.
type Attribute ¶
type Attribute int
Attribute represents a Browser capability.
const ( // SendRefererAttribute instructs a Browser to send the Referer header. SendReferer Attribute = iota // MetaRefreshHandlingAttribute instructs a Browser to handle the refresh meta tag. MetaRefreshHandling // FollowRedirectsAttribute instructs a Browser to follow Location headers. FollowRedirects )
type AttributeMap ¶
AttributeMap represents a map of Attribute values.
type Browsable ¶
type Browsable interface { // SetUserAgent sets the user agent. SetUserAgent(ua string) // SetAttribute sets a browser instruction attribute. SetAttribute(a Attribute, v bool) // SetAttributes is used to set all the browser attributes. SetAttributes(a AttributeMap) // SetState sets the init browser state. SetState(sj *jar.State) // SetBookmarksJar sets the bookmarks jar the browser uses. SetBookmarksJar(bj jar.BookmarksJar) // SetCookieJar is used to set the cookie jar the browser uses. SetCookieJar(cj http.CookieJar) // GetCookieJar is used to get the cookie jar the browser uses. GetCookieJar() http.CookieJar // SetHistoryJar is used to set the history jar the browser uses. SetHistoryJar(hj jar.History) // SetHistoryCapacity is used to set the capacity for history queue SetHistoryCapacity(capacity int) // SetHeadersJar sets the headers the browser sends with each request. SetHeadersJar(h http.Header) // SetTransport sets the http library transport mechanism for each request. SetTransport(t *http.Transport) // SetTransport sets the http library transport mechanism for each request. GetTransport() *http.Transport // AddRequestHeader adds a header the browser sends with each request. AddRequestHeader(name, value string) // GetRequestHeader gets a header the browser sends with each request. GetRequestHeader(name string) string // GetAllRequestHeaders gets all headers the browser sends with each request. GetAllRequestHeaders() string // Open requests the given URL using the GET method. Open(url string) error // Open requests the given URL using the HEAD method. Head(url string) error // OpenForm appends the data values to the given URL and sends a GET request. OpenForm(url string, data url.Values) error // OpenBookmark calls Get() with the URL for the bookmark with the given name. OpenBookmark(name string) error // Post requests the given URL using the POST method. Post(url string, contentType string, body io.Reader) error // PostForm requests the given URL using the POST method with the given data. PostForm(url string, data url.Values) error // PostMultipart requests the given URL using the POST method with the given data using multipart/form-data format. PostMultipart(u string, data url.Values) error // Back loads the previously requested page. Back() bool // Reload duplicates the last successful request. Reload() error // Bookmark saves the page URL in the bookmarks with the given name. Bookmark(name string) error // Click clicks on the page element matched by the given expression. Click(expr string) error // Form returns the form in the current page that matches the given expr. Form(expr string) (Submittable, error) // Forms returns an array of every form in the page. Forms() []Submittable // Links returns an array of every link found in the page. Links() []*Link // Images returns an array of every image found in the page. Images() []*Image // Stylesheets returns an array of every stylesheet linked to the document. Stylesheets() []*Stylesheet // Scripts returns an array of every script linked to the document. Scripts() []*Script // SiteCookies returns the cookies for the current site. SiteCookies() []*http.Cookie // ResolveUrl returns an absolute URL for a possibly relative URL. ResolveUrl(u *url.URL) *url.URL // ResolveStringUrl works just like ResolveUrl, but the argument and return value are strings. ResolveStringUrl(u string) (string, error) // Download writes the contents of the document to the given writer. Download(o io.Writer) (int64, error) // Url returns the page URL as a string. Url() *url.URL // StatusCode returns the response status code. StatusCode() int // Title returns the page title. Title() string // ResponseHeaders returns the page headers. ResponseHeaders() http.Header // Body returns the page body as a string of html. Body() string // Dom returns the inner *goquery.Selection. Dom() *goquery.Selection // Find returns the dom selections matching the given expression. Find(expr string) *goquery.Selection // Register pluggable converter SetConverter(content_type string, f func([]byte) []byte) // Unregister pluggable converter ClearConverter(content_type string) }
Browsable represents an HTTP web browser.
type Browser ¶
type Browser struct {
// contains filtered or unexported fields
}
Default is the default Browser implementation.
func (*Browser) AddRequestHeader ¶
AddRequestHeader sets a header the browser sends with each request.
func (*Browser) Back ¶
Back loads the previously requested page.
Returns a boolean value indicating whether a previous page existed, and was successfully loaded.
func (*Browser) ClearConverter ¶
Unregister pluggable converter
func (*Browser) Click ¶
Click clicks on the page element matched by the given expression.
Currently this is only useful for click on links, which will cause the browser to load the page pointed at by the link. Future versions of Surf may support JavaScript and clicking on elements will fire the click event.
func (*Browser) DelRequestHeader ¶
DelRequestHeader deletes a header so the browser will not send it with future requests.
func (*Browser) Form ¶
func (bow *Browser) Form(expr string) (Submittable, error)
Form returns the form in the current page that matches the given expr.
func (*Browser) Forms ¶
func (bow *Browser) Forms() []Submittable
Forms returns an array of every form in the page.
func (*Browser) GetAllRequestHeaders ¶
GetAllRequestHeaders gets a all headers the browser sends with each request.
func (*Browser) GetCookieJar ¶
GetCookieJar is used to get the cookie jar the browser uses.
func (*Browser) GetRequestHeader ¶
GetRequestHeader gets a header the browser sends with each request.
func (*Browser) GetTransport ¶
GetTransport gets the http library transport mechanism.
func (*Browser) OpenBookmark ¶
OpenBookmark calls Open() with the URL for the bookmark with the given name.
func (*Browser) OpenForm ¶
OpenForm appends the data values to the given URL and sends a GET request.
func (*Browser) PostForm ¶
PostForm requests the given URL using the POST method with the given data.
func (*Browser) PostMultipart ¶
PostMultipart requests the given URL using the POST method with the given data using multipart/form-data format.
func (*Browser) ResolveStringUrl ¶
ResolveStringUrl works just like ResolveUrl, but the argument and return value are strings.
func (*Browser) ResolveUrl ¶
ResolveUrl returns an absolute URL for a possibly relative URL.
func (*Browser) ResponseHeaders ¶
ResponseHeaders returns the page headers.
func (*Browser) SetAttribute ¶
SetAttribute sets a browser instruction attribute.
func (*Browser) SetAttributes ¶
func (bow *Browser) SetAttributes(a AttributeMap)
SetAttributes is used to set all the browser attributes.
func (*Browser) SetBookmarksJar ¶
func (bow *Browser) SetBookmarksJar(bj jar.BookmarksJar)
SetBookmarksJar sets the bookmarks jar the browser uses.
func (*Browser) SetConverter ¶
Register pluggable converter
func (*Browser) SetCookieJar ¶
SetCookieJar is used to set the cookie jar the browser uses.
func (*Browser) SetHeadersJar ¶
SetHeadersJar sets the headers the browser sends with each request.
func (*Browser) SetHistoryCapacity ¶
SetHistoryCapacity is used to set the capacity for history queue
func (*Browser) SetHistoryJar ¶
SetHistoryJar is used to set the history jar the browser uses.
func (*Browser) SetTransport ¶
SetTransport sets the http library transport mechanism for each request.
func (*Browser) SetUserAgent ¶
SetUserAgent sets the user agent.
func (*Browser) SiteCookies ¶
SiteCookies returns the cookies for the current site.
func (*Browser) StatusCode ¶
StatusCode returns the response status code.
func (*Browser) Stylesheets ¶
func (bow *Browser) Stylesheets() []*Stylesheet
Stylesheets returns an array of every stylesheet linked to the document.
type Downloadable ¶
type Downloadable interface { Assetable // Download writes the contents of the element to the given writer. // // Returns the number of bytes written. Download(out io.Writer) (int64, error) // DownloadAsync downloads the contents of the element asynchronously. // // An instance of AsyncDownloadResult will be sent down the given channel // when the download is complete. DownloadAsync(out io.Writer, ch AsyncDownloadChannel) }
Downloadable represents an asset that may be downloaded.
type DownloadableAsset ¶
type DownloadableAsset struct {
Asset
}
DownloadableAsset is an asset that may be downloaded.
func (*DownloadableAsset) Download ¶
func (at *DownloadableAsset) Download(out io.Writer) (int64, error)
Download writes the asset to the given io.Writer type.
func (*DownloadableAsset) DownloadAsync ¶
func (at *DownloadableAsset) DownloadAsync(out io.Writer, ch AsyncDownloadChannel)
DownloadAsync downloads the asset asynchronously.
type Form ¶
type Form struct {
// contains filtered or unexported fields
}
Form is the default form element.
type Image ¶
type Image struct { DownloadableAsset // Alt is the value of the image alt attribute if available. Alt string // Title is the value of the image title attribute if available. Title string }
Image stores the properties of an image.
type Link ¶
type Link struct { Asset // Text is the text appearing between the opening and closing anchor tag. Text string }
Link stores the properties of a page link.
type Script ¶
type Script struct { DownloadableAsset // Type is the value of the type attribute. Defaults to "text/javascript" when not specified. Type string }
Script stores the properties of a linked script.
type Stylesheet ¶
type Stylesheet struct { DownloadableAsset // Media is the value of the media attribute. Defaults to "all" when not specified. Media string // Type is the value of the type attribute. Defaults to "text/css" when not specified. Type string }
Stylesheet stores the properties of a linked stylesheet.
func NewStylesheetAsset ¶
func NewStylesheetAsset(url *url.URL, id, media, typ string) *Stylesheet
NewStylesheetAsset creates and returns a new *Stylesheet type.