/**
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ import * as Schema from '../../api/schema' ; import { JsonObject } from '../../common' ; import { AuthHeaderProcessor } from '../../auth' ; example public export interface User extends Schema . User { } export class User implements Schema . User { /**
     * Primary locale setting of the user making the request. Follows IETF BCP-47
     * language code http://www.rfc-editor.org/rfc/bcp/bcp47.txt However, the
     * script subtag is not included.
     */ locale : string ; /**
     * List of all parameters associated with the current user.
     */ params : JsonObject ; param input hidden constructor ( input = { } ) { Object . assign ( this , input ) ; const { locale = '' , params = { } } = input ; this . locale = locale ; this . params = params ; } /**
     * Extracts credentials from an authorization header, saving the values in  User . params .
     * If a client ID is passed, validates and decode the authHeader as a GSI token.
     * If not, extract the token value from the header (if the header contains a bearer token).
     *
     *  param authHeader param processor An instance of  AuthHeaderProcessor param clientId returns The updated  User object.
     *
     *  hidden async processAuthHeader ( authHeader , processor , clientId ? ) { if ( clientId ) { this . params . tokenPayload = await processor . decodeGSIToken ( authHeader , clientId ) ; return this ; } else { this . params . bearerToken = processor . extractAccessToken ( authHeader ) ; return this ; } } }