endpoints/getting-started/app.rb (30 lines of code) (raw):

# Copyright 2016 Google Inc. # # 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. # Google Cloud Endpoints sample application. # # Demonstrates how to create a simple echo API as well as how to deal with # various authentication methods. require "base64" require "json" require "sinatra" before do content_type :json end # Simple echo service. post "/echo" do message = JSON.parse(request.body.read)["message"] { message: message }.to_json end # Retrieves the authenication information from Google Cloud Endpoints. def auth_info encoded_info = request.env["HTTP_X_ENDPOINT_API_USERINFO"] if encoded_info info_json = Base64.decode64 encoded_info user_info = JSON.parse info_json else user_info = { id: "anonymous" } end user_info.to_json end # Auth info with Google signed JWT. get "/auth/info/googlejwt" do auth_info end # Auth info with Google ID token. get "/auth/info/googleidtoken" do auth_info end # Handle exceptions by returning swagger-compliant json. error do status 500 { error: 500, message: env["sinatra.error"].message }.to_json end