mirror of
https://github.com/restic/restic.git
synced 2024-09-08 04:19:31 +02:00
652 lines
24 KiB
Go
652 lines
24 KiB
Go
// Package firebaseremoteconfig provides access to the Firebase Remote Config API.
|
|
//
|
|
// See https://firebase.google.com/docs/remote-config/
|
|
//
|
|
// Usage example:
|
|
//
|
|
// import "google.golang.org/api/firebaseremoteconfig/v1"
|
|
// ...
|
|
// firebaseremoteconfigService, err := firebaseremoteconfig.New(oauthHttpClient)
|
|
package firebaseremoteconfig // import "google.golang.org/api/firebaseremoteconfig/v1"
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
context "golang.org/x/net/context"
|
|
ctxhttp "golang.org/x/net/context/ctxhttp"
|
|
gensupport "google.golang.org/api/gensupport"
|
|
googleapi "google.golang.org/api/googleapi"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// Always reference these packages, just in case the auto-generated code
|
|
// below doesn't.
|
|
var _ = bytes.NewBuffer
|
|
var _ = strconv.Itoa
|
|
var _ = fmt.Sprintf
|
|
var _ = json.NewDecoder
|
|
var _ = io.Copy
|
|
var _ = url.Parse
|
|
var _ = gensupport.MarshalJSON
|
|
var _ = googleapi.Version
|
|
var _ = errors.New
|
|
var _ = strings.Replace
|
|
var _ = context.Canceled
|
|
var _ = ctxhttp.Do
|
|
|
|
const apiId = "firebaseremoteconfig:v1"
|
|
const apiName = "firebaseremoteconfig"
|
|
const apiVersion = "v1"
|
|
const basePath = "https://firebaseremoteconfig.googleapis.com/"
|
|
|
|
func New(client *http.Client) (*Service, error) {
|
|
if client == nil {
|
|
return nil, errors.New("client is nil")
|
|
}
|
|
s := &Service{client: client, BasePath: basePath}
|
|
s.Projects = NewProjectsService(s)
|
|
return s, nil
|
|
}
|
|
|
|
type Service struct {
|
|
client *http.Client
|
|
BasePath string // API endpoint base URL
|
|
UserAgent string // optional additional User-Agent fragment
|
|
|
|
Projects *ProjectsService
|
|
}
|
|
|
|
func (s *Service) userAgent() string {
|
|
if s.UserAgent == "" {
|
|
return googleapi.UserAgent
|
|
}
|
|
return googleapi.UserAgent + " " + s.UserAgent
|
|
}
|
|
|
|
func NewProjectsService(s *Service) *ProjectsService {
|
|
rs := &ProjectsService{s: s}
|
|
return rs
|
|
}
|
|
|
|
type ProjectsService struct {
|
|
s *Service
|
|
}
|
|
|
|
// RemoteConfig: *
|
|
// The RemoteConfig consists of a list of conditions (which can
|
|
// be
|
|
// thought of as named "if" statements) and a map of parameters
|
|
// (parameter key
|
|
// to a structure containing an optional default value, as well as a
|
|
// optional
|
|
// submap of (condition name to value when that condition is true).
|
|
type RemoteConfig struct {
|
|
// Conditions: The list of named conditions. The order *does* affect the
|
|
// semantics.
|
|
// The condition_name values of these entries must be unique.
|
|
//
|
|
// The resolved value of a config parameter P is determined as follow:
|
|
// * Let Y be the set of values from the submap of P that refer to
|
|
// conditions
|
|
// that evaluate to <code>true</code>.
|
|
// * If Y is non empty, the value is taken from the specific submap in Y
|
|
// whose
|
|
// condition_name is the earliest in this condition list.
|
|
// * Else, if P has a default value option (condition_name is empty)
|
|
// then
|
|
// the value is taken from that option.
|
|
// * Else, parameter P has no value and is omitted from the config
|
|
// result.
|
|
//
|
|
// Example: parameter key "p1", default value "v1", submap specified
|
|
// as
|
|
// {"c1": v2, "c2": v3} where "c1" and "c2" are names of conditions in
|
|
// the
|
|
// condition list (where "c1" in this example appears before "c2").
|
|
// The
|
|
// value of p1 would be v2 as long as c1 is true. Otherwise, if c2 is
|
|
// true,
|
|
// p1 would evaluate to v3, and if c1 and c2 are both false, p1 would
|
|
// evaluate
|
|
// to v1. If no default value was specified, and c1 and c2 were both
|
|
// false,
|
|
// no value for p1 would be generated.
|
|
Conditions []*RemoteConfigCondition `json:"conditions,omitempty"`
|
|
|
|
// Parameters: Map of parameter keys to their optional default values
|
|
// and optional submap
|
|
// of (condition name : value). Order doesn't affect semantics, and so
|
|
// is
|
|
// sorted by the server. The 'key' values of the params must be unique.
|
|
Parameters map[string]RemoteConfigParameter `json:"parameters,omitempty"`
|
|
|
|
// ServerResponse contains the HTTP response code and headers from the
|
|
// server.
|
|
googleapi.ServerResponse `json:"-"`
|
|
|
|
// ForceSendFields is a list of field names (e.g. "Conditions") to
|
|
// unconditionally include in API requests. By default, fields with
|
|
// empty values are omitted from API requests. However, any non-pointer,
|
|
// non-interface field appearing in ForceSendFields will be sent to the
|
|
// server regardless of whether the field is empty or not. This may be
|
|
// used to include empty fields in Patch requests.
|
|
ForceSendFields []string `json:"-"`
|
|
|
|
// NullFields is a list of field names (e.g. "Conditions") to include in
|
|
// API requests with the JSON null value. By default, fields with empty
|
|
// values are omitted from API requests. However, any field with an
|
|
// empty value appearing in NullFields will be sent to the server as
|
|
// null. It is an error if a field in this list has a non-empty value.
|
|
// This may be used to include null fields in Patch requests.
|
|
NullFields []string `json:"-"`
|
|
}
|
|
|
|
func (s *RemoteConfig) MarshalJSON() ([]byte, error) {
|
|
type NoMethod RemoteConfig
|
|
raw := NoMethod(*s)
|
|
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
|
|
}
|
|
|
|
// RemoteConfigCondition: A single RemoteConfig Condition. A list of
|
|
// these (because order matters) are
|
|
// part of a single RemoteConfig template.
|
|
type RemoteConfigCondition struct {
|
|
// Description: DO NOT USE. Implementation removed and will not be added
|
|
// unless requested.
|
|
// A description for this Condition. Length must be less than or equal
|
|
// to
|
|
// 100 characters (or more precisely, unicode code points, which is
|
|
// defined
|
|
// in
|
|
// java/com/google/wireless/android/config/ConstsExporter.java).
|
|
// A description may contain any Unicode characters
|
|
Description string `json:"description,omitempty"`
|
|
|
|
// Expression: Required.
|
|
Expression string `json:"expression,omitempty"`
|
|
|
|
// Name: Required.
|
|
// A non empty and unique name of this condition.
|
|
Name string `json:"name,omitempty"`
|
|
|
|
// TagColor: Optional.
|
|
// The display (tag) color of this condition. This serves as part of a
|
|
// tag
|
|
// (in the future, we may add tag text as well as tag color, but that is
|
|
// not
|
|
// yet implemented in the UI).
|
|
// This value has no affect on the semantics of the delivered config and
|
|
// it
|
|
// is ignored by the backend, except for passing it through
|
|
// write/read
|
|
// requests.
|
|
// Not having this value or having the
|
|
// "CONDITION_DISPLAY_COLOR_UNSPECIFIED"
|
|
// value (0) have the same meaning: Let the UI choose any valid color
|
|
// when
|
|
// displaying the condition.
|
|
//
|
|
// Possible values:
|
|
// "CONDITION_DISPLAY_COLOR_UNSPECIFIED"
|
|
// "BLUE" - Blue
|
|
// "BROWN" - Brown
|
|
// "CYAN" - Cyan
|
|
// "DEEP_ORANGE" - aka "Red Orange"
|
|
// "GREEN" - Green
|
|
// "INDIGO" - Indigo
|
|
// *
|
|
// "LIME" - Lime - Approved deviation from Material color palette
|
|
// "ORANGE" - Orange
|
|
// "PINK" - Pink
|
|
// "PURPLE" - Purple
|
|
// "TEAL" - Teal
|
|
TagColor string `json:"tagColor,omitempty"`
|
|
|
|
// ForceSendFields is a list of field names (e.g. "Description") to
|
|
// unconditionally include in API requests. By default, fields with
|
|
// empty values are omitted from API requests. However, any non-pointer,
|
|
// non-interface field appearing in ForceSendFields will be sent to the
|
|
// server regardless of whether the field is empty or not. This may be
|
|
// used to include empty fields in Patch requests.
|
|
ForceSendFields []string `json:"-"`
|
|
|
|
// NullFields is a list of field names (e.g. "Description") to include
|
|
// in API requests with the JSON null value. By default, fields with
|
|
// empty values are omitted from API requests. However, any field with
|
|
// an empty value appearing in NullFields will be sent to the server as
|
|
// null. It is an error if a field in this list has a non-empty value.
|
|
// This may be used to include null fields in Patch requests.
|
|
NullFields []string `json:"-"`
|
|
}
|
|
|
|
func (s *RemoteConfigCondition) MarshalJSON() ([]byte, error) {
|
|
type NoMethod RemoteConfigCondition
|
|
raw := NoMethod(*s)
|
|
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
|
|
}
|
|
|
|
// RemoteConfigParameter: While default_value and conditional_values are
|
|
// each optional, at least one of
|
|
// the two is required - otherwise, the parameter is meaningless (and
|
|
// an
|
|
// exception will be thrown by the validation logic).
|
|
type RemoteConfigParameter struct {
|
|
// ConditionalValues: Optional - a map of (condition_name, value). The
|
|
// condition_name of the
|
|
// highest priority (the one listed first in the conditions array)
|
|
// determines
|
|
// the value of this parameter.
|
|
ConditionalValues map[string]RemoteConfigParameterValue `json:"conditionalValues,omitempty"`
|
|
|
|
// DefaultValue: Optional - value to set the parameter to, when none of
|
|
// the named conditions
|
|
// evaluate to <code>true</code>.
|
|
DefaultValue *RemoteConfigParameterValue `json:"defaultValue,omitempty"`
|
|
|
|
// Description: Optional.
|
|
// A description for this Parameter. Length must be less than or equal
|
|
// to
|
|
// 100 characters (or more precisely, unicode code points, which is
|
|
// defined
|
|
// in
|
|
// java/com/google/wireless/android/config/ConstsExporter.java).
|
|
// A description may contain any Unicode characters
|
|
Description string `json:"description,omitempty"`
|
|
|
|
// ForceSendFields is a list of field names (e.g. "ConditionalValues")
|
|
// to unconditionally include in API requests. By default, fields with
|
|
// empty values are omitted from API requests. However, any non-pointer,
|
|
// non-interface field appearing in ForceSendFields will be sent to the
|
|
// server regardless of whether the field is empty or not. This may be
|
|
// used to include empty fields in Patch requests.
|
|
ForceSendFields []string `json:"-"`
|
|
|
|
// NullFields is a list of field names (e.g. "ConditionalValues") to
|
|
// include in API requests with the JSON null value. By default, fields
|
|
// with empty values are omitted from API requests. However, any field
|
|
// with an empty value appearing in NullFields will be sent to the
|
|
// server as null. It is an error if a field in this list has a
|
|
// non-empty value. This may be used to include null fields in Patch
|
|
// requests.
|
|
NullFields []string `json:"-"`
|
|
}
|
|
|
|
func (s *RemoteConfigParameter) MarshalJSON() ([]byte, error) {
|
|
type NoMethod RemoteConfigParameter
|
|
raw := NoMethod(*s)
|
|
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
|
|
}
|
|
|
|
// RemoteConfigParameterValue: A RemoteConfigParameter's "value" (either
|
|
// the default value, or the value
|
|
// associated with a condition name) is either a string, or
|
|
// the
|
|
// "use_in_app_default" indicator (which means to leave out the
|
|
// parameter from
|
|
// the returned <key, value> map that is the output of the parameter
|
|
// fetch).
|
|
// We represent the "use_in_app_default" as a bool, but (when using the
|
|
// boolean
|
|
// instead of the string) it should always be <code>true</code>.
|
|
type RemoteConfigParameterValue struct {
|
|
// UseInAppDefault: if true, omit the parameter from the map of fetched
|
|
// parameter values
|
|
UseInAppDefault bool `json:"useInAppDefault,omitempty"`
|
|
|
|
// Value: the string to set the parameter to
|
|
Value string `json:"value,omitempty"`
|
|
|
|
// ForceSendFields is a list of field names (e.g. "UseInAppDefault") to
|
|
// unconditionally include in API requests. By default, fields with
|
|
// empty values are omitted from API requests. However, any non-pointer,
|
|
// non-interface field appearing in ForceSendFields will be sent to the
|
|
// server regardless of whether the field is empty or not. This may be
|
|
// used to include empty fields in Patch requests.
|
|
ForceSendFields []string `json:"-"`
|
|
|
|
// NullFields is a list of field names (e.g. "UseInAppDefault") to
|
|
// include in API requests with the JSON null value. By default, fields
|
|
// with empty values are omitted from API requests. However, any field
|
|
// with an empty value appearing in NullFields will be sent to the
|
|
// server as null. It is an error if a field in this list has a
|
|
// non-empty value. This may be used to include null fields in Patch
|
|
// requests.
|
|
NullFields []string `json:"-"`
|
|
}
|
|
|
|
func (s *RemoteConfigParameterValue) MarshalJSON() ([]byte, error) {
|
|
type NoMethod RemoteConfigParameterValue
|
|
raw := NoMethod(*s)
|
|
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
|
|
}
|
|
|
|
// method id "firebaseremoteconfig.projects.getRemoteConfig":
|
|
|
|
type ProjectsGetRemoteConfigCall struct {
|
|
s *Service
|
|
projectid string
|
|
urlParams_ gensupport.URLParams
|
|
ifNoneMatch_ string
|
|
ctx_ context.Context
|
|
header_ http.Header
|
|
}
|
|
|
|
// GetRemoteConfig: Get the latest version Remote Configuration for a
|
|
// project.
|
|
// Returns the RemoteConfig as the payload, and also the eTag as
|
|
// a
|
|
// response header.
|
|
func (r *ProjectsService) GetRemoteConfig(projectid string) *ProjectsGetRemoteConfigCall {
|
|
c := &ProjectsGetRemoteConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
|
|
c.projectid = projectid
|
|
return c
|
|
}
|
|
|
|
// Fields allows partial responses to be retrieved. See
|
|
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
|
|
// for more information.
|
|
func (c *ProjectsGetRemoteConfigCall) Fields(s ...googleapi.Field) *ProjectsGetRemoteConfigCall {
|
|
c.urlParams_.Set("fields", googleapi.CombineFields(s))
|
|
return c
|
|
}
|
|
|
|
// IfNoneMatch sets the optional parameter which makes the operation
|
|
// fail if the object's ETag matches the given value. This is useful for
|
|
// getting updates only after the object has changed since the last
|
|
// request. Use googleapi.IsNotModified to check whether the response
|
|
// error from Do is the result of In-None-Match.
|
|
func (c *ProjectsGetRemoteConfigCall) IfNoneMatch(entityTag string) *ProjectsGetRemoteConfigCall {
|
|
c.ifNoneMatch_ = entityTag
|
|
return c
|
|
}
|
|
|
|
// Context sets the context to be used in this call's Do method. Any
|
|
// pending HTTP request will be aborted if the provided context is
|
|
// canceled.
|
|
func (c *ProjectsGetRemoteConfigCall) Context(ctx context.Context) *ProjectsGetRemoteConfigCall {
|
|
c.ctx_ = ctx
|
|
return c
|
|
}
|
|
|
|
// Header returns an http.Header that can be modified by the caller to
|
|
// add HTTP headers to the request.
|
|
func (c *ProjectsGetRemoteConfigCall) Header() http.Header {
|
|
if c.header_ == nil {
|
|
c.header_ = make(http.Header)
|
|
}
|
|
return c.header_
|
|
}
|
|
|
|
func (c *ProjectsGetRemoteConfigCall) doRequest(alt string) (*http.Response, error) {
|
|
reqHeaders := make(http.Header)
|
|
for k, v := range c.header_ {
|
|
reqHeaders[k] = v
|
|
}
|
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
|
if c.ifNoneMatch_ != "" {
|
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
|
}
|
|
var body io.Reader = nil
|
|
c.urlParams_.Set("alt", alt)
|
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+project}/remoteConfig")
|
|
urls += "?" + c.urlParams_.Encode()
|
|
req, _ := http.NewRequest("GET", urls, body)
|
|
req.Header = reqHeaders
|
|
googleapi.Expand(req.URL, map[string]string{
|
|
"project": c.projectid,
|
|
})
|
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
|
}
|
|
|
|
// Do executes the "firebaseremoteconfig.projects.getRemoteConfig" call.
|
|
// Exactly one of *RemoteConfig or error will be non-nil. Any non-2xx
|
|
// status code is an error. Response headers are in either
|
|
// *RemoteConfig.ServerResponse.Header or (if a response was returned at
|
|
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
|
|
// to check whether the returned error was because
|
|
// http.StatusNotModified was returned.
|
|
func (c *ProjectsGetRemoteConfigCall) Do(opts ...googleapi.CallOption) (*RemoteConfig, error) {
|
|
gensupport.SetOptions(c.urlParams_, opts...)
|
|
res, err := c.doRequest("json")
|
|
if res != nil && res.StatusCode == http.StatusNotModified {
|
|
if res.Body != nil {
|
|
res.Body.Close()
|
|
}
|
|
return nil, &googleapi.Error{
|
|
Code: res.StatusCode,
|
|
Header: res.Header,
|
|
}
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer googleapi.CloseBody(res)
|
|
if err := googleapi.CheckResponse(res); err != nil {
|
|
return nil, err
|
|
}
|
|
ret := &RemoteConfig{
|
|
ServerResponse: googleapi.ServerResponse{
|
|
Header: res.Header,
|
|
HTTPStatusCode: res.StatusCode,
|
|
},
|
|
}
|
|
target := &ret
|
|
if err := gensupport.DecodeResponse(target, res); err != nil {
|
|
return nil, err
|
|
}
|
|
return ret, nil
|
|
// {
|
|
// "description": "Get the latest version Remote Configuration for a project.\nReturns the RemoteConfig as the payload, and also the eTag as a\nresponse header.",
|
|
// "flatPath": "v1/projects/{projectsId}/remoteConfig",
|
|
// "httpMethod": "GET",
|
|
// "id": "firebaseremoteconfig.projects.getRemoteConfig",
|
|
// "parameterOrder": [
|
|
// "project"
|
|
// ],
|
|
// "parameters": {
|
|
// "project": {
|
|
// "description": "The GMP project identifier. Required.\nSee note at the beginning of this file regarding project ids.",
|
|
// "location": "path",
|
|
// "pattern": "^projects/[^/]+$",
|
|
// "required": true,
|
|
// "type": "string"
|
|
// }
|
|
// },
|
|
// "path": "v1/{+project}/remoteConfig",
|
|
// "response": {
|
|
// "$ref": "RemoteConfig"
|
|
// }
|
|
// }
|
|
|
|
}
|
|
|
|
// method id "firebaseremoteconfig.projects.updateRemoteConfig":
|
|
|
|
type ProjectsUpdateRemoteConfigCall struct {
|
|
s *Service
|
|
projectid string
|
|
remoteconfig *RemoteConfig
|
|
urlParams_ gensupport.URLParams
|
|
ctx_ context.Context
|
|
header_ http.Header
|
|
}
|
|
|
|
// UpdateRemoteConfig: Update a RemoteConfig. We treat this as an
|
|
// always-existing
|
|
// resource (when it is not found in our data store, we treat it as
|
|
// version
|
|
// 0, a template with zero conditions and zero parameters). Hence there
|
|
// are
|
|
// no Create or Delete operations. Returns the updated template
|
|
// when
|
|
// successful (and the updated eTag as a response header), or an error
|
|
// if
|
|
// things go wrong.
|
|
// Possible error messages:
|
|
// * VALIDATION_ERROR (HTTP status 400) with additional details if
|
|
// the
|
|
// template being passed in can not be validated.
|
|
// * AUTHENTICATION_ERROR (HTTP status 401) if the request can not
|
|
// be
|
|
// authenticate (e.g. no access token, or invalid access token).
|
|
// * AUTHORIZATION_ERROR (HTTP status 403) if the request can not
|
|
// be
|
|
// authorized (e.g. the user has no access to the specified project
|
|
// id).
|
|
// * VERSION_MISMATCH (HTTP status 412) when trying to update when
|
|
// the
|
|
// expected eTag (passed in via the "If-match" header) is not specified,
|
|
// or
|
|
// is specified but does does not match the current eTag.
|
|
// * Internal error (HTTP status 500) for Database problems or other
|
|
// internal
|
|
// errors.
|
|
func (r *ProjectsService) UpdateRemoteConfig(projectid string, remoteconfig *RemoteConfig) *ProjectsUpdateRemoteConfigCall {
|
|
c := &ProjectsUpdateRemoteConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
|
|
c.projectid = projectid
|
|
c.remoteconfig = remoteconfig
|
|
return c
|
|
}
|
|
|
|
// ValidateOnly sets the optional parameter "validateOnly": Defaults to
|
|
// <code>false</code> (UpdateRemoteConfig call should
|
|
// update the backend if there are no validation/interal errors). May be
|
|
// set
|
|
// to <code>true</code> to indicate that, should no validation errors
|
|
// occur,
|
|
// the call should return a "200 OK" instead of performing the update.
|
|
// Note
|
|
// that other error messages (500 Internal Error, 412 Version Mismatch,
|
|
// etc)
|
|
// may still result after flipping to <code>false</code>, even if
|
|
// getting a
|
|
// "200 OK" when calling with <code>true</code>.
|
|
func (c *ProjectsUpdateRemoteConfigCall) ValidateOnly(validateOnly bool) *ProjectsUpdateRemoteConfigCall {
|
|
c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly))
|
|
return c
|
|
}
|
|
|
|
// Fields allows partial responses to be retrieved. See
|
|
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
|
|
// for more information.
|
|
func (c *ProjectsUpdateRemoteConfigCall) Fields(s ...googleapi.Field) *ProjectsUpdateRemoteConfigCall {
|
|
c.urlParams_.Set("fields", googleapi.CombineFields(s))
|
|
return c
|
|
}
|
|
|
|
// Context sets the context to be used in this call's Do method. Any
|
|
// pending HTTP request will be aborted if the provided context is
|
|
// canceled.
|
|
func (c *ProjectsUpdateRemoteConfigCall) Context(ctx context.Context) *ProjectsUpdateRemoteConfigCall {
|
|
c.ctx_ = ctx
|
|
return c
|
|
}
|
|
|
|
// Header returns an http.Header that can be modified by the caller to
|
|
// add HTTP headers to the request.
|
|
func (c *ProjectsUpdateRemoteConfigCall) Header() http.Header {
|
|
if c.header_ == nil {
|
|
c.header_ = make(http.Header)
|
|
}
|
|
return c.header_
|
|
}
|
|
|
|
func (c *ProjectsUpdateRemoteConfigCall) doRequest(alt string) (*http.Response, error) {
|
|
reqHeaders := make(http.Header)
|
|
for k, v := range c.header_ {
|
|
reqHeaders[k] = v
|
|
}
|
|
reqHeaders.Set("User-Agent", c.s.userAgent())
|
|
var body io.Reader = nil
|
|
body, err := googleapi.WithoutDataWrapper.JSONReader(c.remoteconfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
reqHeaders.Set("Content-Type", "application/json")
|
|
c.urlParams_.Set("alt", alt)
|
|
urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+project}/remoteConfig")
|
|
urls += "?" + c.urlParams_.Encode()
|
|
req, _ := http.NewRequest("PUT", urls, body)
|
|
req.Header = reqHeaders
|
|
googleapi.Expand(req.URL, map[string]string{
|
|
"project": c.projectid,
|
|
})
|
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
|
}
|
|
|
|
// Do executes the "firebaseremoteconfig.projects.updateRemoteConfig" call.
|
|
// Exactly one of *RemoteConfig or error will be non-nil. Any non-2xx
|
|
// status code is an error. Response headers are in either
|
|
// *RemoteConfig.ServerResponse.Header or (if a response was returned at
|
|
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
|
|
// to check whether the returned error was because
|
|
// http.StatusNotModified was returned.
|
|
func (c *ProjectsUpdateRemoteConfigCall) Do(opts ...googleapi.CallOption) (*RemoteConfig, error) {
|
|
gensupport.SetOptions(c.urlParams_, opts...)
|
|
res, err := c.doRequest("json")
|
|
if res != nil && res.StatusCode == http.StatusNotModified {
|
|
if res.Body != nil {
|
|
res.Body.Close()
|
|
}
|
|
return nil, &googleapi.Error{
|
|
Code: res.StatusCode,
|
|
Header: res.Header,
|
|
}
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer googleapi.CloseBody(res)
|
|
if err := googleapi.CheckResponse(res); err != nil {
|
|
return nil, err
|
|
}
|
|
ret := &RemoteConfig{
|
|
ServerResponse: googleapi.ServerResponse{
|
|
Header: res.Header,
|
|
HTTPStatusCode: res.StatusCode,
|
|
},
|
|
}
|
|
target := &ret
|
|
if err := gensupport.DecodeResponse(target, res); err != nil {
|
|
return nil, err
|
|
}
|
|
return ret, nil
|
|
// {
|
|
// "description": "Update a RemoteConfig. We treat this as an always-existing\nresource (when it is not found in our data store, we treat it as version\n0, a template with zero conditions and zero parameters). Hence there are\nno Create or Delete operations. Returns the updated template when\nsuccessful (and the updated eTag as a response header), or an error if\nthings go wrong.\nPossible error messages:\n* VALIDATION_ERROR (HTTP status 400) with additional details if the\ntemplate being passed in can not be validated.\n* AUTHENTICATION_ERROR (HTTP status 401) if the request can not be\nauthenticate (e.g. no access token, or invalid access token).\n* AUTHORIZATION_ERROR (HTTP status 403) if the request can not be\nauthorized (e.g. the user has no access to the specified project id).\n* VERSION_MISMATCH (HTTP status 412) when trying to update when the\nexpected eTag (passed in via the \"If-match\" header) is not specified, or\nis specified but does does not match the current eTag.\n* Internal error (HTTP status 500) for Database problems or other internal\nerrors.",
|
|
// "flatPath": "v1/projects/{projectsId}/remoteConfig",
|
|
// "httpMethod": "PUT",
|
|
// "id": "firebaseremoteconfig.projects.updateRemoteConfig",
|
|
// "parameterOrder": [
|
|
// "project"
|
|
// ],
|
|
// "parameters": {
|
|
// "project": {
|
|
// "description": "The GMP project identifier. Required.\nSee note at the beginning of this file regarding project ids.",
|
|
// "location": "path",
|
|
// "pattern": "^projects/[^/]+$",
|
|
// "required": true,
|
|
// "type": "string"
|
|
// },
|
|
// "validateOnly": {
|
|
// "description": "Optional. Defaults to \u003ccode\u003efalse\u003c/code\u003e (UpdateRemoteConfig call should\nupdate the backend if there are no validation/interal errors). May be set\nto \u003ccode\u003etrue\u003c/code\u003e to indicate that, should no validation errors occur,\nthe call should return a \"200 OK\" instead of performing the update. Note\nthat other error messages (500 Internal Error, 412 Version Mismatch, etc)\nmay still result after flipping to \u003ccode\u003efalse\u003c/code\u003e, even if getting a\n\"200 OK\" when calling with \u003ccode\u003etrue\u003c/code\u003e.",
|
|
// "location": "query",
|
|
// "type": "boolean"
|
|
// }
|
|
// },
|
|
// "path": "v1/{+project}/remoteConfig",
|
|
// "request": {
|
|
// "$ref": "RemoteConfig"
|
|
// },
|
|
// "response": {
|
|
// "$ref": "RemoteConfig"
|
|
// }
|
|
// }
|
|
|
|
}
|