Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1759)

Side by Side Diff: appengine/ephelper/context.go

Issue 1750143003: Remove ephelper and other endpoints code. (Closed) Base URL: https://github.com/luci/luci-go@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « appengine/ephelper/assertions/errors.go ('k') | appengine/ephelper/epfrontend/discovery.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package ephelper
6
7 import (
8 "fmt"
9
10 "github.com/GoogleCloudPlatform/go-endpoints/endpoints"
11 "golang.org/x/net/context"
12 )
13
14 type serviceCallKeyType int
15
16 var serviceCallKey serviceCallKeyType
17
18 type serviceCall struct {
19 mi *endpoints.MethodInfo
20 }
21
22 // ServiceBase is an embeddable base class for endpoints services.
23 //
24 // Example:
25 //
26 // type MyService struct {
27 // *ServiceBase
28 // }
29 //
30 // func (s *MyService) MyCoolEndpoint(c context.Context) error {
31 // c, err = s.Use(c, myMethodInfo)
32 // if err != nil {
33 // return err
34 // }
35 // ...
36 // }
37 type ServiceBase struct {
38 // Middleware is the set of middleware context manipulators to run for t his
39 // service.
40 //
41 // If nil, the middleware stack returned by DefaultMiddleware will be us ed.
42 Middleware []Middleware
43 }
44
45 // Use should be called at the beginning of a Cloud Endpoint handler to
46 // initialize the handler's baseline Context and authenticate the call.
47 func (s *ServiceBase) Use(c context.Context, mi *endpoints.MethodInfo) (context. Context, error) {
48 // In case the developer forgot to set it...
49 if s == nil {
50 return c, fmt.Errorf("no ServiceBase is configured for: %#v", mi )
51 }
52
53 // Embed our service context.
54 sc := serviceCall{
55 mi: mi,
56 }
57 c = context.WithValue(c, serviceCallKey, &sc)
58
59 middleware := s.Middleware
60 if middleware == nil {
61 middleware = []Middleware{DefaultMiddleware(nil)}
62 }
63 for _, mw := range middleware {
64 ic, err := mw(c)
65 if err != nil {
66 return c, err
67 }
68 c = ic
69 }
70
71 return c, nil
72 }
73
74 // MethodInfo returns the endpoints.MethodInfo for the current service call.
75 func MethodInfo(c context.Context) *endpoints.MethodInfo {
76 if sc, ok := c.Value(serviceCallKey).(*serviceCall); ok {
77 return sc.mi
78 }
79 return nil
80 }
OLDNEW
« no previous file with comments | « appengine/ephelper/assertions/errors.go ('k') | appengine/ephelper/epfrontend/discovery.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698