...

Source file src/google.golang.org/api/pagespeedonline/v2/pagespeedonline-gen.go

Documentation: google.golang.org/api/pagespeedonline/v2

     1  // Copyright 2020 Google LLC.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Code generated file. DO NOT EDIT.
     6  
     7  // Package pagespeedonline provides access to the PageSpeed Insights API.
     8  //
     9  // For product documentation, see: https://developers.google.com/speed/docs/insights/v2/getting-started
    10  //
    11  // # Creating a client
    12  //
    13  // Usage example:
    14  //
    15  //	import "google.golang.org/api/pagespeedonline/v2"
    16  //	...
    17  //	ctx := context.Background()
    18  //	pagespeedonlineService, err := pagespeedonline.NewService(ctx)
    19  //
    20  // In this example, Google Application Default Credentials are used for authentication.
    21  //
    22  // For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
    23  //
    24  // # Other authentication options
    25  //
    26  // To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
    27  //
    28  //	pagespeedonlineService, err := pagespeedonline.NewService(ctx, option.WithAPIKey("AIza..."))
    29  //
    30  // To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
    31  //
    32  //	config := &oauth2.Config{...}
    33  //	// ...
    34  //	token, err := config.Exchange(ctx, ...)
    35  //	pagespeedonlineService, err := pagespeedonline.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
    36  //
    37  // See https://godoc.org/google.golang.org/api/option/ for details on options.
    38  package pagespeedonline // import "google.golang.org/api/pagespeedonline/v2"
    39  
    40  import (
    41  	"bytes"
    42  	"context"
    43  	"encoding/json"
    44  	"errors"
    45  	"fmt"
    46  	"io"
    47  	"net/http"
    48  	"net/url"
    49  	"strconv"
    50  	"strings"
    51  
    52  	googleapi "google.golang.org/api/googleapi"
    53  	gensupport "google.golang.org/api/internal/gensupport"
    54  	option "google.golang.org/api/option"
    55  	internaloption "google.golang.org/api/option/internaloption"
    56  	htransport "google.golang.org/api/transport/http"
    57  )
    58  
    59  // Always reference these packages, just in case the auto-generated code
    60  // below doesn't.
    61  var _ = bytes.NewBuffer
    62  var _ = strconv.Itoa
    63  var _ = fmt.Sprintf
    64  var _ = json.NewDecoder
    65  var _ = io.Copy
    66  var _ = url.Parse
    67  var _ = gensupport.MarshalJSON
    68  var _ = googleapi.Version
    69  var _ = errors.New
    70  var _ = strings.Replace
    71  var _ = context.Canceled
    72  var _ = internaloption.WithDefaultEndpoint
    73  
    74  const apiId = "pagespeedonline:v2"
    75  const apiName = "pagespeedonline"
    76  const apiVersion = "v2"
    77  const basePath = "https://www.googleapis.com/pagespeedonline/v2/"
    78  
    79  // NewService creates a new Service.
    80  func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
    81  	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
    82  	client, endpoint, err := htransport.NewClient(ctx, opts...)
    83  	if err != nil {
    84  		return nil, err
    85  	}
    86  	s, err := New(client)
    87  	if err != nil {
    88  		return nil, err
    89  	}
    90  	if endpoint != "" {
    91  		s.BasePath = endpoint
    92  	}
    93  	return s, nil
    94  }
    95  
    96  // New creates a new Service. It uses the provided http.Client for requests.
    97  //
    98  // Deprecated: please use NewService instead.
    99  // To provide a custom HTTP client, use option.WithHTTPClient.
   100  // If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
   101  func New(client *http.Client) (*Service, error) {
   102  	if client == nil {
   103  		return nil, errors.New("client is nil")
   104  	}
   105  	s := &Service{client: client, BasePath: basePath}
   106  	s.Pagespeedapi = NewPagespeedapiService(s)
   107  	return s, nil
   108  }
   109  
   110  type Service struct {
   111  	client    *http.Client
   112  	BasePath  string // API endpoint base URL
   113  	UserAgent string // optional additional User-Agent fragment
   114  
   115  	Pagespeedapi *PagespeedapiService
   116  }
   117  
   118  func (s *Service) userAgent() string {
   119  	if s.UserAgent == "" {
   120  		return googleapi.UserAgent
   121  	}
   122  	return googleapi.UserAgent + " " + s.UserAgent
   123  }
   124  
   125  func NewPagespeedapiService(s *Service) *PagespeedapiService {
   126  	rs := &PagespeedapiService{s: s}
   127  	return rs
   128  }
   129  
   130  type PagespeedapiService struct {
   131  	s *Service
   132  }
   133  
   134  type PagespeedApiFormatStringV2 struct {
   135  	// Args: List of arguments for the format string.
   136  	Args []*PagespeedApiFormatStringV2Args `json:"args,omitempty"`
   137  
   138  	// Format: A localized format string with {{FOO}} placeholders, where
   139  	// 'FOO' is the key of the argument whose value should be substituted.
   140  	// For HYPERLINK arguments, the format string will instead contain
   141  	// {{BEGIN_FOO}} and {{END_FOO}} for the argument with key 'FOO'.
   142  	Format string `json:"format,omitempty"`
   143  
   144  	// ForceSendFields is a list of field names (e.g. "Args") to
   145  	// unconditionally include in API requests. By default, fields with
   146  	// empty values are omitted from API requests. However, any non-pointer,
   147  	// non-interface field appearing in ForceSendFields will be sent to the
   148  	// server regardless of whether the field is empty or not. This may be
   149  	// used to include empty fields in Patch requests.
   150  	ForceSendFields []string `json:"-"`
   151  
   152  	// NullFields is a list of field names (e.g. "Args") to include in API
   153  	// requests with the JSON null value. By default, fields with empty
   154  	// values are omitted from API requests. However, any field with an
   155  	// empty value appearing in NullFields will be sent to the server as
   156  	// null. It is an error if a field in this list has a non-empty value.
   157  	// This may be used to include null fields in Patch requests.
   158  	NullFields []string `json:"-"`
   159  }
   160  
   161  func (s *PagespeedApiFormatStringV2) MarshalJSON() ([]byte, error) {
   162  	type NoMethod PagespeedApiFormatStringV2
   163  	raw := NoMethod(*s)
   164  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   165  }
   166  
   167  type PagespeedApiFormatStringV2Args struct {
   168  	// Key: The placeholder key for this arg, as a string.
   169  	Key string `json:"key,omitempty"`
   170  
   171  	// Rects: The screen rectangles being referred to, with dimensions
   172  	// measured in CSS pixels. This is only ever used for SNAPSHOT_RECT
   173  	// arguments. If this is absent for a SNAPSHOT_RECT argument, it means
   174  	// that that argument refers to the entire snapshot.
   175  	Rects []*PagespeedApiFormatStringV2ArgsRects `json:"rects,omitempty"`
   176  
   177  	// SecondaryRects: Secondary screen rectangles being referred to, with
   178  	// dimensions measured in CSS pixels. This is only ever used for
   179  	// SNAPSHOT_RECT arguments.
   180  	SecondaryRects []*PagespeedApiFormatStringV2ArgsSecondaryRects `json:"secondary_rects,omitempty"`
   181  
   182  	// Type: Type of argument. One of URL, STRING_LITERAL, INT_LITERAL,
   183  	// BYTES, DURATION, VERBATIM_STRING, PERCENTAGE, HYPERLINK, or
   184  	// SNAPSHOT_RECT.
   185  	Type string `json:"type,omitempty"`
   186  
   187  	// Value: Argument value, as a localized string.
   188  	Value string `json:"value,omitempty"`
   189  
   190  	// ForceSendFields is a list of field names (e.g. "Key") to
   191  	// unconditionally include in API requests. By default, fields with
   192  	// empty values are omitted from API requests. However, any non-pointer,
   193  	// non-interface field appearing in ForceSendFields will be sent to the
   194  	// server regardless of whether the field is empty or not. This may be
   195  	// used to include empty fields in Patch requests.
   196  	ForceSendFields []string `json:"-"`
   197  
   198  	// NullFields is a list of field names (e.g. "Key") to include in API
   199  	// requests with the JSON null value. By default, fields with empty
   200  	// values are omitted from API requests. However, any field with an
   201  	// empty value appearing in NullFields will be sent to the server as
   202  	// null. It is an error if a field in this list has a non-empty value.
   203  	// This may be used to include null fields in Patch requests.
   204  	NullFields []string `json:"-"`
   205  }
   206  
   207  func (s *PagespeedApiFormatStringV2Args) MarshalJSON() ([]byte, error) {
   208  	type NoMethod PagespeedApiFormatStringV2Args
   209  	raw := NoMethod(*s)
   210  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   211  }
   212  
   213  type PagespeedApiFormatStringV2ArgsRects struct {
   214  	// Height: The height of the rect.
   215  	Height int64 `json:"height,omitempty"`
   216  
   217  	// Left: The left coordinate of the rect, in page coordinates.
   218  	Left int64 `json:"left,omitempty"`
   219  
   220  	// Top: The top coordinate of the rect, in page coordinates.
   221  	Top int64 `json:"top,omitempty"`
   222  
   223  	// Width: The width of the rect.
   224  	Width int64 `json:"width,omitempty"`
   225  
   226  	// ForceSendFields is a list of field names (e.g. "Height") to
   227  	// unconditionally include in API requests. By default, fields with
   228  	// empty values are omitted from API requests. However, any non-pointer,
   229  	// non-interface field appearing in ForceSendFields will be sent to the
   230  	// server regardless of whether the field is empty or not. This may be
   231  	// used to include empty fields in Patch requests.
   232  	ForceSendFields []string `json:"-"`
   233  
   234  	// NullFields is a list of field names (e.g. "Height") to include in API
   235  	// requests with the JSON null value. By default, fields with empty
   236  	// values are omitted from API requests. However, any field with an
   237  	// empty value appearing in NullFields will be sent to the server as
   238  	// null. It is an error if a field in this list has a non-empty value.
   239  	// This may be used to include null fields in Patch requests.
   240  	NullFields []string `json:"-"`
   241  }
   242  
   243  func (s *PagespeedApiFormatStringV2ArgsRects) MarshalJSON() ([]byte, error) {
   244  	type NoMethod PagespeedApiFormatStringV2ArgsRects
   245  	raw := NoMethod(*s)
   246  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   247  }
   248  
   249  type PagespeedApiFormatStringV2ArgsSecondaryRects struct {
   250  	// Height: The height of the rect.
   251  	Height int64 `json:"height,omitempty"`
   252  
   253  	// Left: The left coordinate of the rect, in page coordinates.
   254  	Left int64 `json:"left,omitempty"`
   255  
   256  	// Top: The top coordinate of the rect, in page coordinates.
   257  	Top int64 `json:"top,omitempty"`
   258  
   259  	// Width: The width of the rect.
   260  	Width int64 `json:"width,omitempty"`
   261  
   262  	// ForceSendFields is a list of field names (e.g. "Height") to
   263  	// unconditionally include in API requests. By default, fields with
   264  	// empty values are omitted from API requests. However, any non-pointer,
   265  	// non-interface field appearing in ForceSendFields will be sent to the
   266  	// server regardless of whether the field is empty or not. This may be
   267  	// used to include empty fields in Patch requests.
   268  	ForceSendFields []string `json:"-"`
   269  
   270  	// NullFields is a list of field names (e.g. "Height") to include in API
   271  	// requests with the JSON null value. By default, fields with empty
   272  	// values are omitted from API requests. However, any field with an
   273  	// empty value appearing in NullFields will be sent to the server as
   274  	// null. It is an error if a field in this list has a non-empty value.
   275  	// This may be used to include null fields in Patch requests.
   276  	NullFields []string `json:"-"`
   277  }
   278  
   279  func (s *PagespeedApiFormatStringV2ArgsSecondaryRects) MarshalJSON() ([]byte, error) {
   280  	type NoMethod PagespeedApiFormatStringV2ArgsSecondaryRects
   281  	raw := NoMethod(*s)
   282  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   283  }
   284  
   285  type PagespeedApiImageV2 struct {
   286  	// Data: Image data base64 encoded.
   287  	Data string `json:"data,omitempty"`
   288  
   289  	// Height: Height of screenshot in pixels.
   290  	Height int64 `json:"height,omitempty"`
   291  
   292  	// Key: Unique string key, if any, identifying this image.
   293  	Key string `json:"key,omitempty"`
   294  
   295  	// MimeType: Mime type of image data (e.g. "image/jpeg").
   296  	MimeType string `json:"mime_type,omitempty"`
   297  
   298  	// PageRect: The region of the page that is captured by this image, with
   299  	// dimensions measured in CSS pixels.
   300  	PageRect *PagespeedApiImageV2PageRect `json:"page_rect,omitempty"`
   301  
   302  	// Width: Width of screenshot in pixels.
   303  	Width int64 `json:"width,omitempty"`
   304  
   305  	// ForceSendFields is a list of field names (e.g. "Data") to
   306  	// unconditionally include in API requests. By default, fields with
   307  	// empty values are omitted from API requests. However, any non-pointer,
   308  	// non-interface field appearing in ForceSendFields will be sent to the
   309  	// server regardless of whether the field is empty or not. This may be
   310  	// used to include empty fields in Patch requests.
   311  	ForceSendFields []string `json:"-"`
   312  
   313  	// NullFields is a list of field names (e.g. "Data") to include in API
   314  	// requests with the JSON null value. By default, fields with empty
   315  	// values are omitted from API requests. However, any field with an
   316  	// empty value appearing in NullFields will be sent to the server as
   317  	// null. It is an error if a field in this list has a non-empty value.
   318  	// This may be used to include null fields in Patch requests.
   319  	NullFields []string `json:"-"`
   320  }
   321  
   322  func (s *PagespeedApiImageV2) MarshalJSON() ([]byte, error) {
   323  	type NoMethod PagespeedApiImageV2
   324  	raw := NoMethod(*s)
   325  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   326  }
   327  
   328  // PagespeedApiImageV2PageRect: The region of the page that is captured
   329  // by this image, with dimensions measured in CSS pixels.
   330  type PagespeedApiImageV2PageRect struct {
   331  	// Height: The height of the rect.
   332  	Height int64 `json:"height,omitempty"`
   333  
   334  	// Left: The left coordinate of the rect, in page coordinates.
   335  	Left int64 `json:"left,omitempty"`
   336  
   337  	// Top: The top coordinate of the rect, in page coordinates.
   338  	Top int64 `json:"top,omitempty"`
   339  
   340  	// Width: The width of the rect.
   341  	Width int64 `json:"width,omitempty"`
   342  
   343  	// ForceSendFields is a list of field names (e.g. "Height") to
   344  	// unconditionally include in API requests. By default, fields with
   345  	// empty values are omitted from API requests. However, any non-pointer,
   346  	// non-interface field appearing in ForceSendFields will be sent to the
   347  	// server regardless of whether the field is empty or not. This may be
   348  	// used to include empty fields in Patch requests.
   349  	ForceSendFields []string `json:"-"`
   350  
   351  	// NullFields is a list of field names (e.g. "Height") to include in API
   352  	// requests with the JSON null value. By default, fields with empty
   353  	// values are omitted from API requests. However, any field with an
   354  	// empty value appearing in NullFields will be sent to the server as
   355  	// null. It is an error if a field in this list has a non-empty value.
   356  	// This may be used to include null fields in Patch requests.
   357  	NullFields []string `json:"-"`
   358  }
   359  
   360  func (s *PagespeedApiImageV2PageRect) MarshalJSON() ([]byte, error) {
   361  	type NoMethod PagespeedApiImageV2PageRect
   362  	raw := NoMethod(*s)
   363  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   364  }
   365  
   366  type Result struct {
   367  	// CaptchaResult: The captcha verify result
   368  	CaptchaResult string `json:"captchaResult,omitempty"`
   369  
   370  	// FormattedResults: Localized PageSpeed results. Contains a ruleResults
   371  	// entry for each PageSpeed rule instantiated and run by the server.
   372  	FormattedResults *ResultFormattedResults `json:"formattedResults,omitempty"`
   373  
   374  	// Id: Canonicalized and final URL for the document, after following
   375  	// page redirects (if any).
   376  	Id string `json:"id,omitempty"`
   377  
   378  	// InvalidRules: List of rules that were specified in the request, but
   379  	// which the server did not know how to instantiate.
   380  	InvalidRules []string `json:"invalidRules,omitempty"`
   381  
   382  	// Kind: Kind of result.
   383  	Kind string `json:"kind,omitempty"`
   384  
   385  	// PageStats: Summary statistics for the page, such as number of
   386  	// JavaScript bytes, number of HTML bytes, etc.
   387  	PageStats *ResultPageStats `json:"pageStats,omitempty"`
   388  
   389  	// ResponseCode: Response code for the document. 200 indicates a normal
   390  	// page load. 4xx/5xx indicates an error.
   391  	ResponseCode int64 `json:"responseCode,omitempty"`
   392  
   393  	// RuleGroups: A map with one entry for each rule group in these
   394  	// results.
   395  	RuleGroups map[string]ResultRuleGroups `json:"ruleGroups,omitempty"`
   396  
   397  	// Screenshot: Base64-encoded screenshot of the page that was analyzed.
   398  	Screenshot *PagespeedApiImageV2 `json:"screenshot,omitempty"`
   399  
   400  	// Title: Title of the page, as displayed in the browser's title bar.
   401  	Title string `json:"title,omitempty"`
   402  
   403  	// Version: The version of PageSpeed used to generate these results.
   404  	Version *ResultVersion `json:"version,omitempty"`
   405  
   406  	// ServerResponse contains the HTTP response code and headers from the
   407  	// server.
   408  	googleapi.ServerResponse `json:"-"`
   409  
   410  	// ForceSendFields is a list of field names (e.g. "CaptchaResult") to
   411  	// unconditionally include in API requests. By default, fields with
   412  	// empty values are omitted from API requests. However, any non-pointer,
   413  	// non-interface field appearing in ForceSendFields will be sent to the
   414  	// server regardless of whether the field is empty or not. This may be
   415  	// used to include empty fields in Patch requests.
   416  	ForceSendFields []string `json:"-"`
   417  
   418  	// NullFields is a list of field names (e.g. "CaptchaResult") to include
   419  	// in API requests with the JSON null value. By default, fields with
   420  	// empty values are omitted from API requests. However, any field with
   421  	// an empty value appearing in NullFields will be sent to the server as
   422  	// null. It is an error if a field in this list has a non-empty value.
   423  	// This may be used to include null fields in Patch requests.
   424  	NullFields []string `json:"-"`
   425  }
   426  
   427  func (s *Result) MarshalJSON() ([]byte, error) {
   428  	type NoMethod Result
   429  	raw := NoMethod(*s)
   430  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   431  }
   432  
   433  // ResultFormattedResults: Localized PageSpeed results. Contains a
   434  // ruleResults entry for each PageSpeed rule instantiated and run by the
   435  // server.
   436  type ResultFormattedResults struct {
   437  	// Locale: The locale of the formattedResults, e.g. "en_US".
   438  	Locale string `json:"locale,omitempty"`
   439  
   440  	// RuleResults: Dictionary of formatted rule results, with one entry for
   441  	// each PageSpeed rule instantiated and run by the server.
   442  	RuleResults map[string]ResultFormattedResultsRuleResults `json:"ruleResults,omitempty"`
   443  
   444  	// ForceSendFields is a list of field names (e.g. "Locale") to
   445  	// unconditionally include in API requests. By default, fields with
   446  	// empty values are omitted from API requests. However, any non-pointer,
   447  	// non-interface field appearing in ForceSendFields will be sent to the
   448  	// server regardless of whether the field is empty or not. This may be
   449  	// used to include empty fields in Patch requests.
   450  	ForceSendFields []string `json:"-"`
   451  
   452  	// NullFields is a list of field names (e.g. "Locale") to include in API
   453  	// requests with the JSON null value. By default, fields with empty
   454  	// values are omitted from API requests. However, any field with an
   455  	// empty value appearing in NullFields will be sent to the server as
   456  	// null. It is an error if a field in this list has a non-empty value.
   457  	// This may be used to include null fields in Patch requests.
   458  	NullFields []string `json:"-"`
   459  }
   460  
   461  func (s *ResultFormattedResults) MarshalJSON() ([]byte, error) {
   462  	type NoMethod ResultFormattedResults
   463  	raw := NoMethod(*s)
   464  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   465  }
   466  
   467  // ResultFormattedResultsRuleResults: The enum-like identifier for this
   468  // rule. For instance "EnableKeepAlive" or "AvoidCssImport". Not
   469  // localized.
   470  type ResultFormattedResultsRuleResults struct {
   471  	// Groups: List of rule groups that this rule belongs to. Each entry in
   472  	// the list is one of "SPEED" or "USABILITY".
   473  	Groups []string `json:"groups,omitempty"`
   474  
   475  	// LocalizedRuleName: Localized name of the rule, intended for
   476  	// presentation to a user.
   477  	LocalizedRuleName string `json:"localizedRuleName,omitempty"`
   478  
   479  	// RuleImpact: The impact (unbounded floating point value) that
   480  	// implementing the suggestions for this rule would have on making the
   481  	// page faster. Impact is comparable between rules to determine which
   482  	// rule's suggestions would have a higher or lower impact on making a
   483  	// page faster. For instance, if enabling compression would save 1MB,
   484  	// while optimizing images would save 500kB, the enable compression rule
   485  	// would have 2x the impact of the image optimization rule, all other
   486  	// things being equal.
   487  	RuleImpact float64 `json:"ruleImpact,omitempty"`
   488  
   489  	// Summary: A brief summary description for the rule, indicating at a
   490  	// high level what should be done to follow the rule and what benefit
   491  	// can be gained by doing so.
   492  	Summary *PagespeedApiFormatStringV2 `json:"summary,omitempty"`
   493  
   494  	// UrlBlocks: List of blocks of URLs. Each block may contain a heading
   495  	// and a list of URLs. Each URL may optionally include additional
   496  	// details.
   497  	UrlBlocks []*ResultFormattedResultsRuleResultsUrlBlocks `json:"urlBlocks,omitempty"`
   498  
   499  	// ForceSendFields is a list of field names (e.g. "Groups") to
   500  	// unconditionally include in API requests. By default, fields with
   501  	// empty values are omitted from API requests. However, any non-pointer,
   502  	// non-interface field appearing in ForceSendFields will be sent to the
   503  	// server regardless of whether the field is empty or not. This may be
   504  	// used to include empty fields in Patch requests.
   505  	ForceSendFields []string `json:"-"`
   506  
   507  	// NullFields is a list of field names (e.g. "Groups") to include in API
   508  	// requests with the JSON null value. By default, fields with empty
   509  	// values are omitted from API requests. However, any field with an
   510  	// empty value appearing in NullFields will be sent to the server as
   511  	// null. It is an error if a field in this list has a non-empty value.
   512  	// This may be used to include null fields in Patch requests.
   513  	NullFields []string `json:"-"`
   514  }
   515  
   516  func (s *ResultFormattedResultsRuleResults) MarshalJSON() ([]byte, error) {
   517  	type NoMethod ResultFormattedResultsRuleResults
   518  	raw := NoMethod(*s)
   519  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   520  }
   521  
   522  func (s *ResultFormattedResultsRuleResults) UnmarshalJSON(data []byte) error {
   523  	type NoMethod ResultFormattedResultsRuleResults
   524  	var s1 struct {
   525  		RuleImpact gensupport.JSONFloat64 `json:"ruleImpact"`
   526  		*NoMethod
   527  	}
   528  	s1.NoMethod = (*NoMethod)(s)
   529  	if err := json.Unmarshal(data, &s1); err != nil {
   530  		return err
   531  	}
   532  	s.RuleImpact = float64(s1.RuleImpact)
   533  	return nil
   534  }
   535  
   536  type ResultFormattedResultsRuleResultsUrlBlocks struct {
   537  	// Header: Heading to be displayed with the list of URLs.
   538  	Header *PagespeedApiFormatStringV2 `json:"header,omitempty"`
   539  
   540  	// Urls: List of entries that provide information about URLs in the url
   541  	// block. Optional.
   542  	Urls []*ResultFormattedResultsRuleResultsUrlBlocksUrls `json:"urls,omitempty"`
   543  
   544  	// ForceSendFields is a list of field names (e.g. "Header") to
   545  	// unconditionally include in API requests. By default, fields with
   546  	// empty values are omitted from API requests. However, any non-pointer,
   547  	// non-interface field appearing in ForceSendFields will be sent to the
   548  	// server regardless of whether the field is empty or not. This may be
   549  	// used to include empty fields in Patch requests.
   550  	ForceSendFields []string `json:"-"`
   551  
   552  	// NullFields is a list of field names (e.g. "Header") to include in API
   553  	// requests with the JSON null value. By default, fields with empty
   554  	// values are omitted from API requests. However, any field with an
   555  	// empty value appearing in NullFields will be sent to the server as
   556  	// null. It is an error if a field in this list has a non-empty value.
   557  	// This may be used to include null fields in Patch requests.
   558  	NullFields []string `json:"-"`
   559  }
   560  
   561  func (s *ResultFormattedResultsRuleResultsUrlBlocks) MarshalJSON() ([]byte, error) {
   562  	type NoMethod ResultFormattedResultsRuleResultsUrlBlocks
   563  	raw := NoMethod(*s)
   564  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   565  }
   566  
   567  type ResultFormattedResultsRuleResultsUrlBlocksUrls struct {
   568  	// Details: List of entries that provide additional details about a
   569  	// single URL. Optional.
   570  	Details []*PagespeedApiFormatStringV2 `json:"details,omitempty"`
   571  
   572  	// Result: A format string that gives information about the URL, and a
   573  	// list of arguments for that format string.
   574  	Result *PagespeedApiFormatStringV2 `json:"result,omitempty"`
   575  
   576  	// ForceSendFields is a list of field names (e.g. "Details") to
   577  	// unconditionally include in API requests. By default, fields with
   578  	// empty values are omitted from API requests. However, any non-pointer,
   579  	// non-interface field appearing in ForceSendFields will be sent to the
   580  	// server regardless of whether the field is empty or not. This may be
   581  	// used to include empty fields in Patch requests.
   582  	ForceSendFields []string `json:"-"`
   583  
   584  	// NullFields is a list of field names (e.g. "Details") to include in
   585  	// API requests with the JSON null value. By default, fields with empty
   586  	// values are omitted from API requests. However, any field with an
   587  	// empty value appearing in NullFields will be sent to the server as
   588  	// null. It is an error if a field in this list has a non-empty value.
   589  	// This may be used to include null fields in Patch requests.
   590  	NullFields []string `json:"-"`
   591  }
   592  
   593  func (s *ResultFormattedResultsRuleResultsUrlBlocksUrls) MarshalJSON() ([]byte, error) {
   594  	type NoMethod ResultFormattedResultsRuleResultsUrlBlocksUrls
   595  	raw := NoMethod(*s)
   596  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   597  }
   598  
   599  // ResultPageStats: Summary statistics for the page, such as number of
   600  // JavaScript bytes, number of HTML bytes, etc.
   601  type ResultPageStats struct {
   602  	// CssResponseBytes: Number of uncompressed response bytes for CSS
   603  	// resources on the page.
   604  	CssResponseBytes int64 `json:"cssResponseBytes,omitempty,string"`
   605  
   606  	// FlashResponseBytes: Number of response bytes for flash resources on
   607  	// the page.
   608  	FlashResponseBytes int64 `json:"flashResponseBytes,omitempty,string"`
   609  
   610  	// HtmlResponseBytes: Number of uncompressed response bytes for the main
   611  	// HTML document and all iframes on the page.
   612  	HtmlResponseBytes int64 `json:"htmlResponseBytes,omitempty,string"`
   613  
   614  	// ImageResponseBytes: Number of response bytes for image resources on
   615  	// the page.
   616  	ImageResponseBytes int64 `json:"imageResponseBytes,omitempty,string"`
   617  
   618  	// JavascriptResponseBytes: Number of uncompressed response bytes for JS
   619  	// resources on the page.
   620  	JavascriptResponseBytes int64 `json:"javascriptResponseBytes,omitempty,string"`
   621  
   622  	// NumberCssResources: Number of CSS resources referenced by the page.
   623  	NumberCssResources int64 `json:"numberCssResources,omitempty"`
   624  
   625  	// NumberHosts: Number of unique hosts referenced by the page.
   626  	NumberHosts int64 `json:"numberHosts,omitempty"`
   627  
   628  	// NumberJsResources: Number of JavaScript resources referenced by the
   629  	// page.
   630  	NumberJsResources int64 `json:"numberJsResources,omitempty"`
   631  
   632  	// NumberResources: Number of HTTP resources loaded by the page.
   633  	NumberResources int64 `json:"numberResources,omitempty"`
   634  
   635  	// NumberStaticResources: Number of static (i.e. cacheable) resources on
   636  	// the page.
   637  	NumberStaticResources int64 `json:"numberStaticResources,omitempty"`
   638  
   639  	// OtherResponseBytes: Number of response bytes for other resources on
   640  	// the page.
   641  	OtherResponseBytes int64 `json:"otherResponseBytes,omitempty,string"`
   642  
   643  	// TextResponseBytes: Number of uncompressed response bytes for text
   644  	// resources not covered by other statistics (i.e non-HTML, non-script,
   645  	// non-CSS resources) on the page.
   646  	TextResponseBytes int64 `json:"textResponseBytes,omitempty,string"`
   647  
   648  	// TotalRequestBytes: Total size of all request bytes sent by the page.
   649  	TotalRequestBytes int64 `json:"totalRequestBytes,omitempty,string"`
   650  
   651  	// ForceSendFields is a list of field names (e.g. "CssResponseBytes") to
   652  	// unconditionally include in API requests. By default, fields with
   653  	// empty values are omitted from API requests. However, any non-pointer,
   654  	// non-interface field appearing in ForceSendFields will be sent to the
   655  	// server regardless of whether the field is empty or not. This may be
   656  	// used to include empty fields in Patch requests.
   657  	ForceSendFields []string `json:"-"`
   658  
   659  	// NullFields is a list of field names (e.g. "CssResponseBytes") to
   660  	// include in API requests with the JSON null value. By default, fields
   661  	// with empty values are omitted from API requests. However, any field
   662  	// with an empty value appearing in NullFields will be sent to the
   663  	// server as null. It is an error if a field in this list has a
   664  	// non-empty value. This may be used to include null fields in Patch
   665  	// requests.
   666  	NullFields []string `json:"-"`
   667  }
   668  
   669  func (s *ResultPageStats) MarshalJSON() ([]byte, error) {
   670  	type NoMethod ResultPageStats
   671  	raw := NoMethod(*s)
   672  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   673  }
   674  
   675  // ResultRuleGroups: The name of this rule group: one of "SPEED" or
   676  // "USABILITY".
   677  type ResultRuleGroups struct {
   678  	// Score: The score (0-100) for this rule group, which indicates how
   679  	// much better a page could be in that category (e.g. how much faster,
   680  	// or how much more usable). A high score indicates little room for
   681  	// improvement, while a lower score indicates more room for improvement.
   682  	Score int64 `json:"score,omitempty"`
   683  
   684  	// ForceSendFields is a list of field names (e.g. "Score") to
   685  	// unconditionally include in API requests. By default, fields with
   686  	// empty values are omitted from API requests. However, any non-pointer,
   687  	// non-interface field appearing in ForceSendFields will be sent to the
   688  	// server regardless of whether the field is empty or not. This may be
   689  	// used to include empty fields in Patch requests.
   690  	ForceSendFields []string `json:"-"`
   691  
   692  	// NullFields is a list of field names (e.g. "Score") to include in API
   693  	// requests with the JSON null value. By default, fields with empty
   694  	// values are omitted from API requests. However, any field with an
   695  	// empty value appearing in NullFields will be sent to the server as
   696  	// null. It is an error if a field in this list has a non-empty value.
   697  	// This may be used to include null fields in Patch requests.
   698  	NullFields []string `json:"-"`
   699  }
   700  
   701  func (s *ResultRuleGroups) MarshalJSON() ([]byte, error) {
   702  	type NoMethod ResultRuleGroups
   703  	raw := NoMethod(*s)
   704  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   705  }
   706  
   707  // ResultVersion: The version of PageSpeed used to generate these
   708  // results.
   709  type ResultVersion struct {
   710  	// Major: The major version number of PageSpeed used to generate these
   711  	// results.
   712  	Major int64 `json:"major,omitempty"`
   713  
   714  	// Minor: The minor version number of PageSpeed used to generate these
   715  	// results.
   716  	Minor int64 `json:"minor,omitempty"`
   717  
   718  	// ForceSendFields is a list of field names (e.g. "Major") to
   719  	// unconditionally include in API requests. By default, fields with
   720  	// empty values are omitted from API requests. However, any non-pointer,
   721  	// non-interface field appearing in ForceSendFields will be sent to the
   722  	// server regardless of whether the field is empty or not. This may be
   723  	// used to include empty fields in Patch requests.
   724  	ForceSendFields []string `json:"-"`
   725  
   726  	// NullFields is a list of field names (e.g. "Major") to include in API
   727  	// requests with the JSON null value. By default, fields with empty
   728  	// values are omitted from API requests. However, any field with an
   729  	// empty value appearing in NullFields will be sent to the server as
   730  	// null. It is an error if a field in this list has a non-empty value.
   731  	// This may be used to include null fields in Patch requests.
   732  	NullFields []string `json:"-"`
   733  }
   734  
   735  func (s *ResultVersion) MarshalJSON() ([]byte, error) {
   736  	type NoMethod ResultVersion
   737  	raw := NoMethod(*s)
   738  	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
   739  }
   740  
   741  // method id "pagespeedonline.pagespeedapi.runpagespeed":
   742  
   743  type PagespeedapiRunpagespeedCall struct {
   744  	s            *Service
   745  	urlParams_   gensupport.URLParams
   746  	ifNoneMatch_ string
   747  	ctx_         context.Context
   748  	header_      http.Header
   749  }
   750  
   751  // Runpagespeed: Runs PageSpeed analysis on the page at the specified
   752  // URL, and returns PageSpeed scores, a list of suggestions to make that
   753  // page faster, and other information.
   754  func (r *PagespeedapiService) Runpagespeed(url string) *PagespeedapiRunpagespeedCall {
   755  	c := &PagespeedapiRunpagespeedCall{s: r.s, urlParams_: make(gensupport.URLParams)}
   756  	c.urlParams_.Set("url", url)
   757  	return c
   758  }
   759  
   760  // FilterThirdPartyResources sets the optional parameter
   761  // "filter_third_party_resources": Indicates if third party resources
   762  // should be filtered out before PageSpeed analysis.
   763  func (c *PagespeedapiRunpagespeedCall) FilterThirdPartyResources(filterThirdPartyResources bool) *PagespeedapiRunpagespeedCall {
   764  	c.urlParams_.Set("filter_third_party_resources", fmt.Sprint(filterThirdPartyResources))
   765  	return c
   766  }
   767  
   768  // Locale sets the optional parameter "locale": The locale used to
   769  // localize formatted results
   770  func (c *PagespeedapiRunpagespeedCall) Locale(locale string) *PagespeedapiRunpagespeedCall {
   771  	c.urlParams_.Set("locale", locale)
   772  	return c
   773  }
   774  
   775  // Rule sets the optional parameter "rule": A PageSpeed rule to run; if
   776  // none are given, all rules are run
   777  func (c *PagespeedapiRunpagespeedCall) Rule(rule ...string) *PagespeedapiRunpagespeedCall {
   778  	c.urlParams_.SetMulti("rule", append([]string{}, rule...))
   779  	return c
   780  }
   781  
   782  // Screenshot sets the optional parameter "screenshot": Indicates if
   783  // binary data containing a screenshot should be included
   784  func (c *PagespeedapiRunpagespeedCall) Screenshot(screenshot bool) *PagespeedapiRunpagespeedCall {
   785  	c.urlParams_.Set("screenshot", fmt.Sprint(screenshot))
   786  	return c
   787  }
   788  
   789  // Strategy sets the optional parameter "strategy": The analysis
   790  // strategy to use
   791  //
   792  // Possible values:
   793  //
   794  //	"desktop" - Fetch and analyze the URL for desktop browsers
   795  //	"mobile" - Fetch and analyze the URL for mobile devices
   796  func (c *PagespeedapiRunpagespeedCall) Strategy(strategy string) *PagespeedapiRunpagespeedCall {
   797  	c.urlParams_.Set("strategy", strategy)
   798  	return c
   799  }
   800  
   801  // Fields allows partial responses to be retrieved. See
   802  // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
   803  // for more information.
   804  func (c *PagespeedapiRunpagespeedCall) Fields(s ...googleapi.Field) *PagespeedapiRunpagespeedCall {
   805  	c.urlParams_.Set("fields", googleapi.CombineFields(s))
   806  	return c
   807  }
   808  
   809  // IfNoneMatch sets the optional parameter which makes the operation
   810  // fail if the object's ETag matches the given value. This is useful for
   811  // getting updates only after the object has changed since the last
   812  // request. Use googleapi.IsNotModified to check whether the response
   813  // error from Do is the result of In-None-Match.
   814  func (c *PagespeedapiRunpagespeedCall) IfNoneMatch(entityTag string) *PagespeedapiRunpagespeedCall {
   815  	c.ifNoneMatch_ = entityTag
   816  	return c
   817  }
   818  
   819  // Context sets the context to be used in this call's Do method. Any
   820  // pending HTTP request will be aborted if the provided context is
   821  // canceled.
   822  func (c *PagespeedapiRunpagespeedCall) Context(ctx context.Context) *PagespeedapiRunpagespeedCall {
   823  	c.ctx_ = ctx
   824  	return c
   825  }
   826  
   827  // Header returns an http.Header that can be modified by the caller to
   828  // add HTTP headers to the request.
   829  func (c *PagespeedapiRunpagespeedCall) Header() http.Header {
   830  	if c.header_ == nil {
   831  		c.header_ = make(http.Header)
   832  	}
   833  	return c.header_
   834  }
   835  
   836  func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) {
   837  	reqHeaders := make(http.Header)
   838  	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200514")
   839  	for k, v := range c.header_ {
   840  		reqHeaders[k] = v
   841  	}
   842  	reqHeaders.Set("User-Agent", c.s.userAgent())
   843  	if c.ifNoneMatch_ != "" {
   844  		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
   845  	}
   846  	var body io.Reader = nil
   847  	c.urlParams_.Set("alt", alt)
   848  	c.urlParams_.Set("prettyPrint", "false")
   849  	urls := googleapi.ResolveRelative(c.s.BasePath, "runPagespeed")
   850  	urls += "?" + c.urlParams_.Encode()
   851  	req, err := http.NewRequest("GET", urls, body)
   852  	if err != nil {
   853  		return nil, err
   854  	}
   855  	req.Header = reqHeaders
   856  	return gensupport.SendRequest(c.ctx_, c.s.client, req)
   857  }
   858  
   859  // Do executes the "pagespeedonline.pagespeedapi.runpagespeed" call.
   860  // Exactly one of *Result or error will be non-nil. Any non-2xx status
   861  // code is an error. Response headers are in either
   862  // *Result.ServerResponse.Header or (if a response was returned at all)
   863  // in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
   864  // check whether the returned error was because http.StatusNotModified
   865  // was returned.
   866  func (c *PagespeedapiRunpagespeedCall) Do(opts ...googleapi.CallOption) (*Result, error) {
   867  	gensupport.SetOptions(c.urlParams_, opts...)
   868  	res, err := c.doRequest("json")
   869  	if res != nil && res.StatusCode == http.StatusNotModified {
   870  		if res.Body != nil {
   871  			res.Body.Close()
   872  		}
   873  		return nil, &googleapi.Error{
   874  			Code:   res.StatusCode,
   875  			Header: res.Header,
   876  		}
   877  	}
   878  	if err != nil {
   879  		return nil, err
   880  	}
   881  	defer googleapi.CloseBody(res)
   882  	if err := googleapi.CheckResponse(res); err != nil {
   883  		return nil, err
   884  	}
   885  	ret := &Result{
   886  		ServerResponse: googleapi.ServerResponse{
   887  			Header:         res.Header,
   888  			HTTPStatusCode: res.StatusCode,
   889  		},
   890  	}
   891  	target := &ret
   892  	if err := gensupport.DecodeResponse(target, res); err != nil {
   893  		return nil, err
   894  	}
   895  	return ret, nil
   896  	// {
   897  	//   "description": "Runs PageSpeed analysis on the page at the specified URL, and returns PageSpeed scores, a list of suggestions to make that page faster, and other information.",
   898  	//   "httpMethod": "GET",
   899  	//   "id": "pagespeedonline.pagespeedapi.runpagespeed",
   900  	//   "parameterOrder": [
   901  	//     "url"
   902  	//   ],
   903  	//   "parameters": {
   904  	//     "filter_third_party_resources": {
   905  	//       "default": "false",
   906  	//       "description": "Indicates if third party resources should be filtered out before PageSpeed analysis.",
   907  	//       "location": "query",
   908  	//       "type": "boolean"
   909  	//     },
   910  	//     "locale": {
   911  	//       "description": "The locale used to localize formatted results",
   912  	//       "location": "query",
   913  	//       "pattern": "[a-zA-Z]+(_[a-zA-Z]+)?",
   914  	//       "type": "string"
   915  	//     },
   916  	//     "rule": {
   917  	//       "description": "A PageSpeed rule to run; if none are given, all rules are run",
   918  	//       "location": "query",
   919  	//       "pattern": "[a-zA-Z]+",
   920  	//       "repeated": true,
   921  	//       "type": "string"
   922  	//     },
   923  	//     "screenshot": {
   924  	//       "default": "false",
   925  	//       "description": "Indicates if binary data containing a screenshot should be included",
   926  	//       "location": "query",
   927  	//       "type": "boolean"
   928  	//     },
   929  	//     "strategy": {
   930  	//       "description": "The analysis strategy to use",
   931  	//       "enum": [
   932  	//         "desktop",
   933  	//         "mobile"
   934  	//       ],
   935  	//       "enumDescriptions": [
   936  	//         "Fetch and analyze the URL for desktop browsers",
   937  	//         "Fetch and analyze the URL for mobile devices"
   938  	//       ],
   939  	//       "location": "query",
   940  	//       "type": "string"
   941  	//     },
   942  	//     "url": {
   943  	//       "description": "The URL to fetch and analyze",
   944  	//       "location": "query",
   945  	//       "pattern": "(?i)http(s)?://.*",
   946  	//       "required": true,
   947  	//       "type": "string"
   948  	//     }
   949  	//   },
   950  	//   "path": "runPagespeed",
   951  	//   "response": {
   952  	//     "$ref": "Result"
   953  	//   }
   954  	// }
   955  
   956  }
   957  

View as plain text