From e56f9c8c565decd5ba211e43259ab8b4179b3433 Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Wed, 12 Jul 2017 14:04:21 -0400 Subject: [PATCH] update vendored deps --- .../jpillora/go-ogle-analytics/LICENSE | 22 + .../jpillora/go-ogle-analytics/README.md | 81 ++ .../jpillora/go-ogle-analytics/client.go | 76 + .../jpillora/go-ogle-analytics/conv.go | 19 + .../jpillora/go-ogle-analytics/type-client.go | 1228 +++++++++++++++++ .../jpillora/go-ogle-analytics/type-event.go | 58 + .../go-ogle-analytics/type-exception.go | 49 + .../jpillora/go-ogle-analytics/type-item.go | 98 ++ .../go-ogle-analytics/type-pageview.go | 24 + .../go-ogle-analytics/type-screenview.go | 24 + .../jpillora/go-ogle-analytics/type-social.go | 41 + .../jpillora/go-ogle-analytics/type-timing.go | 177 +++ .../go-ogle-analytics/type-transaction.go | 95 ++ vendor/vendor.json | 6 + 14 files changed, 1998 insertions(+) create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/LICENSE create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/README.md create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/client.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/conv.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-client.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-event.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-exception.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-item.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-pageview.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-screenview.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-social.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-timing.go create mode 100644 vendor/github.com/jpillora/go-ogle-analytics/type-transaction.go diff --git a/vendor/github.com/jpillora/go-ogle-analytics/LICENSE b/vendor/github.com/jpillora/go-ogle-analytics/LICENSE new file mode 100644 index 000000000..ec9f7530c --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright © 2015 dev@jpillora.com, Google Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/jpillora/go-ogle-analytics/README.md b/vendor/github.com/jpillora/go-ogle-analytics/README.md new file mode 100644 index 000000000..9a85f3af7 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/README.md @@ -0,0 +1,81 @@ +## Go-ogle Analytics + +Track and monitor your Go programs for free with Google Analytics + +The `ga` package is essentially a Go wrapper around the [Google Analytics - Measurement Protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1/reference) + +**Warning** This package is 95% generated from the [Parameter Reference](https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters) so it may contain bugs - please report them. GA allows "10 million hits per month per property" and will reject requests after that. + +### Install + +``` +go get -v github.com/jpillora/go-ogle-analytics +``` + +### API + +Create a new `client` and `Send()` a 'pageview', 'screenview', 'event', 'transaction', 'item', 'social', 'exception' or 'timing' event. + +#### http://godoc.org/github.com/jpillora/go-ogle-analytics + +### Quick Usage + +1. Log into GA and create a new property and note its Tracker ID + +1. Create a `ga-test.go` file + + ``` go + package main + + import "github.com/jpillora/go-ogle-analytics" + + func main() { + client, err := ga.NewClient("UA-XXXXXXXX-Y") + if err != nil { + panic(err) + } + + err = client.Send(ga.NewEvent("Foo", "Bar").Label("Bazz")) + if err != nil { + panic(err) + } + + println("Event fired!") + } + ``` + +1. In GA, go to Real-time > Events + +1. Run `ga-test.go` + + ``` + $ go run ga-test.go + Event fired! + ``` + +1. Watch as your event appears + + ![foo-ga](https://cloud.githubusercontent.com/assets/633843/5979585/023fc580-a8fd-11e4-803a-956610bcc2e2.png) + +#### MIT License + +Copyright © 2015 <dev@jpillora.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/jpillora/go-ogle-analytics/client.go b/vendor/github.com/jpillora/go-ogle-analytics/client.go new file mode 100644 index 000000000..85f9169d2 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/client.go @@ -0,0 +1,76 @@ +//go:generate go run generate/protocol.go + +package ga + +import ( + "bytes" + "fmt" + "net/http" + "net/url" + "regexp" +) + +var trackingIDMatcher = regexp.MustCompile(`^UA-\d+-\d+$`) + +func NewClient(trackingID string) (*Client, error) { + if !trackingIDMatcher.MatchString(trackingID) { + return nil, fmt.Errorf("Invalid Tracking ID: %s", trackingID) + } + return &Client{ + UseTLS: true, + HttpClient: http.DefaultClient, + protocolVersion: "1", + protocolVersionSet: true, + trackingID: trackingID, + clientID: "go-ga", + clientIDSet: true, + }, nil +} + +type hitType interface { + addFields(url.Values) error +} + +func (c *Client) Send(h hitType) error { + + cpy := c.Copy() + + v := url.Values{} + + cpy.setType(h) + + err := cpy.addFields(v) + if err != nil { + return err + } + + err = h.addFields(v) + if err != nil { + return err + } + + url := "" + if cpy.UseTLS { + url = "https://www.google-analytics.com/collect" + } else { + url = "http://ssl.google-analytics.com/collect" + } + + str := v.Encode() + buf := bytes.NewBufferString(str) + + resp, err := c.HttpClient.Post(url, "application/x-www-form-urlencoded", buf) + if err != nil { + return err + } + + defer resp.Body.Close() + + if resp.StatusCode/100 != 2 { + return fmt.Errorf("Rejected by Google with code %d", resp.StatusCode) + } + + // fmt.Printf("POST %s => %d\n", str, resp.StatusCode) + + return nil +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/conv.go b/vendor/github.com/jpillora/go-ogle-analytics/conv.go new file mode 100644 index 000000000..4deeb4a33 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/conv.go @@ -0,0 +1,19 @@ +package ga + +import "fmt" + +func bool2str(val bool) string { + if val { + return "1" + } else { + return "0" + } +} + +func int2str(val int64) string { + return fmt.Sprintf("%d", val) +} + +func float2str(val float64) string { + return fmt.Sprintf("%.6f", val) +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-client.go b/vendor/github.com/jpillora/go-ogle-analytics/type-client.go new file mode 100644 index 000000000..b914c6727 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-client.go @@ -0,0 +1,1228 @@ +package ga + +import ( + "net/http" + "net/url" +) + +//WARNING: This file was generated. Do not edit. + +//Client Hit Type +type Client struct { + //Use TLS when Send()ing + UseTLS bool + HttpClient *http.Client + protocolVersion string + protocolVersionSet bool + trackingID string + anonymizeIP bool + anonymizeIPSet bool + dataSource string + dataSourceSet bool + queueTime int64 + queueTimeSet bool + cacheBuster string + cacheBusterSet bool + clientID string + clientIDSet bool + userID string + userIDSet bool + sessionControl string + sessionControlSet bool + iPOverride string + iPOverrideSet bool + userAgentOverride string + userAgentOverrideSet bool + geographicalOverride string + geographicalOverrideSet bool + documentReferrer string + documentReferrerSet bool + campaignName string + campaignNameSet bool + campaignSource string + campaignSourceSet bool + campaignMedium string + campaignMediumSet bool + campaignKeyword string + campaignKeywordSet bool + campaignContent string + campaignContentSet bool + campaignID string + campaignIDSet bool + googleAdWordsID string + googleAdWordsIDSet bool + googleDisplayAdsID string + googleDisplayAdsIDSet bool + screenResolution string + screenResolutionSet bool + viewportSize string + viewportSizeSet bool + documentEncoding string + documentEncodingSet bool + screenColors string + screenColorsSet bool + userLanguage string + userLanguageSet bool + javaEnabled bool + javaEnabledSet bool + flashVersion string + flashVersionSet bool + hitType string + nonInteractionHit bool + nonInteractionHitSet bool + documentLocationURL string + documentLocationURLSet bool + documentHostName string + documentHostNameSet bool + documentPath string + documentPathSet bool + documentTitle string + documentTitleSet bool + screenName string + screenNameSet bool + linkID string + linkIDSet bool + applicationName string + applicationNameSet bool + applicationID string + applicationIDSet bool + applicationVersion string + applicationVersionSet bool + applicationInstallerID string + applicationInstallerIDSet bool + productSKU string + productSKUSet bool + productName string + productNameSet bool + productBrand string + productBrandSet bool + productCategory string + productCategorySet bool + productVariant string + productVariantSet bool + productPrice float64 + productPriceSet bool + productQuantity int64 + productQuantitySet bool + productCouponCode string + productCouponCodeSet bool + productPosition int64 + productPositionSet bool + productCustomDimension string + productCustomDimensionSet bool + productCustomMetric int64 + productCustomMetricSet bool + productAction string + productActionSet bool + transactionID string + transactionIDSet bool + affiliation string + affiliationSet bool + revenue float64 + revenueSet bool + tax float64 + taxSet bool + shipping float64 + shippingSet bool + couponCode string + couponCodeSet bool + productActionList string + productActionListSet bool + checkoutStep int64 + checkoutStepSet bool + checkoutStepOption string + checkoutStepOptionSet bool + productImpressionListName string + productImpressionListNameSet bool + productImpressionSKU string + productImpressionSKUSet bool + productImpressionName string + productImpressionNameSet bool + productImpressionBrand string + productImpressionBrandSet bool + productImpressionCategory string + productImpressionCategorySet bool + productImpressionVariant string + productImpressionVariantSet bool + productImpressionPosition int64 + productImpressionPositionSet bool + productImpressionPrice float64 + productImpressionPriceSet bool + productImpressionCustomDimension string + productImpressionCustomDimensionSet bool + productImpressionCustomMetric int64 + productImpressionCustomMetricSet bool + promotionID string + promotionIDSet bool + promotionName string + promotionNameSet bool + promotionCreative string + promotionCreativeSet bool + promotionPosition string + promotionPositionSet bool + promotionAction string + promotionActionSet bool + customDimension string + customDimensionSet bool + customMetric int64 + customMetricSet bool + experimentID string + experimentIDSet bool + experimentVariant string + experimentVariantSet bool + dimensionIndex string + dimensionIndexSet bool + listIndex string + listIndexSet bool + metricIndex string + metricIndexSet bool + productIndex string + productIndexSet bool + promoIndex string + promoIndexSet bool +} + +func (c *Client) setType(h hitType) { + switch h.(type) { + case *Event: + c.hitType = "event" + case *Exception: + c.hitType = "exception" + case *Item: + c.hitType = "item" + case *Pageview: + c.hitType = "pageview" + case *Screenview: + c.hitType = "screenview" + case *Social: + c.hitType = "social" + case *Timing: + c.hitType = "timing" + case *Transaction: + c.hitType = "transaction" + } +} + +func (h *Client) addFields(v url.Values) error { + if h.protocolVersionSet { + v.Add("v", h.protocolVersion) + } + v.Add("tid", h.trackingID) + if h.anonymizeIPSet { + v.Add("aip", bool2str(h.anonymizeIP)) + } + if h.dataSourceSet { + v.Add("ds", h.dataSource) + } + if h.queueTimeSet { + v.Add("qt", int2str(h.queueTime)) + } + if h.cacheBusterSet { + v.Add("z", h.cacheBuster) + } + if h.clientIDSet { + v.Add("cid", h.clientID) + } + if h.userIDSet { + v.Add("uid", h.userID) + } + if h.sessionControlSet { + v.Add("sc", h.sessionControl) + } + if h.iPOverrideSet { + v.Add("uip", h.iPOverride) + } + if h.userAgentOverrideSet { + v.Add("ua", h.userAgentOverride) + } + if h.geographicalOverrideSet { + v.Add("geoid", h.geographicalOverride) + } + if h.documentReferrerSet { + v.Add("dr", h.documentReferrer) + } + if h.campaignNameSet { + v.Add("cn", h.campaignName) + } + if h.campaignSourceSet { + v.Add("cs", h.campaignSource) + } + if h.campaignMediumSet { + v.Add("cm", h.campaignMedium) + } + if h.campaignKeywordSet { + v.Add("ck", h.campaignKeyword) + } + if h.campaignContentSet { + v.Add("cc", h.campaignContent) + } + if h.campaignIDSet { + v.Add("ci", h.campaignID) + } + if h.googleAdWordsIDSet { + v.Add("gclid", h.googleAdWordsID) + } + if h.googleDisplayAdsIDSet { + v.Add("dclid", h.googleDisplayAdsID) + } + if h.screenResolutionSet { + v.Add("sr", h.screenResolution) + } + if h.viewportSizeSet { + v.Add("vp", h.viewportSize) + } + if h.documentEncodingSet { + v.Add("de", h.documentEncoding) + } + if h.screenColorsSet { + v.Add("sd", h.screenColors) + } + if h.userLanguageSet { + v.Add("ul", h.userLanguage) + } + if h.javaEnabledSet { + v.Add("je", bool2str(h.javaEnabled)) + } + if h.flashVersionSet { + v.Add("fl", h.flashVersion) + } + v.Add("t", h.hitType) + if h.nonInteractionHitSet { + v.Add("ni", bool2str(h.nonInteractionHit)) + } + if h.documentLocationURLSet { + v.Add("dl", h.documentLocationURL) + } + if h.documentHostNameSet { + v.Add("dh", h.documentHostName) + } + if h.documentPathSet { + v.Add("dp", h.documentPath) + } + if h.documentTitleSet { + v.Add("dt", h.documentTitle) + } + if h.screenNameSet { + v.Add("cd", h.screenName) + } + if h.linkIDSet { + v.Add("linkid", h.linkID) + } + if h.applicationNameSet { + v.Add("an", h.applicationName) + } + if h.applicationIDSet { + v.Add("aid", h.applicationID) + } + if h.applicationVersionSet { + v.Add("av", h.applicationVersion) + } + if h.applicationInstallerIDSet { + v.Add("aiid", h.applicationInstallerID) + } + if h.productSKUSet { + v.Add("pr"+h.productIndex+"id", h.productSKU) + } + if h.productNameSet { + v.Add("pr"+h.productIndex+"nm", h.productName) + } + if h.productBrandSet { + v.Add("pr"+h.productIndex+"br", h.productBrand) + } + if h.productCategorySet { + v.Add("pr"+h.productIndex+"ca", h.productCategory) + } + if h.productVariantSet { + v.Add("pr"+h.productIndex+"va", h.productVariant) + } + if h.productPriceSet { + v.Add("pr"+h.productIndex+"pr", float2str(h.productPrice)) + } + if h.productQuantitySet { + v.Add("pr"+h.productIndex+"qt", int2str(h.productQuantity)) + } + if h.productCouponCodeSet { + v.Add("pr"+h.productIndex+"cc", h.productCouponCode) + } + if h.productPositionSet { + v.Add("pr"+h.productIndex+"ps", int2str(h.productPosition)) + } + if h.productCustomDimensionSet { + v.Add("pr"+h.productIndex+"cd"+h.dimensionIndex+"", h.productCustomDimension) + } + if h.productCustomMetricSet { + v.Add("pr"+h.productIndex+"cm"+h.metricIndex+"", int2str(h.productCustomMetric)) + } + if h.productActionSet { + v.Add("pa", h.productAction) + } + if h.transactionIDSet { + v.Add("ti", h.transactionID) + } + if h.affiliationSet { + v.Add("ta", h.affiliation) + } + if h.revenueSet { + v.Add("tr", float2str(h.revenue)) + } + if h.taxSet { + v.Add("tt", float2str(h.tax)) + } + if h.shippingSet { + v.Add("ts", float2str(h.shipping)) + } + if h.couponCodeSet { + v.Add("tcc", h.couponCode) + } + if h.productActionListSet { + v.Add("pal", h.productActionList) + } + if h.checkoutStepSet { + v.Add("cos", int2str(h.checkoutStep)) + } + if h.checkoutStepOptionSet { + v.Add("col", h.checkoutStepOption) + } + if h.productImpressionListNameSet { + v.Add("il"+h.listIndex+"nm", h.productImpressionListName) + } + if h.productImpressionSKUSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"id", h.productImpressionSKU) + } + if h.productImpressionNameSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"nm", h.productImpressionName) + } + if h.productImpressionBrandSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"br", h.productImpressionBrand) + } + if h.productImpressionCategorySet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"ca", h.productImpressionCategory) + } + if h.productImpressionVariantSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"va", h.productImpressionVariant) + } + if h.productImpressionPositionSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"ps", int2str(h.productImpressionPosition)) + } + if h.productImpressionPriceSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"pr", float2str(h.productImpressionPrice)) + } + if h.productImpressionCustomDimensionSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"cd"+h.dimensionIndex+"", h.productImpressionCustomDimension) + } + if h.productImpressionCustomMetricSet { + v.Add("il"+h.listIndex+"pi"+h.productIndex+"cm"+h.metricIndex+"", int2str(h.productImpressionCustomMetric)) + } + if h.promotionIDSet { + v.Add("promo"+h.promoIndex+"id", h.promotionID) + } + if h.promotionNameSet { + v.Add("promo"+h.promoIndex+"nm", h.promotionName) + } + if h.promotionCreativeSet { + v.Add("promo"+h.promoIndex+"cr", h.promotionCreative) + } + if h.promotionPositionSet { + v.Add("promo"+h.promoIndex+"ps", h.promotionPosition) + } + if h.promotionActionSet { + v.Add("promoa", h.promotionAction) + } + if h.customDimensionSet { + v.Add("cd"+h.dimensionIndex+"", h.customDimension) + } + if h.customMetricSet { + v.Add("cm"+h.metricIndex+"", int2str(h.customMetric)) + } + if h.experimentIDSet { + v.Add("xid", h.experimentID) + } + if h.experimentVariantSet { + v.Add("xvar", h.experimentVariant) + } + return nil +} + +// The Protocol version. The current value is '1'. This will +// only change when there are changes made that are not backwards +// compatible. +func (h *Client) ProtocolVersion(protocolVersion string) *Client { + h.protocolVersion = protocolVersion + h.protocolVersionSet = true + return h +} + +// When present, the IP address of the sender will be anonymized. +// For example, the IP will be anonymized if any of the following +// parameters are present in the payload: &aip=, &aip=0, or +// &aip=1 +func (h *Client) AnonymizeIP(anonymizeIP bool) *Client { + h.anonymizeIP = anonymizeIP + h.anonymizeIPSet = true + return h +} + +// Indicates the data source of the hit. Hits sent from analytics.js +// will have data source set to 'web'; hits sent from one of +// the mobile SDKs will have data source set to 'app'. +func (h *Client) DataSource(dataSource string) *Client { + h.dataSource = dataSource + h.dataSourceSet = true + return h +} + +// Used to collect offline / latent hits. The value represents +// the time delta (in milliseconds) between when the hit being +// reported occurred and the time the hit was sent. The value +// must be greater than or equal to 0. Values greater than +// four hours may lead to hits not being processed. +func (h *Client) QueueTime(queueTime int64) *Client { + h.queueTime = queueTime + h.queueTimeSet = true + return h +} + +// Used to send a random number in GET requests to ensure browsers +// and proxies don't cache hits. It should be sent as the final +// parameter of the request since we've seen some 3rd party +// internet filtering software add additional parameters to +// HTTP requests incorrectly. This value is not used in reporting. +func (h *Client) CacheBuster(cacheBuster string) *Client { + h.cacheBuster = cacheBuster + h.cacheBusterSet = true + return h +} + +// This anonymously identifies a particular user, device, or +// browser instance. For the web, this is generally stored +// as a first-party cookie with a two-year expiration. For +// mobile apps, this is randomly generated for each particular +// instance of an application install. The value of this field +// should be a random UUID (version 4) as described in http://www.ietf.org/rfc/rfc4122.txt +func (h *Client) ClientID(clientID string) *Client { + h.clientID = clientID + h.clientIDSet = true + return h +} + +// This is intended to be a known identifier for a user provided +// by the site owner/tracking library user. It may not itself +// be PII (personally identifiable information). The value +// should never be persisted in GA cookies or other Analytics +// provided storage. +func (h *Client) UserID(userID string) *Client { + h.userID = userID + h.userIDSet = true + return h +} + +// Used to control the session duration. A value of 'start' +// forces a new session to start with this hit and 'end' forces +// the current session to end with this hit. All other values +// are ignored. +func (h *Client) SessionControl(sessionControl string) *Client { + h.sessionControl = sessionControl + h.sessionControlSet = true + return h +} + +// The IP address of the user. This should be a valid IP address +// in IPv4 or IPv6 format. It will always be anonymized just +// as though &aip (anonymize IP) had been used. +func (h *Client) IPOverride(iPOverride string) *Client { + h.iPOverride = iPOverride + h.iPOverrideSet = true + return h +} + +// The User Agent of the browser. Note that Google has libraries +// to identify real user agents. Hand crafting your own agent +// could break at any time. +func (h *Client) UserAgentOverride(userAgentOverride string) *Client { + h.userAgentOverride = userAgentOverride + h.userAgentOverrideSet = true + return h +} + +// The geographical location of the user. The geographical +// ID should be a two letter country code or a criteria ID +// representing a city or region (see http://developers.google.com/analytics/devguides/collection/protocol/v1/geoid). +// This parameter takes precedent over any location derived +// from IP address, including the IP Override parameter. An +// invalid code will result in geographical dimensions to be +// set to '(not set)'. +func (h *Client) GeographicalOverride(geographicalOverride string) *Client { + h.geographicalOverride = geographicalOverride + h.geographicalOverrideSet = true + return h +} + +// Specifies which referral source brought traffic to a website. +// This value is also used to compute the traffic source. The +// format of this value is a URL. +func (h *Client) DocumentReferrer(documentReferrer string) *Client { + h.documentReferrer = documentReferrer + h.documentReferrerSet = true + return h +} + +// Specifies the campaign name. +func (h *Client) CampaignName(campaignName string) *Client { + h.campaignName = campaignName + h.campaignNameSet = true + return h +} + +// Specifies the campaign source. +func (h *Client) CampaignSource(campaignSource string) *Client { + h.campaignSource = campaignSource + h.campaignSourceSet = true + return h +} + +// Specifies the campaign medium. +func (h *Client) CampaignMedium(campaignMedium string) *Client { + h.campaignMedium = campaignMedium + h.campaignMediumSet = true + return h +} + +// Specifies the campaign keyword. +func (h *Client) CampaignKeyword(campaignKeyword string) *Client { + h.campaignKeyword = campaignKeyword + h.campaignKeywordSet = true + return h +} + +// Specifies the campaign content. +func (h *Client) CampaignContent(campaignContent string) *Client { + h.campaignContent = campaignContent + h.campaignContentSet = true + return h +} + +// Specifies the campaign ID. +func (h *Client) CampaignID(campaignID string) *Client { + h.campaignID = campaignID + h.campaignIDSet = true + return h +} + +// Specifies the Google AdWords Id. +func (h *Client) GoogleAdWordsID(googleAdWordsID string) *Client { + h.googleAdWordsID = googleAdWordsID + h.googleAdWordsIDSet = true + return h +} + +// Specifies the Google Display Ads Id. +func (h *Client) GoogleDisplayAdsID(googleDisplayAdsID string) *Client { + h.googleDisplayAdsID = googleDisplayAdsID + h.googleDisplayAdsIDSet = true + return h +} + +// Specifies the screen resolution. +func (h *Client) ScreenResolution(screenResolution string) *Client { + h.screenResolution = screenResolution + h.screenResolutionSet = true + return h +} + +// Specifies the viewable area of the browser / device. +func (h *Client) ViewportSize(viewportSize string) *Client { + h.viewportSize = viewportSize + h.viewportSizeSet = true + return h +} + +// Specifies the character set used to encode the page / document. +func (h *Client) DocumentEncoding(documentEncoding string) *Client { + h.documentEncoding = documentEncoding + h.documentEncodingSet = true + return h +} + +// Specifies the screen color depth. +func (h *Client) ScreenColors(screenColors string) *Client { + h.screenColors = screenColors + h.screenColorsSet = true + return h +} + +// Specifies the language. +func (h *Client) UserLanguage(userLanguage string) *Client { + h.userLanguage = userLanguage + h.userLanguageSet = true + return h +} + +// Specifies whether Java was enabled. +func (h *Client) JavaEnabled(javaEnabled bool) *Client { + h.javaEnabled = javaEnabled + h.javaEnabledSet = true + return h +} + +// Specifies the flash version. +func (h *Client) FlashVersion(flashVersion string) *Client { + h.flashVersion = flashVersion + h.flashVersionSet = true + return h +} + +// Specifies that a hit be considered non-interactive. +func (h *Client) NonInteractionHit(nonInteractionHit bool) *Client { + h.nonInteractionHit = nonInteractionHit + h.nonInteractionHitSet = true + return h +} + +// Use this parameter to send the full URL (document location) +// of the page on which content resides. You can use the &dh +// and &dp parameters to override the hostname and path + query +// portions of the document location, accordingly. The JavaScript +// clients determine this parameter using the concatenation +// of the document.location.origin + document.location.pathname +// + document.location.search browser parameters. Be sure to +// remove any user authentication or other private information +// from the URL if present. For 'pageview' hits, either &dl +// or both &dh and &dp have to be specified for the hit to +// be valid. +func (h *Client) DocumentLocationURL(documentLocationURL string) *Client { + h.documentLocationURL = documentLocationURL + h.documentLocationURLSet = true + return h +} + +// Specifies the hostname from which content was hosted. +func (h *Client) DocumentHostName(documentHostName string) *Client { + h.documentHostName = documentHostName + h.documentHostNameSet = true + return h +} + +// The path portion of the page URL. Should begin with '/'. +// For 'pageview' hits, either &dl or both &dh and &dp have +// to be specified for the hit to be valid. +func (h *Client) DocumentPath(documentPath string) *Client { + h.documentPath = documentPath + h.documentPathSet = true + return h +} + +// The title of the page / document. +func (h *Client) DocumentTitle(documentTitle string) *Client { + h.documentTitle = documentTitle + h.documentTitleSet = true + return h +} + +// If not specified, this will default to the unique URL of +// the page by either using the &dl parameter as-is or assembling +// it from &dh and &dp. App tracking makes use of this for +// the 'Screen Name' of the screenview hit. +func (h *Client) ScreenName(screenName string) *Client { + h.screenName = screenName + h.screenNameSet = true + return h +} + +// The ID of a clicked DOM element, used to disambiguate multiple +// links to the same URL in In-Page Analytics reports when +// Enhanced Link Attribution is enabled for the property. +func (h *Client) LinkID(linkID string) *Client { + h.linkID = linkID + h.linkIDSet = true + return h +} + +// Specifies the application name. +func (h *Client) ApplicationName(applicationName string) *Client { + h.applicationName = applicationName + h.applicationNameSet = true + return h +} + +// Application identifier. +func (h *Client) ApplicationID(applicationID string) *Client { + h.applicationID = applicationID + h.applicationIDSet = true + return h +} + +// Specifies the application version. +func (h *Client) ApplicationVersion(applicationVersion string) *Client { + h.applicationVersion = applicationVersion + h.applicationVersionSet = true + return h +} + +// Application installer identifier. +func (h *Client) ApplicationInstallerID(applicationInstallerID string) *Client { + h.applicationInstallerID = applicationInstallerID + h.applicationInstallerIDSet = true + return h +} + +// The SKU of the product. Product index must be a positive +// integer between 1 and 200, inclusive. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) ProductSKU(productSKU string) *Client { + h.productSKU = productSKU + h.productSKUSet = true + return h +} + +// The name of the product. Product index must be a positive +// integer between 1 and 200, inclusive. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) ProductName(productName string) *Client { + h.productName = productName + h.productNameSet = true + return h +} + +// The brand associated with the product. Product index must +// be a positive integer between 1 and 200, inclusive. For +// analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductBrand(productBrand string) *Client { + h.productBrand = productBrand + h.productBrandSet = true + return h +} + +// The category to which the product belongs. Product index +// must be a positive integer between 1 and 200, inclusive. +// The product category parameter can be hierarchical. Use +// / as a delimiter to specify up to 5-levels of hierarchy. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductCategory(productCategory string) *Client { + h.productCategory = productCategory + h.productCategorySet = true + return h +} + +// The variant of the product. Product index must be a positive +// integer between 1 and 200, inclusive. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) ProductVariant(productVariant string) *Client { + h.productVariant = productVariant + h.productVariantSet = true + return h +} + +// The price of a product. Product index must be a positive +// integer between 1 and 200, inclusive. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) ProductPrice(productPrice float64) *Client { + h.productPrice = productPrice + h.productPriceSet = true + return h +} + +// The quantity of a product. Product index must be a positive +// integer between 1 and 200, inclusive. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) ProductQuantity(productQuantity int64) *Client { + h.productQuantity = productQuantity + h.productQuantitySet = true + return h +} + +// The coupon code associated with a product. Product index +// must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductCouponCode(productCouponCode string) *Client { + h.productCouponCode = productCouponCode + h.productCouponCodeSet = true + return h +} + +// The product's position in a list or collection. Product +// index must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductPosition(productPosition int64) *Client { + h.productPosition = productPosition + h.productPositionSet = true + return h +} + +// A product-level custom dimension where dimension index is +// a positive integer between 1 and 200, inclusive. Product +// index must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductCustomDimension(productCustomDimension string) *Client { + h.productCustomDimension = productCustomDimension + h.productCustomDimensionSet = true + return h +} + +// A product-level custom metric where metric index is a positive +// integer between 1 and 200, inclusive. Product index must +// be a positive integer between 1 and 200, inclusive. For +// analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductCustomMetric(productCustomMetric int64) *Client { + h.productCustomMetric = productCustomMetric + h.productCustomMetricSet = true + return h +} + +// The role of the products included in a hit. If a product +// action is not specified, all product definitions included +// with the hit will be ignored. Must be one of: detail, click, +// add, remove, checkout, checkout_option, purchase, refund. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductAction(productAction string) *Client { + h.productAction = productAction + h.productActionSet = true + return h +} + +// The transaction ID. This is an additional parameter that +// can be sent when Product Action is set to 'purchase' or +// 'refund'. For analytics.js the Enhanced Ecommerce plugin +// must be installed before using this field. +func (h *Client) TransactionID(transactionID string) *Client { + h.transactionID = transactionID + h.transactionIDSet = true + return h +} + +// The store or affiliation from which this transaction occurred. +// This is an additional parameter that can be sent when Product +// Action is set to 'purchase' or 'refund'. For analytics.js +// the Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) Affiliation(affiliation string) *Client { + h.affiliation = affiliation + h.affiliationSet = true + return h +} + +// The total value of the transaction, including tax and shipping. +// If not sent, this value will be automatically calculated +// using the product quantity and price fields of all products +// in the same hit. This is an additional parameter that can +// be sent when Product Action is set to 'purchase' or 'refund'. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) Revenue(revenue float64) *Client { + h.revenue = revenue + h.revenueSet = true + return h +} + +// The total tax associated with the transaction. This is an +// additional parameter that can be sent when Product Action +// is set to 'purchase' or 'refund'. For analytics.js the Enhanced +// Ecommerce plugin must be installed before using this field. +func (h *Client) Tax(tax float64) *Client { + h.tax = tax + h.taxSet = true + return h +} + +// The shipping cost associated with the transaction. This +// is an additional parameter that can be sent when Product +// Action is set to 'purchase' or 'refund'. For analytics.js +// the Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) Shipping(shipping float64) *Client { + h.shipping = shipping + h.shippingSet = true + return h +} + +// The transaction coupon redeemed with the transaction. This +// is an additional parameter that can be sent when Product +// Action is set to 'purchase' or 'refund'. For analytics.js +// the Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) CouponCode(couponCode string) *Client { + h.couponCode = couponCode + h.couponCodeSet = true + return h +} + +// The list or collection from which a product action occurred. +// This is an additional parameter that can be sent when Product +// Action is set to 'detail' or 'click'. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) ProductActionList(productActionList string) *Client { + h.productActionList = productActionList + h.productActionListSet = true + return h +} + +// The step number in a checkout funnel. This is an additional +// parameter that can be sent when Product Action is set to +// 'checkout'. For analytics.js the Enhanced Ecommerce plugin +// must be installed before using this field. +func (h *Client) CheckoutStep(checkoutStep int64) *Client { + h.checkoutStep = checkoutStep + h.checkoutStepSet = true + return h +} + +// Additional information about a checkout step. This is an +// additional parameter that can be sent when Product Action +// is set to 'checkout'. For analytics.js the Enhanced Ecommerce +// plugin must be installed before using this field. +func (h *Client) CheckoutStepOption(checkoutStepOption string) *Client { + h.checkoutStepOption = checkoutStepOption + h.checkoutStepOptionSet = true + return h +} + +// The list or collection to which a product belongs. Impression +// List index must be a positive integer between 1 and 200, +// inclusive. For analytics.js the Enhanced Ecommerce plugin +// must be installed before using this field. +func (h *Client) ProductImpressionListName(productImpressionListName string) *Client { + h.productImpressionListName = productImpressionListName + h.productImpressionListNameSet = true + return h +} + +// The product ID or SKU. Impression List index must be a positive +// integer between 1 and 200, inclusive. Product index must +// be a positive integer between 1 and 200, inclusive. For +// analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductImpressionSKU(productImpressionSKU string) *Client { + h.productImpressionSKU = productImpressionSKU + h.productImpressionSKUSet = true + return h +} + +// The name of the product. Impression List index must be a +// positive integer between 1 and 200, inclusive. Product index +// must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductImpressionName(productImpressionName string) *Client { + h.productImpressionName = productImpressionName + h.productImpressionNameSet = true + return h +} + +// The brand associated with the product. Impression List index +// must be a positive integer between 1 and 200, inclusive. +// Product index must be a positive integer between 1 and 200, +// inclusive. For analytics.js the Enhanced Ecommerce plugin +// must be installed before using this field. +func (h *Client) ProductImpressionBrand(productImpressionBrand string) *Client { + h.productImpressionBrand = productImpressionBrand + h.productImpressionBrandSet = true + return h +} + +// The category to which the product belongs. Impression List +// index must be a positive integer between 1 and 200, inclusive. +// Product index must be a positive integer between 1 and 200, +// inclusive. For analytics.js the Enhanced Ecommerce plugin +// must be installed before using this field. +func (h *Client) ProductImpressionCategory(productImpressionCategory string) *Client { + h.productImpressionCategory = productImpressionCategory + h.productImpressionCategorySet = true + return h +} + +// The variant of the product. Impression List index must be +// a positive integer between 1 and 200, inclusive. Product +// index must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductImpressionVariant(productImpressionVariant string) *Client { + h.productImpressionVariant = productImpressionVariant + h.productImpressionVariantSet = true + return h +} + +// The product's position in a list or collection. Impression +// List index must be a positive integer between 1 and 200, +// inclusive. Product index must be a positive integer between +// 1 and 200, inclusive. For analytics.js the Enhanced Ecommerce +// plugin must be installed before using this field. +func (h *Client) ProductImpressionPosition(productImpressionPosition int64) *Client { + h.productImpressionPosition = productImpressionPosition + h.productImpressionPositionSet = true + return h +} + +// The price of a product. Impression List index must be a +// positive integer between 1 and 200, inclusive. Product index +// must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) ProductImpressionPrice(productImpressionPrice float64) *Client { + h.productImpressionPrice = productImpressionPrice + h.productImpressionPriceSet = true + return h +} + +// A product-level custom dimension where dimension index is +// a positive integer between 1 and 200, inclusive. Impression +// List index must be a positive integer between 1 and 200, +// inclusive. Product index must be a positive integer between +// 1 and 200, inclusive. For analytics.js the Enhanced Ecommerce +// plugin must be installed before using this field. +func (h *Client) ProductImpressionCustomDimension(productImpressionCustomDimension string) *Client { + h.productImpressionCustomDimension = productImpressionCustomDimension + h.productImpressionCustomDimensionSet = true + return h +} + +// A product-level custom metric where metric index is a positive +// integer between 1 and 200, inclusive. Impression List index +// must be a positive integer between 1 and 200, inclusive. +// Product index must be a positive integer between 1 and 200, +// inclusive. For analytics.js the Enhanced Ecommerce plugin +// must be installed before using this field. +func (h *Client) ProductImpressionCustomMetric(productImpressionCustomMetric int64) *Client { + h.productImpressionCustomMetric = productImpressionCustomMetric + h.productImpressionCustomMetricSet = true + return h +} + +// The promotion ID. Promotion index must be a positive integer +// between 1 and 200, inclusive. For analytics.js the Enhanced +// Ecommerce plugin must be installed before using this field. +func (h *Client) PromotionID(promotionID string) *Client { + h.promotionID = promotionID + h.promotionIDSet = true + return h +} + +// The name of the promotion. Promotion index must be a positive +// integer between 1 and 200, inclusive. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) PromotionName(promotionName string) *Client { + h.promotionName = promotionName + h.promotionNameSet = true + return h +} + +// The creative associated with the promotion. Promotion index +// must be a positive integer between 1 and 200, inclusive. +// For analytics.js the Enhanced Ecommerce plugin must be installed +// before using this field. +func (h *Client) PromotionCreative(promotionCreative string) *Client { + h.promotionCreative = promotionCreative + h.promotionCreativeSet = true + return h +} + +// The position of the creative. Promotion index must be a +// positive integer between 1 and 200, inclusive. For analytics.js +// the Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) PromotionPosition(promotionPosition string) *Client { + h.promotionPosition = promotionPosition + h.promotionPositionSet = true + return h +} + +// Specifies the role of the promotions included in a hit. +// If a promotion action is not specified, the default promotion +// action, 'view', is assumed. To measure a user click on a +// promotion set this to 'promo_click'. For analytics.js the +// Enhanced Ecommerce plugin must be installed before using +// this field. +func (h *Client) PromotionAction(promotionAction string) *Client { + h.promotionAction = promotionAction + h.promotionActionSet = true + return h +} + +// Each custom dimension has an associated index. There is +// a maximum of 20 custom dimensions (200 for Premium accounts). +// The dimension index must be a positive integer between 1 +// and 200, inclusive. +func (h *Client) CustomDimension(customDimension string) *Client { + h.customDimension = customDimension + h.customDimensionSet = true + return h +} + +// Each custom metric has an associated index. There is a maximum +// of 20 custom metrics (200 for Premium accounts). The metric +// index must be a positive integer between 1 and 200, inclusive. +func (h *Client) CustomMetric(customMetric int64) *Client { + h.customMetric = customMetric + h.customMetricSet = true + return h +} + +// This parameter specifies that this user has been exposed +// to an experiment with the given ID. It should be sent in +// conjunction with the Experiment Variant parameter. +func (h *Client) ExperimentID(experimentID string) *Client { + h.experimentID = experimentID + h.experimentIDSet = true + return h +} + +// This parameter specifies that this user has been exposed +// to a particular variation of an experiment. It should be +// sent in conjunction with the Experiment ID parameter. +func (h *Client) ExperimentVariant(experimentVariant string) *Client { + h.experimentVariant = experimentVariant + h.experimentVariantSet = true + return h +} + +// DimensionIndex is required by other properties +func (h *Client) DimensionIndex(dimensionIndex string) *Client { + h.dimensionIndex = dimensionIndex + h.dimensionIndexSet = true + return h +} + +// ListIndex is required by other properties +func (h *Client) ListIndex(listIndex string) *Client { + h.listIndex = listIndex + h.listIndexSet = true + return h +} + +// MetricIndex is required by other properties +func (h *Client) MetricIndex(metricIndex string) *Client { + h.metricIndex = metricIndex + h.metricIndexSet = true + return h +} + +// ProductIndex is required by other properties +func (h *Client) ProductIndex(productIndex string) *Client { + h.productIndex = productIndex + h.productIndexSet = true + return h +} + +// PromoIndex is required by other properties +func (h *Client) PromoIndex(promoIndex string) *Client { + h.promoIndex = promoIndex + h.promoIndexSet = true + return h +} + +func (h *Client) Copy() *Client { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-event.go b/vendor/github.com/jpillora/go-ogle-analytics/type-event.go new file mode 100644 index 000000000..b27c36849 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-event.go @@ -0,0 +1,58 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Event Hit Type +type Event struct { + category string + action string + label string + labelSet bool + value int64 + valueSet bool +} + +// NewEvent creates a new Event Hit Type. +// Specifies the event category. +// Specifies the event action. + +func NewEvent(category string, action string) *Event { + h := &Event{ + category: category, + action: action, + } + return h +} + +func (h *Event) addFields(v url.Values) error { + v.Add("ec", h.category) + v.Add("ea", h.action) + if h.labelSet { + v.Add("el", h.label) + } + if h.valueSet { + v.Add("ev", int2str(h.value)) + } + return nil +} + +// Specifies the event label. +func (h *Event) Label(label string) *Event { + h.label = label + h.labelSet = true + return h +} + +// Specifies the event value. Values must be non-negative. +func (h *Event) Value(value int64) *Event { + h.value = value + h.valueSet = true + return h +} + +func (h *Event) Copy() *Event { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-exception.go b/vendor/github.com/jpillora/go-ogle-analytics/type-exception.go new file mode 100644 index 000000000..f5dd25869 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-exception.go @@ -0,0 +1,49 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Exception Hit Type +type Exception struct { + description string + descriptionSet bool + isExceptionFatal bool + isExceptionFatalSet bool +} + +// NewException creates a new Exception Hit Type. + +func NewException() *Exception { + h := &Exception{} + return h +} + +func (h *Exception) addFields(v url.Values) error { + if h.descriptionSet { + v.Add("exd", h.description) + } + if h.isExceptionFatalSet { + v.Add("exf", bool2str(h.isExceptionFatal)) + } + return nil +} + +// Specifies the description of an exception. +func (h *Exception) Description(description string) *Exception { + h.description = description + h.descriptionSet = true + return h +} + +// Specifies whether the exception was fatal. +func (h *Exception) IsExceptionFatal(isExceptionFatal bool) *Exception { + h.isExceptionFatal = isExceptionFatal + h.isExceptionFatalSet = true + return h +} + +func (h *Exception) Copy() *Exception { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-item.go b/vendor/github.com/jpillora/go-ogle-analytics/type-item.go new file mode 100644 index 000000000..9675c716d --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-item.go @@ -0,0 +1,98 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Item Hit Type +type Item struct { + iD string + name string + price float64 + priceSet bool + quantity int64 + quantitySet bool + code string + codeSet bool + category string + categorySet bool + currencyCode string + currencyCodeSet bool +} + +// NewItem creates a new Item Hit Type. +// A unique identifier for the transaction. This value should +// be the same for both the Transaction hit and Items hits +// associated to the particular transaction. +// Specifies the item name. + +func NewItem(iD string, name string) *Item { + h := &Item{ + iD: iD, + name: name, + } + return h +} + +func (h *Item) addFields(v url.Values) error { + v.Add("ti", h.iD) + v.Add("in", h.name) + if h.priceSet { + v.Add("ip", float2str(h.price)) + } + if h.quantitySet { + v.Add("iq", int2str(h.quantity)) + } + if h.codeSet { + v.Add("ic", h.code) + } + if h.categorySet { + v.Add("iv", h.category) + } + if h.currencyCodeSet { + v.Add("cu", h.currencyCode) + } + return nil +} + +// Specifies the price for a single item / unit. +func (h *Item) Price(price float64) *Item { + h.price = price + h.priceSet = true + return h +} + +// Specifies the number of items purchased. +func (h *Item) Quantity(quantity int64) *Item { + h.quantity = quantity + h.quantitySet = true + return h +} + +// Specifies the SKU or item code. +func (h *Item) Code(code string) *Item { + h.code = code + h.codeSet = true + return h +} + +// Specifies the category that the item belongs to. +func (h *Item) Category(category string) *Item { + h.category = category + h.categorySet = true + return h +} + +// When present indicates the local currency for all transaction +// currency values. Value should be a valid ISO 4217 currency +// code. +func (h *Item) CurrencyCode(currencyCode string) *Item { + h.currencyCode = currencyCode + h.currencyCodeSet = true + return h +} + +func (h *Item) Copy() *Item { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-pageview.go b/vendor/github.com/jpillora/go-ogle-analytics/type-pageview.go new file mode 100644 index 000000000..bc8bc5408 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-pageview.go @@ -0,0 +1,24 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Pageview Hit Type +type Pageview struct { +} + +// NewPageview creates a new Pageview Hit Type. +func NewPageview() *Pageview { + h := &Pageview{} + return h +} + +func (h *Pageview) addFields(v url.Values) error { + return nil +} + +func (h *Pageview) Copy() *Pageview { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-screenview.go b/vendor/github.com/jpillora/go-ogle-analytics/type-screenview.go new file mode 100644 index 000000000..859a16e37 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-screenview.go @@ -0,0 +1,24 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Screenview Hit Type +type Screenview struct { +} + +// NewScreenview creates a new Screenview Hit Type. +func NewScreenview() *Screenview { + h := &Screenview{} + return h +} + +func (h *Screenview) addFields(v url.Values) error { + return nil +} + +func (h *Screenview) Copy() *Screenview { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-social.go b/vendor/github.com/jpillora/go-ogle-analytics/type-social.go new file mode 100644 index 000000000..3f8cb34d3 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-social.go @@ -0,0 +1,41 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Social Hit Type +type Social struct { + network string + action string + actionTarget string +} + +// NewSocial creates a new Social Hit Type. +// Specifies the social network, for example Facebook or Google +// Plus. +// Specifies the social interaction action. For example on +// Google Plus when a user clicks the +1 button, the social +// action is 'plus'. +// Specifies the target of a social interaction. This value +// is typically a URL but can be any text. +func NewSocial(network string, action string, actionTarget string) *Social { + h := &Social{ + network: network, + action: action, + actionTarget: actionTarget, + } + return h +} + +func (h *Social) addFields(v url.Values) error { + v.Add("sn", h.network) + v.Add("sa", h.action) + v.Add("st", h.actionTarget) + return nil +} + +func (h *Social) Copy() *Social { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-timing.go b/vendor/github.com/jpillora/go-ogle-analytics/type-timing.go new file mode 100644 index 000000000..a980520db --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-timing.go @@ -0,0 +1,177 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Timing Hit Type +type Timing struct { + userTimingCategory string + userTimingCategorySet bool + userTimingVariableName string + userTimingVariableNameSet bool + userTimingTime int64 + userTimingTimeSet bool + userTimingLabel string + userTimingLabelSet bool + pageLoadTime int64 + pageLoadTimeSet bool + dNSTime int64 + dNSTimeSet bool + pageDownloadTime int64 + pageDownloadTimeSet bool + redirectResponseTime int64 + redirectResponseTimeSet bool + tCPConnectTime int64 + tCPConnectTimeSet bool + serverResponseTime int64 + serverResponseTimeSet bool + dOMInteractiveTime int64 + dOMInteractiveTimeSet bool + contentLoadTime int64 + contentLoadTimeSet bool +} + +// NewTiming creates a new Timing Hit Type. + +func NewTiming() *Timing { + h := &Timing{} + return h +} + +func (h *Timing) addFields(v url.Values) error { + if h.userTimingCategorySet { + v.Add("utc", h.userTimingCategory) + } + if h.userTimingVariableNameSet { + v.Add("utv", h.userTimingVariableName) + } + if h.userTimingTimeSet { + v.Add("utt", int2str(h.userTimingTime)) + } + if h.userTimingLabelSet { + v.Add("utl", h.userTimingLabel) + } + if h.pageLoadTimeSet { + v.Add("plt", int2str(h.pageLoadTime)) + } + if h.dNSTimeSet { + v.Add("dns", int2str(h.dNSTime)) + } + if h.pageDownloadTimeSet { + v.Add("pdt", int2str(h.pageDownloadTime)) + } + if h.redirectResponseTimeSet { + v.Add("rrt", int2str(h.redirectResponseTime)) + } + if h.tCPConnectTimeSet { + v.Add("tcp", int2str(h.tCPConnectTime)) + } + if h.serverResponseTimeSet { + v.Add("srt", int2str(h.serverResponseTime)) + } + if h.dOMInteractiveTimeSet { + v.Add("dit", int2str(h.dOMInteractiveTime)) + } + if h.contentLoadTimeSet { + v.Add("clt", int2str(h.contentLoadTime)) + } + return nil +} + +// Specifies the user timing category. +func (h *Timing) UserTimingCategory(userTimingCategory string) *Timing { + h.userTimingCategory = userTimingCategory + h.userTimingCategorySet = true + return h +} + +// Specifies the user timing variable. +func (h *Timing) UserTimingVariableName(userTimingVariableName string) *Timing { + h.userTimingVariableName = userTimingVariableName + h.userTimingVariableNameSet = true + return h +} + +// Specifies the user timing value. The value is in milliseconds. +func (h *Timing) UserTimingTime(userTimingTime int64) *Timing { + h.userTimingTime = userTimingTime + h.userTimingTimeSet = true + return h +} + +// Specifies the user timing label. +func (h *Timing) UserTimingLabel(userTimingLabel string) *Timing { + h.userTimingLabel = userTimingLabel + h.userTimingLabelSet = true + return h +} + +// Specifies the time it took for a page to load. The value +// is in milliseconds. +func (h *Timing) PageLoadTime(pageLoadTime int64) *Timing { + h.pageLoadTime = pageLoadTime + h.pageLoadTimeSet = true + return h +} + +// Specifies the time it took to do a DNS lookup.The value +// is in milliseconds. +func (h *Timing) DNSTime(dNSTime int64) *Timing { + h.dNSTime = dNSTime + h.dNSTimeSet = true + return h +} + +// Specifies the time it took for the page to be downloaded. +// The value is in milliseconds. +func (h *Timing) PageDownloadTime(pageDownloadTime int64) *Timing { + h.pageDownloadTime = pageDownloadTime + h.pageDownloadTimeSet = true + return h +} + +// Specifies the time it took for any redirects to happen. +// The value is in milliseconds. +func (h *Timing) RedirectResponseTime(redirectResponseTime int64) *Timing { + h.redirectResponseTime = redirectResponseTime + h.redirectResponseTimeSet = true + return h +} + +// Specifies the time it took for a TCP connection to be made. +// The value is in milliseconds. +func (h *Timing) TCPConnectTime(tCPConnectTime int64) *Timing { + h.tCPConnectTime = tCPConnectTime + h.tCPConnectTimeSet = true + return h +} + +// Specifies the time it took for the server to respond after +// the connect time. The value is in milliseconds. +func (h *Timing) ServerResponseTime(serverResponseTime int64) *Timing { + h.serverResponseTime = serverResponseTime + h.serverResponseTimeSet = true + return h +} + +// Specifies the time it took for Document.readyState to be +// 'interactive'. The value is in milliseconds. +func (h *Timing) DOMInteractiveTime(dOMInteractiveTime int64) *Timing { + h.dOMInteractiveTime = dOMInteractiveTime + h.dOMInteractiveTimeSet = true + return h +} + +// Specifies the time it took for the DOMContentLoaded Event +// to fire. The value is in milliseconds. +func (h *Timing) ContentLoadTime(contentLoadTime int64) *Timing { + h.contentLoadTime = contentLoadTime + h.contentLoadTimeSet = true + return h +} + +func (h *Timing) Copy() *Timing { + c := *h + return &c +} diff --git a/vendor/github.com/jpillora/go-ogle-analytics/type-transaction.go b/vendor/github.com/jpillora/go-ogle-analytics/type-transaction.go new file mode 100644 index 000000000..55c781e03 --- /dev/null +++ b/vendor/github.com/jpillora/go-ogle-analytics/type-transaction.go @@ -0,0 +1,95 @@ +package ga + +import "net/url" + +//WARNING: This file was generated. Do not edit. + +//Transaction Hit Type +type Transaction struct { + iD string + affiliation string + affiliationSet bool + revenue float64 + revenueSet bool + shipping float64 + shippingSet bool + tax float64 + taxSet bool + currencyCode string + currencyCodeSet bool +} + +// NewTransaction creates a new Transaction Hit Type. +// A unique identifier for the transaction. This value should +// be the same for both the Transaction hit and Items hits +// associated to the particular transaction. + +func NewTransaction(iD string) *Transaction { + h := &Transaction{ + iD: iD, + } + return h +} + +func (h *Transaction) addFields(v url.Values) error { + v.Add("ti", h.iD) + if h.affiliationSet { + v.Add("ta", h.affiliation) + } + if h.revenueSet { + v.Add("tr", float2str(h.revenue)) + } + if h.shippingSet { + v.Add("ts", float2str(h.shipping)) + } + if h.taxSet { + v.Add("tt", float2str(h.tax)) + } + if h.currencyCodeSet { + v.Add("cu", h.currencyCode) + } + return nil +} + +// Specifies the affiliation or store name. +func (h *Transaction) Affiliation(affiliation string) *Transaction { + h.affiliation = affiliation + h.affiliationSet = true + return h +} + +// Specifies the total revenue associated with the transaction. +// This value should include any shipping or tax costs. +func (h *Transaction) Revenue(revenue float64) *Transaction { + h.revenue = revenue + h.revenueSet = true + return h +} + +// Specifies the total shipping cost of the transaction. +func (h *Transaction) Shipping(shipping float64) *Transaction { + h.shipping = shipping + h.shippingSet = true + return h +} + +// Specifies the total tax of the transaction. +func (h *Transaction) Tax(tax float64) *Transaction { + h.tax = tax + h.taxSet = true + return h +} + +// When present indicates the local currency for all transaction +// currency values. Value should be a valid ISO 4217 currency +// code. +func (h *Transaction) CurrencyCode(currencyCode string) *Transaction { + h.currencyCode = currencyCode + h.currencyCodeSet = true + return h +} + +func (h *Transaction) Copy() *Transaction { + c := *h + return &c +} diff --git a/vendor/vendor.json b/vendor/vendor.json index 455569319..7ad5231ba 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -518,6 +518,12 @@ "revision": "4ed13390c0acd2ff4e371e64d8b97c8954138243", "revisionTime": "2015-09-07T11:02:28+10:00" }, + { + "checksumSHA1": "f+svTLsUm0KFNDl8cQqPy/M7qGg=", + "path": "github.com/jpillora/go-ogle-analytics", + "revision": "14b04e0594ef6a9fd943363b135656f0ec8c9d0e", + "revisionTime": "2016-12-13T08:58:24Z" + }, { "path": "github.com/koding/cache", "revision": "487fc0ca06f9aa1a02d796f5510784b47d5afae2",