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