79 lines
2.4 KiB
Go
79 lines
2.4 KiB
Go
|
// 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 appengine provides basic functionality for Google App Engine.
|
||
|
//
|
||
|
// For more information on how to write Go apps for Google App Engine, see:
|
||
|
// https://cloud.google.com/appengine/docs/go/
|
||
|
package appengine
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
|
||
|
"github.com/golang/protobuf/proto"
|
||
|
|
||
|
"google.golang.org/appengine/internal"
|
||
|
)
|
||
|
|
||
|
// IsDevAppServer reports whether the App Engine app is running in the
|
||
|
// development App Server.
|
||
|
func IsDevAppServer() bool {
|
||
|
// TODO(dsymonds): Detect this.
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
// Context represents the context of an in-flight HTTP request.
|
||
|
type Context interface {
|
||
|
// Debugf formats its arguments according to the format, analogous to fmt.Printf,
|
||
|
// and records the text as a log message at Debug level.
|
||
|
Debugf(format string, args ...interface{})
|
||
|
|
||
|
// Infof is like Debugf, but at Info level.
|
||
|
Infof(format string, args ...interface{})
|
||
|
|
||
|
// Warningf is like Debugf, but at Warning level.
|
||
|
Warningf(format string, args ...interface{})
|
||
|
|
||
|
// Errorf is like Debugf, but at Error level.
|
||
|
Errorf(format string, args ...interface{})
|
||
|
|
||
|
// Criticalf is like Debugf, but at Critical level.
|
||
|
Criticalf(format string, args ...interface{})
|
||
|
|
||
|
// The remaining methods are for internal use only.
|
||
|
// Developer-facing APIs wrap these methods to provide a more friendly API.
|
||
|
|
||
|
// Internal use only.
|
||
|
Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error
|
||
|
// Internal use only. Use AppID instead.
|
||
|
FullyQualifiedAppID() string
|
||
|
// Internal use only.
|
||
|
Request() interface{}
|
||
|
}
|
||
|
|
||
|
// NewContext returns a context for an in-flight HTTP request.
|
||
|
// Repeated calls will return the same value.
|
||
|
func NewContext(req *http.Request) Context {
|
||
|
return internal.NewContext(req)
|
||
|
}
|
||
|
|
||
|
// TODO(dsymonds): Add BackgroundContext function?
|
||
|
|
||
|
// BlobKey is a key for a blobstore blob.
|
||
|
//
|
||
|
// Conceptually, this type belongs in the blobstore package, but it lives in
|
||
|
// the appengine package to avoid a circular dependency: blobstore depends on
|
||
|
// datastore, and datastore needs to refer to the BlobKey type.
|
||
|
type BlobKey string
|
||
|
|
||
|
// GeoPoint represents a location as latitude/longitude in degrees.
|
||
|
type GeoPoint struct {
|
||
|
Lat, Lng float64
|
||
|
}
|
||
|
|
||
|
// Valid returns whether a GeoPoint is within [-90, 90] latitude and [-180, 180] longitude.
|
||
|
func (g GeoPoint) Valid() bool {
|
||
|
return -90 <= g.Lat && g.Lat <= 90 && -180 <= g.Lng && g.Lng <= 180
|
||
|
}
|