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

Side by Side Diff: impl/cloud/info.go

Issue 2302743002: Interface update, per-method Contexts. (Closed)
Patch Set: Lightning talk licenses. Created 4 years, 3 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 | « impl/cloud/datastore_test.go ('k') | impl/cloud/info_test.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The LUCI Authors. All rights reserved. 1 // Copyright 2016 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package cloud 5 package cloud
6 6
7 import ( 7 import (
8 "errors"
9 "time" 8 "time"
10 9
11 infoS "github.com/luci/gae/service/info" 10 infoS "github.com/luci/gae/service/info"
11 "github.com/luci/gae/service/info/support"
12
13 "github.com/luci/luci-go/common/errors"
12 14
13 "golang.org/x/net/context" 15 "golang.org/x/net/context"
14 ) 16 )
15 17
16 var errNotImplemented = errors.New("not implemented") 18 var errNotImplemented = errors.New("not implemented")
17 19
18 // cloudInfo is a reconstruction of the info service for the cloud API. 20 // cloudInfo is a reconstruction of the info service for the cloud API.
19 // 21 //
20 // It will return information sufficent for datastore operation. 22 // It will return information sufficent for datastore operation.
21 type infoState struct { 23 type infoState struct {
(...skipping 14 matching lines...) Expand all
36 return context.WithValue(c, &infoStateKey, ci) 38 return context.WithValue(c, &infoStateKey, ci)
37 } 39 }
38 40
39 func (ci *infoState) derive(mutate func(*infoState)) *infoState { 41 func (ci *infoState) derive(mutate func(*infoState)) *infoState {
40 dci := *ci 42 dci := *ci
41 mutate(&dci) 43 mutate(&dci)
42 return &dci 44 return &dci
43 } 45 }
44 46
45 type infoService struct { 47 type infoService struct {
48 context.Context
46 *infoState 49 *infoState
47
48 ic context.Context
49 } 50 }
50 51
51 func useInfo(c context.Context) context.Context { 52 func useInfo(c context.Context) context.Context {
52 var baseInfoState infoState 53 var baseInfoState infoState
53 c = baseInfoState.use(c) 54 c = baseInfoState.use(c)
54 55
55 return infoS.SetFactory(c, func(ic context.Context) infoS.RawInterface { 56 return infoS.SetFactory(c, func(ic context.Context) infoS.RawInterface {
56 return &infoService{ 57 return &infoService{
58 Context: ic,
57 infoState: getInfoState(ic), 59 infoState: getInfoState(ic),
58 ic: ic,
59 } 60 }
60 }) 61 })
61 } 62 }
62 63
63 func (i *infoService) AppID() string { panic(errNotImplemented) } 64 func (*infoService) AppID() string { panic(errNotImplemented) }
64 func (i *infoService) FullyQualifiedAppID() string { return "" } 65 func (*infoService) FullyQualifiedAppID() string { return "" }
65 func (i *infoService) GetNamespace() (string, bool) { return i.namespace, (i.nam espace != "") } 66 func (i *infoService) GetNamespace() string { return i.namespace }
66 67
67 func (i *infoService) Datacenter() string { panic(errNotImplemented) } 68 func (*infoService) Datacenter() string { panic(errNotImplemented) }
68 func (i *infoService) DefaultVersionHostname() string { panic(errNotImplemented) } 69 func (*infoService) DefaultVersionHostname() string { panic(errNotImplemented) }
69 func (i *infoService) InstanceID() string { panic(errNotImplemented) } 70 func (*infoService) InstanceID() string { panic(errNotImplemented) }
70 func (i *infoService) IsDevAppServer() bool { panic(errNotImplemented) } 71 func (*infoService) IsDevAppServer() bool { panic(errNotImplemented) }
71 func (i *infoService) IsOverQuota(err error) bool { panic(errNotImplemented) } 72 func (*infoService) IsOverQuota(err error) bool { panic(errNotImplemented) }
72 func (i *infoService) IsTimeoutError(err error) bool { panic(errNotImplemented) } 73 func (*infoService) IsTimeoutError(err error) bool { panic(errNotImplemented) }
73 func (i *infoService) ModuleHostname(module, version, instance string) (string, error) { 74 func (*infoService) ModuleHostname(module, version, instance string) (string, er ror) {
74 return "", errNotImplemented 75 return "", errNotImplemented
75 } 76 }
76 func (i *infoService) ModuleName() string { panic(errNotImplemented ) } 77 func (*infoService) ModuleName() string { panic(errNotImplemented) }
77 func (i *infoService) RequestID() string { panic(errNotImplemented ) } 78 func (*infoService) RequestID() string { panic(errNotImplemented) }
78 func (i *infoService) ServerSoftware() string { panic(errNotImplemented ) } 79 func (*infoService) ServerSoftware() string { panic(errNotImplemented) }
79 func (i *infoService) ServiceAccount() (string, error) { return "", errNotImplem ented } 80 func (*infoService) ServiceAccount() (string, error) { return "", errNotImplemen ted }
80 func (i *infoService) VersionID() string { panic(errNotImplemented ) } 81 func (*infoService) VersionID() string { panic(errNotImplemented) }
81 82
82 func (i *infoService) Namespace(namespace string) (context.Context, error) { 83 func (i *infoService) Namespace(namespace string) (context.Context, error) {
83 » return i.MustNamespace(namespace), nil 84 » if err := support.ValidNamespace(namespace); err != nil {
85 » » return i, err
86 » }
87
88 » return i.derive(func(ci *infoState) {
89 » » ci.namespace = namespace
90 » }).use(i), nil
84 } 91 }
85 92
86 func (i *infoService) MustNamespace(namespace string) context.Context { 93 func (*infoService) AccessToken(scopes ...string) (token string, expiry time.Tim e, err error) {
87 » return i.derive(func(ci *infoState) {
88 » » ci.namespace = namespace
89 » }).use(i.ic)
90 }
91
92 func (i *infoService) AccessToken(scopes ...string) (token string, expiry time.T ime, err error) {
93 return "", time.Time{}, errNotImplemented 94 return "", time.Time{}, errNotImplemented
94 } 95 }
95 96
96 func (i *infoService) PublicCertificates() ([]infoS.Certificate, error) { 97 func (*infoService) PublicCertificates() ([]infoS.Certificate, error) {
97 return nil, errNotImplemented 98 return nil, errNotImplemented
98 } 99 }
99 100
100 func (i *infoService) SignBytes(bytes []byte) (keyName string, signature []byte, err error) { 101 func (*infoService) SignBytes(bytes []byte) (keyName string, signature []byte, e rr error) {
101 return "", nil, errNotImplemented 102 return "", nil, errNotImplemented
102 } 103 }
103 104
104 func (i *infoService) Testable() infoS.Testable { return nil } 105 func (*infoService) GetTestable() infoS.Testable { return nil }
OLDNEW
« no previous file with comments | « impl/cloud/datastore_test.go ('k') | impl/cloud/info_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698