mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-10 07:34:04 -08:00
vendor: add missing app engine dependencies
This commit is contained in:
parent
24e9deac71
commit
8a2850b5e1
355
vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go
generated
vendored
Normal file
355
vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go
generated
vendored
Normal file
|
@ -0,0 +1,355 @@
|
||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package urlfetch is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
URLFetchServiceError
|
||||||
|
URLFetchRequest
|
||||||
|
URLFetchResponse
|
||||||
|
*/
|
||||||
|
package urlfetch
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type URLFetchServiceError_ErrorCode int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
URLFetchServiceError_OK URLFetchServiceError_ErrorCode = 0
|
||||||
|
URLFetchServiceError_INVALID_URL URLFetchServiceError_ErrorCode = 1
|
||||||
|
URLFetchServiceError_FETCH_ERROR URLFetchServiceError_ErrorCode = 2
|
||||||
|
URLFetchServiceError_UNSPECIFIED_ERROR URLFetchServiceError_ErrorCode = 3
|
||||||
|
URLFetchServiceError_RESPONSE_TOO_LARGE URLFetchServiceError_ErrorCode = 4
|
||||||
|
URLFetchServiceError_DEADLINE_EXCEEDED URLFetchServiceError_ErrorCode = 5
|
||||||
|
URLFetchServiceError_SSL_CERTIFICATE_ERROR URLFetchServiceError_ErrorCode = 6
|
||||||
|
URLFetchServiceError_DNS_ERROR URLFetchServiceError_ErrorCode = 7
|
||||||
|
URLFetchServiceError_CLOSED URLFetchServiceError_ErrorCode = 8
|
||||||
|
URLFetchServiceError_INTERNAL_TRANSIENT_ERROR URLFetchServiceError_ErrorCode = 9
|
||||||
|
URLFetchServiceError_TOO_MANY_REDIRECTS URLFetchServiceError_ErrorCode = 10
|
||||||
|
URLFetchServiceError_MALFORMED_REPLY URLFetchServiceError_ErrorCode = 11
|
||||||
|
URLFetchServiceError_CONNECTION_ERROR URLFetchServiceError_ErrorCode = 12
|
||||||
|
)
|
||||||
|
|
||||||
|
var URLFetchServiceError_ErrorCode_name = map[int32]string{
|
||||||
|
0: "OK",
|
||||||
|
1: "INVALID_URL",
|
||||||
|
2: "FETCH_ERROR",
|
||||||
|
3: "UNSPECIFIED_ERROR",
|
||||||
|
4: "RESPONSE_TOO_LARGE",
|
||||||
|
5: "DEADLINE_EXCEEDED",
|
||||||
|
6: "SSL_CERTIFICATE_ERROR",
|
||||||
|
7: "DNS_ERROR",
|
||||||
|
8: "CLOSED",
|
||||||
|
9: "INTERNAL_TRANSIENT_ERROR",
|
||||||
|
10: "TOO_MANY_REDIRECTS",
|
||||||
|
11: "MALFORMED_REPLY",
|
||||||
|
12: "CONNECTION_ERROR",
|
||||||
|
}
|
||||||
|
var URLFetchServiceError_ErrorCode_value = map[string]int32{
|
||||||
|
"OK": 0,
|
||||||
|
"INVALID_URL": 1,
|
||||||
|
"FETCH_ERROR": 2,
|
||||||
|
"UNSPECIFIED_ERROR": 3,
|
||||||
|
"RESPONSE_TOO_LARGE": 4,
|
||||||
|
"DEADLINE_EXCEEDED": 5,
|
||||||
|
"SSL_CERTIFICATE_ERROR": 6,
|
||||||
|
"DNS_ERROR": 7,
|
||||||
|
"CLOSED": 8,
|
||||||
|
"INTERNAL_TRANSIENT_ERROR": 9,
|
||||||
|
"TOO_MANY_REDIRECTS": 10,
|
||||||
|
"MALFORMED_REPLY": 11,
|
||||||
|
"CONNECTION_ERROR": 12,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x URLFetchServiceError_ErrorCode) Enum() *URLFetchServiceError_ErrorCode {
|
||||||
|
p := new(URLFetchServiceError_ErrorCode)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x URLFetchServiceError_ErrorCode) String() string {
|
||||||
|
return proto.EnumName(URLFetchServiceError_ErrorCode_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *URLFetchServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(URLFetchServiceError_ErrorCode_value, data, "URLFetchServiceError_ErrorCode")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = URLFetchServiceError_ErrorCode(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type URLFetchRequest_RequestMethod int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
URLFetchRequest_GET URLFetchRequest_RequestMethod = 1
|
||||||
|
URLFetchRequest_POST URLFetchRequest_RequestMethod = 2
|
||||||
|
URLFetchRequest_HEAD URLFetchRequest_RequestMethod = 3
|
||||||
|
URLFetchRequest_PUT URLFetchRequest_RequestMethod = 4
|
||||||
|
URLFetchRequest_DELETE URLFetchRequest_RequestMethod = 5
|
||||||
|
URLFetchRequest_PATCH URLFetchRequest_RequestMethod = 6
|
||||||
|
)
|
||||||
|
|
||||||
|
var URLFetchRequest_RequestMethod_name = map[int32]string{
|
||||||
|
1: "GET",
|
||||||
|
2: "POST",
|
||||||
|
3: "HEAD",
|
||||||
|
4: "PUT",
|
||||||
|
5: "DELETE",
|
||||||
|
6: "PATCH",
|
||||||
|
}
|
||||||
|
var URLFetchRequest_RequestMethod_value = map[string]int32{
|
||||||
|
"GET": 1,
|
||||||
|
"POST": 2,
|
||||||
|
"HEAD": 3,
|
||||||
|
"PUT": 4,
|
||||||
|
"DELETE": 5,
|
||||||
|
"PATCH": 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x URLFetchRequest_RequestMethod) Enum() *URLFetchRequest_RequestMethod {
|
||||||
|
p := new(URLFetchRequest_RequestMethod)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x URLFetchRequest_RequestMethod) String() string {
|
||||||
|
return proto.EnumName(URLFetchRequest_RequestMethod_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *URLFetchRequest_RequestMethod) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(URLFetchRequest_RequestMethod_value, data, "URLFetchRequest_RequestMethod")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = URLFetchRequest_RequestMethod(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type URLFetchServiceError struct {
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchServiceError) Reset() { *m = URLFetchServiceError{} }
|
||||||
|
func (m *URLFetchServiceError) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*URLFetchServiceError) ProtoMessage() {}
|
||||||
|
|
||||||
|
type URLFetchRequest struct {
|
||||||
|
Method *URLFetchRequest_RequestMethod `protobuf:"varint,1,req,name=Method,enum=appengine.URLFetchRequest_RequestMethod" json:"Method,omitempty"`
|
||||||
|
Url *string `protobuf:"bytes,2,req,name=Url" json:"Url,omitempty"`
|
||||||
|
Header []*URLFetchRequest_Header `protobuf:"group,3,rep,name=Header" json:"header,omitempty"`
|
||||||
|
Payload []byte `protobuf:"bytes,6,opt,name=Payload" json:"Payload,omitempty"`
|
||||||
|
FollowRedirects *bool `protobuf:"varint,7,opt,name=FollowRedirects,def=1" json:"FollowRedirects,omitempty"`
|
||||||
|
Deadline *float64 `protobuf:"fixed64,8,opt,name=Deadline" json:"Deadline,omitempty"`
|
||||||
|
MustValidateServerCertificate *bool `protobuf:"varint,9,opt,name=MustValidateServerCertificate,def=1" json:"MustValidateServerCertificate,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) Reset() { *m = URLFetchRequest{} }
|
||||||
|
func (m *URLFetchRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*URLFetchRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
const Default_URLFetchRequest_FollowRedirects bool = true
|
||||||
|
const Default_URLFetchRequest_MustValidateServerCertificate bool = true
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetMethod() URLFetchRequest_RequestMethod {
|
||||||
|
if m != nil && m.Method != nil {
|
||||||
|
return *m.Method
|
||||||
|
}
|
||||||
|
return URLFetchRequest_GET
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetUrl() string {
|
||||||
|
if m != nil && m.Url != nil {
|
||||||
|
return *m.Url
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetHeader() []*URLFetchRequest_Header {
|
||||||
|
if m != nil {
|
||||||
|
return m.Header
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetPayload() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Payload
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetFollowRedirects() bool {
|
||||||
|
if m != nil && m.FollowRedirects != nil {
|
||||||
|
return *m.FollowRedirects
|
||||||
|
}
|
||||||
|
return Default_URLFetchRequest_FollowRedirects
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetDeadline() float64 {
|
||||||
|
if m != nil && m.Deadline != nil {
|
||||||
|
return *m.Deadline
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest) GetMustValidateServerCertificate() bool {
|
||||||
|
if m != nil && m.MustValidateServerCertificate != nil {
|
||||||
|
return *m.MustValidateServerCertificate
|
||||||
|
}
|
||||||
|
return Default_URLFetchRequest_MustValidateServerCertificate
|
||||||
|
}
|
||||||
|
|
||||||
|
type URLFetchRequest_Header struct {
|
||||||
|
Key *string `protobuf:"bytes,4,req,name=Key" json:"Key,omitempty"`
|
||||||
|
Value *string `protobuf:"bytes,5,req,name=Value" json:"Value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest_Header) Reset() { *m = URLFetchRequest_Header{} }
|
||||||
|
func (m *URLFetchRequest_Header) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*URLFetchRequest_Header) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest_Header) GetKey() string {
|
||||||
|
if m != nil && m.Key != nil {
|
||||||
|
return *m.Key
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchRequest_Header) GetValue() string {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type URLFetchResponse struct {
|
||||||
|
Content []byte `protobuf:"bytes,1,opt,name=Content" json:"Content,omitempty"`
|
||||||
|
StatusCode *int32 `protobuf:"varint,2,req,name=StatusCode" json:"StatusCode,omitempty"`
|
||||||
|
Header []*URLFetchResponse_Header `protobuf:"group,3,rep,name=Header" json:"header,omitempty"`
|
||||||
|
ContentWasTruncated *bool `protobuf:"varint,6,opt,name=ContentWasTruncated,def=0" json:"ContentWasTruncated,omitempty"`
|
||||||
|
ExternalBytesSent *int64 `protobuf:"varint,7,opt,name=ExternalBytesSent" json:"ExternalBytesSent,omitempty"`
|
||||||
|
ExternalBytesReceived *int64 `protobuf:"varint,8,opt,name=ExternalBytesReceived" json:"ExternalBytesReceived,omitempty"`
|
||||||
|
FinalUrl *string `protobuf:"bytes,9,opt,name=FinalUrl" json:"FinalUrl,omitempty"`
|
||||||
|
ApiCpuMilliseconds *int64 `protobuf:"varint,10,opt,name=ApiCpuMilliseconds,def=0" json:"ApiCpuMilliseconds,omitempty"`
|
||||||
|
ApiBytesSent *int64 `protobuf:"varint,11,opt,name=ApiBytesSent,def=0" json:"ApiBytesSent,omitempty"`
|
||||||
|
ApiBytesReceived *int64 `protobuf:"varint,12,opt,name=ApiBytesReceived,def=0" json:"ApiBytesReceived,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) Reset() { *m = URLFetchResponse{} }
|
||||||
|
func (m *URLFetchResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*URLFetchResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
const Default_URLFetchResponse_ContentWasTruncated bool = false
|
||||||
|
const Default_URLFetchResponse_ApiCpuMilliseconds int64 = 0
|
||||||
|
const Default_URLFetchResponse_ApiBytesSent int64 = 0
|
||||||
|
const Default_URLFetchResponse_ApiBytesReceived int64 = 0
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetContent() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Content
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetStatusCode() int32 {
|
||||||
|
if m != nil && m.StatusCode != nil {
|
||||||
|
return *m.StatusCode
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetHeader() []*URLFetchResponse_Header {
|
||||||
|
if m != nil {
|
||||||
|
return m.Header
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetContentWasTruncated() bool {
|
||||||
|
if m != nil && m.ContentWasTruncated != nil {
|
||||||
|
return *m.ContentWasTruncated
|
||||||
|
}
|
||||||
|
return Default_URLFetchResponse_ContentWasTruncated
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetExternalBytesSent() int64 {
|
||||||
|
if m != nil && m.ExternalBytesSent != nil {
|
||||||
|
return *m.ExternalBytesSent
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetExternalBytesReceived() int64 {
|
||||||
|
if m != nil && m.ExternalBytesReceived != nil {
|
||||||
|
return *m.ExternalBytesReceived
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetFinalUrl() string {
|
||||||
|
if m != nil && m.FinalUrl != nil {
|
||||||
|
return *m.FinalUrl
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetApiCpuMilliseconds() int64 {
|
||||||
|
if m != nil && m.ApiCpuMilliseconds != nil {
|
||||||
|
return *m.ApiCpuMilliseconds
|
||||||
|
}
|
||||||
|
return Default_URLFetchResponse_ApiCpuMilliseconds
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetApiBytesSent() int64 {
|
||||||
|
if m != nil && m.ApiBytesSent != nil {
|
||||||
|
return *m.ApiBytesSent
|
||||||
|
}
|
||||||
|
return Default_URLFetchResponse_ApiBytesSent
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse) GetApiBytesReceived() int64 {
|
||||||
|
if m != nil && m.ApiBytesReceived != nil {
|
||||||
|
return *m.ApiBytesReceived
|
||||||
|
}
|
||||||
|
return Default_URLFetchResponse_ApiBytesReceived
|
||||||
|
}
|
||||||
|
|
||||||
|
type URLFetchResponse_Header struct {
|
||||||
|
Key *string `protobuf:"bytes,4,req,name=Key" json:"Key,omitempty"`
|
||||||
|
Value *string `protobuf:"bytes,5,req,name=Value" json:"Value,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse_Header) Reset() { *m = URLFetchResponse_Header{} }
|
||||||
|
func (m *URLFetchResponse_Header) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*URLFetchResponse_Header) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse_Header) GetKey() string {
|
||||||
|
if m != nil && m.Key != nil {
|
||||||
|
return *m.Key
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *URLFetchResponse_Header) GetValue() string {
|
||||||
|
if m != nil && m.Value != nil {
|
||||||
|
return *m.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
}
|
64
vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
generated
vendored
Normal file
64
vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
generated
vendored
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
syntax = "proto2";
|
||||||
|
option go_package = "urlfetch";
|
||||||
|
|
||||||
|
package appengine;
|
||||||
|
|
||||||
|
message URLFetchServiceError {
|
||||||
|
enum ErrorCode {
|
||||||
|
OK = 0;
|
||||||
|
INVALID_URL = 1;
|
||||||
|
FETCH_ERROR = 2;
|
||||||
|
UNSPECIFIED_ERROR = 3;
|
||||||
|
RESPONSE_TOO_LARGE = 4;
|
||||||
|
DEADLINE_EXCEEDED = 5;
|
||||||
|
SSL_CERTIFICATE_ERROR = 6;
|
||||||
|
DNS_ERROR = 7;
|
||||||
|
CLOSED = 8;
|
||||||
|
INTERNAL_TRANSIENT_ERROR = 9;
|
||||||
|
TOO_MANY_REDIRECTS = 10;
|
||||||
|
MALFORMED_REPLY = 11;
|
||||||
|
CONNECTION_ERROR = 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message URLFetchRequest {
|
||||||
|
enum RequestMethod {
|
||||||
|
GET = 1;
|
||||||
|
POST = 2;
|
||||||
|
HEAD = 3;
|
||||||
|
PUT = 4;
|
||||||
|
DELETE = 5;
|
||||||
|
PATCH = 6;
|
||||||
|
}
|
||||||
|
required RequestMethod Method = 1;
|
||||||
|
required string Url = 2;
|
||||||
|
repeated group Header = 3 {
|
||||||
|
required string Key = 4;
|
||||||
|
required string Value = 5;
|
||||||
|
}
|
||||||
|
optional bytes Payload = 6 [ctype=CORD];
|
||||||
|
|
||||||
|
optional bool FollowRedirects = 7 [default=true];
|
||||||
|
|
||||||
|
optional double Deadline = 8;
|
||||||
|
|
||||||
|
optional bool MustValidateServerCertificate = 9 [default=true];
|
||||||
|
}
|
||||||
|
|
||||||
|
message URLFetchResponse {
|
||||||
|
optional bytes Content = 1;
|
||||||
|
required int32 StatusCode = 2;
|
||||||
|
repeated group Header = 3 {
|
||||||
|
required string Key = 4;
|
||||||
|
required string Value = 5;
|
||||||
|
}
|
||||||
|
optional bool ContentWasTruncated = 6 [default=false];
|
||||||
|
optional int64 ExternalBytesSent = 7;
|
||||||
|
optional int64 ExternalBytesReceived = 8;
|
||||||
|
|
||||||
|
optional string FinalUrl = 9;
|
||||||
|
|
||||||
|
optional int64 ApiCpuMilliseconds = 10 [default=0];
|
||||||
|
optional int64 ApiBytesSent = 11 [default=0];
|
||||||
|
optional int64 ApiBytesReceived = 12 [default=0];
|
||||||
|
}
|
210
vendor/google.golang.org/appengine/urlfetch/urlfetch.go
generated
vendored
Normal file
210
vendor/google.golang.org/appengine/urlfetch/urlfetch.go
generated
vendored
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
// Copyright 2011 Google Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Apache 2.0
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package urlfetch provides an http.RoundTripper implementation
|
||||||
|
// for fetching URLs via App Engine's urlfetch service.
|
||||||
|
package urlfetch // import "google.golang.org/appengine/urlfetch"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
"google.golang.org/appengine/internal"
|
||||||
|
pb "google.golang.org/appengine/internal/urlfetch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Transport is an implementation of http.RoundTripper for
|
||||||
|
// App Engine. Users should generally create an http.Client using
|
||||||
|
// this transport and use the Client rather than using this transport
|
||||||
|
// directly.
|
||||||
|
type Transport struct {
|
||||||
|
Context context.Context
|
||||||
|
|
||||||
|
// Controls whether the application checks the validity of SSL certificates
|
||||||
|
// over HTTPS connections. A value of false (the default) instructs the
|
||||||
|
// application to send a request to the server only if the certificate is
|
||||||
|
// valid and signed by a trusted certificate authority (CA), and also
|
||||||
|
// includes a hostname that matches the certificate. A value of true
|
||||||
|
// instructs the application to perform no certificate validation.
|
||||||
|
AllowInvalidServerCertificate bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify statically that *Transport implements http.RoundTripper.
|
||||||
|
var _ http.RoundTripper = (*Transport)(nil)
|
||||||
|
|
||||||
|
// Client returns an *http.Client using a default urlfetch Transport. This
|
||||||
|
// client will have the default deadline of 5 seconds, and will check the
|
||||||
|
// validity of SSL certificates.
|
||||||
|
//
|
||||||
|
// Any deadline of the provided context will be used for requests through this client;
|
||||||
|
// if the client does not have a deadline then a 5 second default is used.
|
||||||
|
func Client(ctx context.Context) *http.Client {
|
||||||
|
return &http.Client{
|
||||||
|
Transport: &Transport{
|
||||||
|
Context: ctx,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type bodyReader struct {
|
||||||
|
content []byte
|
||||||
|
truncated bool
|
||||||
|
closed bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrTruncatedBody is the error returned after the final Read() from a
|
||||||
|
// response's Body if the body has been truncated by App Engine's proxy.
|
||||||
|
var ErrTruncatedBody = errors.New("urlfetch: truncated body")
|
||||||
|
|
||||||
|
func statusCodeToText(code int) string {
|
||||||
|
if t := http.StatusText(code); t != "" {
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
return strconv.Itoa(code)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (br *bodyReader) Read(p []byte) (n int, err error) {
|
||||||
|
if br.closed {
|
||||||
|
if br.truncated {
|
||||||
|
return 0, ErrTruncatedBody
|
||||||
|
}
|
||||||
|
return 0, io.EOF
|
||||||
|
}
|
||||||
|
n = copy(p, br.content)
|
||||||
|
if n > 0 {
|
||||||
|
br.content = br.content[n:]
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if br.truncated {
|
||||||
|
br.closed = true
|
||||||
|
return 0, ErrTruncatedBody
|
||||||
|
}
|
||||||
|
return 0, io.EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
func (br *bodyReader) Close() error {
|
||||||
|
br.closed = true
|
||||||
|
br.content = nil
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// A map of the URL Fetch-accepted methods that take a request body.
|
||||||
|
var methodAcceptsRequestBody = map[string]bool{
|
||||||
|
"POST": true,
|
||||||
|
"PUT": true,
|
||||||
|
"PATCH": true,
|
||||||
|
}
|
||||||
|
|
||||||
|
// urlString returns a valid string given a URL. This function is necessary because
|
||||||
|
// the String method of URL doesn't correctly handle URLs with non-empty Opaque values.
|
||||||
|
// See http://code.google.com/p/go/issues/detail?id=4860.
|
||||||
|
func urlString(u *url.URL) string {
|
||||||
|
if u.Opaque == "" || strings.HasPrefix(u.Opaque, "//") {
|
||||||
|
return u.String()
|
||||||
|
}
|
||||||
|
aux := *u
|
||||||
|
aux.Opaque = "//" + aux.Host + aux.Opaque
|
||||||
|
return aux.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// RoundTrip issues a single HTTP request and returns its response. Per the
|
||||||
|
// http.RoundTripper interface, RoundTrip only returns an error if there
|
||||||
|
// was an unsupported request or the URL Fetch proxy fails.
|
||||||
|
// Note that HTTP response codes such as 5xx, 403, 404, etc are not
|
||||||
|
// errors as far as the transport is concerned and will be returned
|
||||||
|
// with err set to nil.
|
||||||
|
func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error) {
|
||||||
|
methNum, ok := pb.URLFetchRequest_RequestMethod_value[req.Method]
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("urlfetch: unsupported HTTP method %q", req.Method)
|
||||||
|
}
|
||||||
|
|
||||||
|
method := pb.URLFetchRequest_RequestMethod(methNum)
|
||||||
|
|
||||||
|
freq := &pb.URLFetchRequest{
|
||||||
|
Method: &method,
|
||||||
|
Url: proto.String(urlString(req.URL)),
|
||||||
|
FollowRedirects: proto.Bool(false), // http.Client's responsibility
|
||||||
|
MustValidateServerCertificate: proto.Bool(!t.AllowInvalidServerCertificate),
|
||||||
|
}
|
||||||
|
if deadline, ok := t.Context.Deadline(); ok {
|
||||||
|
freq.Deadline = proto.Float64(deadline.Sub(time.Now()).Seconds())
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, vals := range req.Header {
|
||||||
|
for _, val := range vals {
|
||||||
|
freq.Header = append(freq.Header, &pb.URLFetchRequest_Header{
|
||||||
|
Key: proto.String(k),
|
||||||
|
Value: proto.String(val),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if methodAcceptsRequestBody[req.Method] && req.Body != nil {
|
||||||
|
// Avoid a []byte copy if req.Body has a Bytes method.
|
||||||
|
switch b := req.Body.(type) {
|
||||||
|
case interface {
|
||||||
|
Bytes() []byte
|
||||||
|
}:
|
||||||
|
freq.Payload = b.Bytes()
|
||||||
|
default:
|
||||||
|
freq.Payload, err = ioutil.ReadAll(req.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fres := &pb.URLFetchResponse{}
|
||||||
|
if err := internal.Call(t.Context, "urlfetch", "Fetch", freq, fres); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
res = &http.Response{}
|
||||||
|
res.StatusCode = int(*fres.StatusCode)
|
||||||
|
res.Status = fmt.Sprintf("%d %s", res.StatusCode, statusCodeToText(res.StatusCode))
|
||||||
|
res.Header = make(http.Header)
|
||||||
|
res.Request = req
|
||||||
|
|
||||||
|
// Faked:
|
||||||
|
res.ProtoMajor = 1
|
||||||
|
res.ProtoMinor = 1
|
||||||
|
res.Proto = "HTTP/1.1"
|
||||||
|
res.Close = true
|
||||||
|
|
||||||
|
for _, h := range fres.Header {
|
||||||
|
hkey := http.CanonicalHeaderKey(*h.Key)
|
||||||
|
hval := *h.Value
|
||||||
|
if hkey == "Content-Length" {
|
||||||
|
// Will get filled in below for all but HEAD requests.
|
||||||
|
if req.Method == "HEAD" {
|
||||||
|
res.ContentLength, _ = strconv.ParseInt(hval, 10, 64)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
res.Header.Add(hkey, hval)
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Method != "HEAD" {
|
||||||
|
res.ContentLength = int64(len(fres.Content))
|
||||||
|
}
|
||||||
|
|
||||||
|
truncated := fres.GetContentWasTruncated()
|
||||||
|
res.Body = &bodyReader{content: fres.Content, truncated: truncated}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
internal.RegisterErrorCodeMap("urlfetch", pb.URLFetchServiceError_ErrorCode_name)
|
||||||
|
internal.RegisterTimeoutErrorCode("urlfetch", int32(pb.URLFetchServiceError_DEADLINE_EXCEEDED))
|
||||||
|
}
|
12
vendor/vendor.json
vendored
12
vendor/vendor.json
vendored
|
@ -1065,6 +1065,18 @@
|
||||||
"revision": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05",
|
"revision": "4f7eeb5305a4ba1966344836ba4af9996b7b4e05",
|
||||||
"revisionTime": "2016-08-19T23:33:10Z"
|
"revisionTime": "2016-08-19T23:33:10Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"checksumSHA1": "QtAbHtHmDzcf6vOV9eqlCpKgjiw=",
|
||||||
|
"path": "google.golang.org/appengine/internal/urlfetch",
|
||||||
|
"revision": "a2f4131514e563cedfdb6e7d267df9ad48591e93",
|
||||||
|
"revisionTime": "2017-05-22T22:48:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checksumSHA1": "akOV9pYnCbcPA8wJUutSQVibdyg=",
|
||||||
|
"path": "google.golang.org/appengine/urlfetch",
|
||||||
|
"revision": "a2f4131514e563cedfdb6e7d267df9ad48591e93",
|
||||||
|
"revisionTime": "2017-05-22T22:48:38Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "Wp8g9MHRmK8SwcyGVCoGtPx+5Lo=",
|
"checksumSHA1": "Wp8g9MHRmK8SwcyGVCoGtPx+5Lo=",
|
||||||
"path": "google.golang.org/cloud/compute/metadata",
|
"path": "google.golang.org/cloud/compute/metadata",
|
||||||
|
|
Loading…
Reference in a new issue