Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dex
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
hdacloud
dex
Commits
9926a0dc
Commit
9926a0dc
authored
6 years ago
by
Cosmin Cojocar
Browse files
Options
Downloads
Patches
Plain Diff
Extend the API with a function which updates the client configuration
parent
57b10313
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
api/api.pb.go
+184
-68
184 additions, 68 deletions
api/api.pb.go
api/api.proto
+17
-0
17 additions, 0 deletions
api/api.proto
server/api.go
+32
-0
32 additions, 0 deletions
server/api.go
with
233 additions
and
68 deletions
api/api.pb.go
+
184
−
68
View file @
9926a0dc
...
...
@@ -13,6 +13,8 @@ It has these top-level messages:
CreateClientResp
DeleteClientReq
DeleteClientResp
UpdateClientReq
UpdateClientResp
Password
CreatePasswordReq
CreatePasswordResp
...
...
@@ -194,6 +196,80 @@ func (m *DeleteClientResp) GetNotFound() bool {
return
false
}
// UpdateClientReq is a request to update an exisitng client.
type
UpdateClientReq
struct
{
Id
string
`protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
RedirectUris
[]
string
`protobuf:"bytes,2,rep,name=redirect_uris,json=redirectUris" json:"redirect_uris,omitempty"`
TrustedPeers
[]
string
`protobuf:"bytes,3,rep,name=trusted_peers,json=trustedPeers" json:"trusted_peers,omitempty"`
Public
bool
`protobuf:"varint,4,opt,name=public" json:"public,omitempty"`
Name
string
`protobuf:"bytes,5,opt,name=name" json:"name,omitempty"`
LogoUrl
string
`protobuf:"bytes,6,opt,name=logo_url,json=logoUrl" json:"logo_url,omitempty"`
}
func
(
m
*
UpdateClientReq
)
Reset
()
{
*
m
=
UpdateClientReq
{}
}
func
(
m
*
UpdateClientReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
UpdateClientReq
)
ProtoMessage
()
{}
func
(
*
UpdateClientReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
5
}
}
func
(
m
*
UpdateClientReq
)
GetId
()
string
{
if
m
!=
nil
{
return
m
.
Id
}
return
""
}
func
(
m
*
UpdateClientReq
)
GetRedirectUris
()
[]
string
{
if
m
!=
nil
{
return
m
.
RedirectUris
}
return
nil
}
func
(
m
*
UpdateClientReq
)
GetTrustedPeers
()
[]
string
{
if
m
!=
nil
{
return
m
.
TrustedPeers
}
return
nil
}
func
(
m
*
UpdateClientReq
)
GetPublic
()
bool
{
if
m
!=
nil
{
return
m
.
Public
}
return
false
}
func
(
m
*
UpdateClientReq
)
GetName
()
string
{
if
m
!=
nil
{
return
m
.
Name
}
return
""
}
func
(
m
*
UpdateClientReq
)
GetLogoUrl
()
string
{
if
m
!=
nil
{
return
m
.
LogoUrl
}
return
""
}
// UpdateClientResp returns the reponse form updating a client.
type
UpdateClientResp
struct
{
NotFound
bool
`protobuf:"varint,1,opt,name=not_found,json=notFound" json:"not_found,omitempty"`
}
func
(
m
*
UpdateClientResp
)
Reset
()
{
*
m
=
UpdateClientResp
{}
}
func
(
m
*
UpdateClientResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
UpdateClientResp
)
ProtoMessage
()
{}
func
(
*
UpdateClientResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
6
}
}
func
(
m
*
UpdateClientResp
)
GetNotFound
()
bool
{
if
m
!=
nil
{
return
m
.
NotFound
}
return
false
}
// Password is an email for password mapping managed by the storage.
type
Password
struct
{
Email
string
`protobuf:"bytes,1,opt,name=email" json:"email,omitempty"`
...
...
@@ -206,7 +282,7 @@ type Password struct {
func
(
m
*
Password
)
Reset
()
{
*
m
=
Password
{}
}
func
(
m
*
Password
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Password
)
ProtoMessage
()
{}
func
(
*
Password
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
5
}
}
func
(
*
Password
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
7
}
}
func
(
m
*
Password
)
GetEmail
()
string
{
if
m
!=
nil
{
...
...
@@ -244,7 +320,7 @@ type CreatePasswordReq struct {
func
(
m
*
CreatePasswordReq
)
Reset
()
{
*
m
=
CreatePasswordReq
{}
}
func
(
m
*
CreatePasswordReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
CreatePasswordReq
)
ProtoMessage
()
{}
func
(
*
CreatePasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
6
}
}
func
(
*
CreatePasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
8
}
}
func
(
m
*
CreatePasswordReq
)
GetPassword
()
*
Password
{
if
m
!=
nil
{
...
...
@@ -261,7 +337,7 @@ type CreatePasswordResp struct {
func
(
m
*
CreatePasswordResp
)
Reset
()
{
*
m
=
CreatePasswordResp
{}
}
func
(
m
*
CreatePasswordResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
CreatePasswordResp
)
ProtoMessage
()
{}
func
(
*
CreatePasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
7
}
}
func
(
*
CreatePasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
9
}
}
func
(
m
*
CreatePasswordResp
)
GetAlreadyExists
()
bool
{
if
m
!=
nil
{
...
...
@@ -281,7 +357,7 @@ type UpdatePasswordReq struct {
func
(
m
*
UpdatePasswordReq
)
Reset
()
{
*
m
=
UpdatePasswordReq
{}
}
func
(
m
*
UpdatePasswordReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
UpdatePasswordReq
)
ProtoMessage
()
{}
func
(
*
UpdatePasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
8
}
}
func
(
*
UpdatePasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
10
}
}
func
(
m
*
UpdatePasswordReq
)
GetEmail
()
string
{
if
m
!=
nil
{
...
...
@@ -312,7 +388,7 @@ type UpdatePasswordResp struct {
func
(
m
*
UpdatePasswordResp
)
Reset
()
{
*
m
=
UpdatePasswordResp
{}
}
func
(
m
*
UpdatePasswordResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
UpdatePasswordResp
)
ProtoMessage
()
{}
func
(
*
UpdatePasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
9
}
}
func
(
*
UpdatePasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
11
}
}
func
(
m
*
UpdatePasswordResp
)
GetNotFound
()
bool
{
if
m
!=
nil
{
...
...
@@ -329,7 +405,7 @@ type DeletePasswordReq struct {
func
(
m
*
DeletePasswordReq
)
Reset
()
{
*
m
=
DeletePasswordReq
{}
}
func
(
m
*
DeletePasswordReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
DeletePasswordReq
)
ProtoMessage
()
{}
func
(
*
DeletePasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
0
}
}
func
(
*
DeletePasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
2
}
}
func
(
m
*
DeletePasswordReq
)
GetEmail
()
string
{
if
m
!=
nil
{
...
...
@@ -346,7 +422,7 @@ type DeletePasswordResp struct {
func
(
m
*
DeletePasswordResp
)
Reset
()
{
*
m
=
DeletePasswordResp
{}
}
func
(
m
*
DeletePasswordResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
DeletePasswordResp
)
ProtoMessage
()
{}
func
(
*
DeletePasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
1
}
}
func
(
*
DeletePasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
3
}
}
func
(
m
*
DeletePasswordResp
)
GetNotFound
()
bool
{
if
m
!=
nil
{
...
...
@@ -362,7 +438,7 @@ type ListPasswordReq struct {
func
(
m
*
ListPasswordReq
)
Reset
()
{
*
m
=
ListPasswordReq
{}
}
func
(
m
*
ListPasswordReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ListPasswordReq
)
ProtoMessage
()
{}
func
(
*
ListPasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
2
}
}
func
(
*
ListPasswordReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
4
}
}
// ListPasswordResp returns a list of passwords.
type
ListPasswordResp
struct
{
...
...
@@ -372,7 +448,7 @@ type ListPasswordResp struct {
func
(
m
*
ListPasswordResp
)
Reset
()
{
*
m
=
ListPasswordResp
{}
}
func
(
m
*
ListPasswordResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ListPasswordResp
)
ProtoMessage
()
{}
func
(
*
ListPasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
3
}
}
func
(
*
ListPasswordResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
5
}
}
func
(
m
*
ListPasswordResp
)
GetPasswords
()
[]
*
Password
{
if
m
!=
nil
{
...
...
@@ -388,7 +464,7 @@ type VersionReq struct {
func
(
m
*
VersionReq
)
Reset
()
{
*
m
=
VersionReq
{}
}
func
(
m
*
VersionReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
VersionReq
)
ProtoMessage
()
{}
func
(
*
VersionReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
4
}
}
func
(
*
VersionReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
6
}
}
// VersionResp holds the version info of components.
type
VersionResp
struct
{
...
...
@@ -402,7 +478,7 @@ type VersionResp struct {
func
(
m
*
VersionResp
)
Reset
()
{
*
m
=
VersionResp
{}
}
func
(
m
*
VersionResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
VersionResp
)
ProtoMessage
()
{}
func
(
*
VersionResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
5
}
}
func
(
*
VersionResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
7
}
}
func
(
m
*
VersionResp
)
GetServer
()
string
{
if
m
!=
nil
{
...
...
@@ -430,7 +506,7 @@ type RefreshTokenRef struct {
func
(
m
*
RefreshTokenRef
)
Reset
()
{
*
m
=
RefreshTokenRef
{}
}
func
(
m
*
RefreshTokenRef
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
RefreshTokenRef
)
ProtoMessage
()
{}
func
(
*
RefreshTokenRef
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
6
}
}
func
(
*
RefreshTokenRef
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
8
}
}
func
(
m
*
RefreshTokenRef
)
GetId
()
string
{
if
m
!=
nil
{
...
...
@@ -469,7 +545,7 @@ type ListRefreshReq struct {
func
(
m
*
ListRefreshReq
)
Reset
()
{
*
m
=
ListRefreshReq
{}
}
func
(
m
*
ListRefreshReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ListRefreshReq
)
ProtoMessage
()
{}
func
(
*
ListRefreshReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
7
}
}
func
(
*
ListRefreshReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
9
}
}
func
(
m
*
ListRefreshReq
)
GetUserId
()
string
{
if
m
!=
nil
{
...
...
@@ -486,7 +562,7 @@ type ListRefreshResp struct {
func
(
m
*
ListRefreshResp
)
Reset
()
{
*
m
=
ListRefreshResp
{}
}
func
(
m
*
ListRefreshResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ListRefreshResp
)
ProtoMessage
()
{}
func
(
*
ListRefreshResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
18
}
}
func
(
*
ListRefreshResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
20
}
}
func
(
m
*
ListRefreshResp
)
GetRefreshTokens
()
[]
*
RefreshTokenRef
{
if
m
!=
nil
{
...
...
@@ -505,7 +581,7 @@ type RevokeRefreshReq struct {
func
(
m
*
RevokeRefreshReq
)
Reset
()
{
*
m
=
RevokeRefreshReq
{}
}
func
(
m
*
RevokeRefreshReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
RevokeRefreshReq
)
ProtoMessage
()
{}
func
(
*
RevokeRefreshReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
1
9
}
}
func
(
*
RevokeRefreshReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
1
}
}
func
(
m
*
RevokeRefreshReq
)
GetUserId
()
string
{
if
m
!=
nil
{
...
...
@@ -530,7 +606,7 @@ type RevokeRefreshResp struct {
func
(
m
*
RevokeRefreshResp
)
Reset
()
{
*
m
=
RevokeRefreshResp
{}
}
func
(
m
*
RevokeRefreshResp
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
RevokeRefreshResp
)
ProtoMessage
()
{}
func
(
*
RevokeRefreshResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
0
}
}
func
(
*
RevokeRefreshResp
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
2
}
}
func
(
m
*
RevokeRefreshResp
)
GetNotFound
()
bool
{
if
m
!=
nil
{
...
...
@@ -545,6 +621,8 @@ func init() {
proto
.
RegisterType
((
*
CreateClientResp
)(
nil
),
"api.CreateClientResp"
)
proto
.
RegisterType
((
*
DeleteClientReq
)(
nil
),
"api.DeleteClientReq"
)
proto
.
RegisterType
((
*
DeleteClientResp
)(
nil
),
"api.DeleteClientResp"
)
proto
.
RegisterType
((
*
UpdateClientReq
)(
nil
),
"api.UpdateClientReq"
)
proto
.
RegisterType
((
*
UpdateClientResp
)(
nil
),
"api.UpdateClientResp"
)
proto
.
RegisterType
((
*
Password
)(
nil
),
"api.Password"
)
proto
.
RegisterType
((
*
CreatePasswordReq
)(
nil
),
"api.CreatePasswordReq"
)
proto
.
RegisterType
((
*
CreatePasswordResp
)(
nil
),
"api.CreatePasswordResp"
)
...
...
@@ -576,6 +654,8 @@ const _ = grpc.SupportPackageIsVersion4
type
DexClient
interface
{
// CreateClient creates a client.
CreateClient
(
ctx
context
.
Context
,
in
*
CreateClientReq
,
opts
...
grpc
.
CallOption
)
(
*
CreateClientResp
,
error
)
// UpdateClient updates an exisitng client
UpdateClient
(
ctx
context
.
Context
,
in
*
UpdateClientReq
,
opts
...
grpc
.
CallOption
)
(
*
UpdateClientResp
,
error
)
// DeleteClient deletes the provided client.
DeleteClient
(
ctx
context
.
Context
,
in
*
DeleteClientReq
,
opts
...
grpc
.
CallOption
)
(
*
DeleteClientResp
,
error
)
// CreatePassword creates a password.
...
...
@@ -613,6 +693,15 @@ func (c *dexClient) CreateClient(ctx context.Context, in *CreateClientReq, opts
return
out
,
nil
}
func
(
c
*
dexClient
)
UpdateClient
(
ctx
context
.
Context
,
in
*
UpdateClientReq
,
opts
...
grpc
.
CallOption
)
(
*
UpdateClientResp
,
error
)
{
out
:=
new
(
UpdateClientResp
)
err
:=
grpc
.
Invoke
(
ctx
,
"/api.Dex/UpdateClient"
,
in
,
out
,
c
.
cc
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
func
(
c
*
dexClient
)
DeleteClient
(
ctx
context
.
Context
,
in
*
DeleteClientReq
,
opts
...
grpc
.
CallOption
)
(
*
DeleteClientResp
,
error
)
{
out
:=
new
(
DeleteClientResp
)
err
:=
grpc
.
Invoke
(
ctx
,
"/api.Dex/DeleteClient"
,
in
,
out
,
c
.
cc
,
opts
...
)
...
...
@@ -690,6 +779,8 @@ func (c *dexClient) RevokeRefresh(ctx context.Context, in *RevokeRefreshReq, opt
type
DexServer
interface
{
// CreateClient creates a client.
CreateClient
(
context
.
Context
,
*
CreateClientReq
)
(
*
CreateClientResp
,
error
)
// UpdateClient updates an exisitng client
UpdateClient
(
context
.
Context
,
*
UpdateClientReq
)
(
*
UpdateClientResp
,
error
)
// DeleteClient deletes the provided client.
DeleteClient
(
context
.
Context
,
*
DeleteClientReq
)
(
*
DeleteClientResp
,
error
)
// CreatePassword creates a password.
...
...
@@ -732,6 +823,24 @@ func _Dex_CreateClient_Handler(srv interface{}, ctx context.Context, dec func(in
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
func
_Dex_UpdateClient_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
UpdateClientReq
)
if
err
:=
dec
(
in
);
err
!=
nil
{
return
nil
,
err
}
if
interceptor
==
nil
{
return
srv
.
(
DexServer
)
.
UpdateClient
(
ctx
,
in
)
}
info
:=
&
grpc
.
UnaryServerInfo
{
Server
:
srv
,
FullMethod
:
"/api.Dex/UpdateClient"
,
}
handler
:=
func
(
ctx
context
.
Context
,
req
interface
{})
(
interface
{},
error
)
{
return
srv
.
(
DexServer
)
.
UpdateClient
(
ctx
,
req
.
(
*
UpdateClientReq
))
}
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
func
_Dex_DeleteClient_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
DeleteClientReq
)
if
err
:=
dec
(
in
);
err
!=
nil
{
...
...
@@ -884,6 +993,10 @@ var _Dex_serviceDesc = grpc.ServiceDesc{
MethodName
:
"CreateClient"
,
Handler
:
_Dex_CreateClient_Handler
,
},
{
MethodName
:
"UpdateClient"
,
Handler
:
_Dex_UpdateClient_Handler
,
},
{
MethodName
:
"DeleteClient"
,
Handler
:
_Dex_DeleteClient_Handler
,
...
...
@@ -924,56 +1037,59 @@ var _Dex_serviceDesc = grpc.ServiceDesc{
func
init
()
{
proto
.
RegisterFile
(
"api/api.proto"
,
fileDescriptor0
)
}
var
fileDescriptor0
=
[]
byte
{
// 801 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x8c
,
0x56
,
0x6d
,
0x4f
,
0xe3
,
0x46
,
0x10
,
0x4e
,
0xe2
,
0x90
,
0x38
,
0x93
,
0xf7
,
0x6d
,
0x00
,
0x13
,
0x54
,
0x09
,
0x16
,
0x55
,
0x02
,
0x55
,
0x0a
,
0x85
,
0x4a
,
0xad
,
0x54
,
0x54
,
0xfa
,
0x02
,
0x6d
,
0x41
,
0xaa
,
0x2a
,
0x64
,
0x35
,
0xfd
,
0x58
,
0xcb
,
0xc4
,
0x03
,
0xac
,
0x30
,
0xb6
,
0xbb
,
0xbb
,
0x21
,
0xf4
,
0xfe
,
0xdd
,
0xe9
,
0xfe
,
0xd8
,
0x69
,
0xd7
,
0x9b
,
0x60
,
0x3b
,
0xb9
,
0x0b
,
0xdf
,
0x3c
,
0xcf
,
0xce
,
0x3c
,
0xb3
,
0xf3
,
0xec
,
0xcc
,
0xc8
,
0xd0
,
0xf6
,
0x13
,
0x76
,
0xec
,
0x27
,
0x6c
,
0x94
,
0xf0
,
0x58
,
0xc6
,
0xc4
,
0xf2
,
0x13
,
0x46
,
0xdf
,
0x97
,
0xa1
,
0x76
,
0x11
,
0x32
,
0x8c
,
0x24
,
0xe9
,
0x40
,
0x85
,
0x05
,
0x4e
,
0x79
,
0xaf
,
0x7c
,
0xd8
,
0x70
,
0x2b
,
0x2c
,
0x20
,
0x5b
,
0x50
,
0x13
,
0x38
,
0xe1
,
0x28
,
0x9d
,
0x8a
,
0xc6
,
0x8c
,
0x45
,
0x0e
,
0xa0
,
0xcd
,
0x31
,
0x60
,
0x1c
,
0x27
,
0xd2
,
0x9b
,
0x72
,
0x26
,
0x1c
,
0x6b
,
0xcf
,
0x3a
,
0x6c
,
0xb8
,
0xad
,
0x39
,
0x38
,
0xe6
,
0x4c
,
0x28
,
0x27
,
0xc9
,
0xa7
,
0x42
,
0x62
,
0xe0
,
0x25
,
0x88
,
0x5c
,
0x38
,
0xd5
,
0xd4
,
0xc9
,
0x80
,
0x37
,
0x0a
,
0x53
,
0x19
,
0x92
,
0xe9
,
0x6d
,
0xc8
,
0x26
,
0xce
,
0xc6
,
0x5e
,
0xf9
,
0xd0
,
0x76
,
0x8d
,
0x45
,
0x08
,
0x54
,
0x23
,
0xff
,
0x09
,
0x9d
,
0x9a
,
0xce
,
0xab
,
0xbf
,
0xc9
,
0x0e
,
0xd8
,
0x61
,
0x7c
,
0x1f
,
0x7b
,
0x53
,
0x1e
,
0x3a
,
0x75
,
0x8d
,
0xd7
,
0x95
,
0x3d
,
0xe6
,
0x21
,
0xfd
,
0x0e
,
0xba
,
0x17
,
0x1c
,
0x7d
,
0x89
,
0x69
,
0x21
,
0x2e
,
0xfe
,
0x47
,
0x0e
,
0xa0
,
0x36
,
0xd1
,
0x86
,
0xae
,
0xa7
,
0x79
,
0xda
,
0x1c
,
0xa9
,
0xba
,
0xcd
,
0xb9
,
0x39
,
0xa2
,
0xff
,
0x42
,
0x2f
,
0x1f
,
0x27
,
0x12
,
0xf2
,
0x15
,
0x74
,
0xfc
,
0x90
,
0xa3
,
0x1f
,
0xfc
,
0xef
,
0xe1
,
0x0b
,
0x13
,
0x52
,
0x68
,
0x02
,
0xdb
,
0x6d
,
0x1b
,
0xf4
,
0x37
,
0x0d
,
0x66
,
0xf8
,
0x2b
,
0x9f
,
0xe6
,
0xdf
,
0x87
,
0xee
,
0x25
,
0x86
,
0x98
,
0xbd
,
0x57
,
0x41
,
0x63
,
0x7a
,
0x0c
,
0xbd
,
0xbc
,
0x8b
,
0x48
,
0xc8
,
0x2e
,
0x34
,
0xa2
,
0x58
,
0x7a
,
0x77
,
0xf1
,
0x34
,
0x0a
,
0x4c
,
0x76
,
0x3b
,
0x8a
,
0xe5
,
0xef
,
0xca
,
0xa6
,
0x0c
,
0xec
,
0x1b
,
0x5f
,
0x88
,
0x59
,
0xcc
,
0x03
,
0x32
,
0x80
,
0x0d
,
0x7c
,
0xf2
,
0x59
,
0x68
,
0xf8
,
0x52
,
0x43
,
0x89
,
0xf7
,
0xe0
,
0x8b
,
0x07
,
0x7d
,
0xb1
,
0x96
,
0xab
,
0xbf
,
0xc9
,
0x10
,
0xec
,
0xa9
,
0x40
,
0xae
,
0x45
,
0xb5
,
0xb4
,
0xf3
,
0xc2
,
0x26
,
0xdb
,
0x50
,
0x57
,
0xdf
,
0x1e
,
0x0b
,
0x9c
,
0x6a
,
0xfa
,
0xce
,
0xca
,
0xbc
,
0x0e
,
0xe8
,
0x39
,
0xf4
,
0x53
,
0x79
,
0xe6
,
0x09
,
0x55
,
0x01
,
0x47
,
0x60
,
0x27
,
0xc6
,
0x34
,
0xd2
,
0xb6
,
0x75
,
0xe9
,
0x0b
,
0x9f
,
0xc5
,
0x31
,
0x3d
,
0x03
,
0x52
,
0x8c
,
0x7f
,
0xb3
,
0xc0
,
0xf4
,
0x1e
,
0xfa
,
0xe3
,
0x24
,
0x28
,
0x24
,
0x5f
,
0x5d
,
0xf0
,
0x0e
,
0xd8
,
0x11
,
0xce
,
0xbc
,
0x4c
,
0xd1
,
0xf5
,
0x08
,
0x67
,
0x57
,
0xaa
,
0xee
,
0x7d
,
0x68
,
0xa9
,
0xa3
,
0x42
,
0xed
,
0xcd
,
0x08
,
0x67
,
0x63
,
0x03
,
0xd1
,
0x13
,
0x20
,
0xc5
,
0x44
,
0xeb
,
0xde
,
0xe0
,
0x08
,
0xfa
,
0xe9
,
0xa3
,
0xad
,
0xbd
,
0x9b
,
0x62
,
0x2f
,
0xba
,
0xae
,
0x63
,
0xef
,
0x43
,
0xf7
,
0x4f
,
0x26
,
0x64
,
0x86
,
0x9b
,
0xfe
,
0x04
,
0xbd
,
0x3c
,
0x24
,
0x12
,
0xf2
,
0x35
,
0x34
,
0xe6
,
0x4a
,
0x2b
,
0x09
,
0xad
,
0xe5
,
0x97
,
0x78
,
0x3d
,
0xa7
,
0x2d
,
0x80
,
0x7f
,
0x90
,
0x0b
,
0x16
,
0x47
,
0x8a
,
0xee
,
0x7b
,
0x68
,
0x2e
,
0x2c
,
0x91
,
0xa4
,
0x73
,
0xce
,
0x9f
,
0x91
,
0x9b
,
0xab
,
0x1b
,
0x8b
,
0xf4
,
0x40
,
0x6d
,
0x08
,
0x2d
,
0xe9
,
0x86
,
0xab
,
0x97
,
0xc5
,
0x3b
,
0xe8
,
0xba
,
0x78
,
0xc7
,
0x51
,
0x3c
,
0xfc
,
0x1d
,
0x3f
,
0x62
,
0xe4
,
0xe2
,
0xdd
,
0xd2
,
0xd2
,
0xd8
,
0x85
,
0x46
,
0xda
,
0xfd
,
0xaa
,
0x9f
,
0xd2
,
0xbd
,
0x61
,
0xa7
,
0xc0
,
0x75
,
0x40
,
0xbe
,
0x04
,
0x98
,
0xe8
,
0x8e
,
0x08
,
0x3c
,
0x5f
,
0xea
,
0x99
,
0xb7
,
0xdc
,
0x86
,
0x41
,
0x7e
,
0x91
,
0x2a
,
0x36
,
0xf4
,
0x85
,
0x54
,
0xcf
,
0x15
,
0xe8
,
0xd9
,
0xb7
,
0x5c
,
0x5b
,
0x01
,
0x63
,
0x81
,
0x4a
,
0xf4
,
0x8e
,
0xd2
,
0xc0
,
0xe4
,
0x57
,
0x8a
,
0x67
,
0x1a
,
0xb7
,
0x9c
,
0x6b
,
0xdc
,
0xbf
,
0x52
,
0x05
,
0x17
,
0xae
,
0x22
,
0x21
,
0x67
,
0xd0
,
0xe1
,
0xa9
,
0xe9
,
0x49
,
0x75
,
0xf5
,
0xb9
,
0x64
,
0x03
,
0x2d
,
0x59
,
0xa1
,
0x28
,
0xb7
,
0xcd
,
0x33
,
0x80
,
0xa0
,
0x57
,
0xd0
,
0x73
,
0xf1
,
0x39
,
0x7e
,
0xc4
,
0x37
,
0x24
,
0xff
,
0xac
,
0x00
,
0xf4
,
0x1b
,
0xe8
,
0x17
,
0x98
,
0xd6
,
0x74
,
0xc3
,
0xe9
,
0x87
,
0x2a
,
0x58
,
0x97
,
0xf8
,
0x42
,
0x7e
,
0x84
,
0x56
,
0x76
,
0x57
,
0x91
,
0xf4
,
0xe2
,
0x85
,
0xb5
,
0x37
,
0xdc
,
0x5c
,
0x81
,
0x8a
,
0x84
,
0x96
,
0x54
,
0x78
,
0x76
,
0xcf
,
0x98
,
0xf0
,
0xc2
,
0x76
,
0x32
,
0xe1
,
0xc5
,
0x85
,
0x44
,
0x4b
,
0xe4
,
0x02
,
0x3a
,
0xf9
,
0x51
,
0x26
,
0x5b
,
0x99
,
0x4c
,
0x99
,
0x56
,
0x1d
,
0x6e
,
0xaf
,
0xc4
,
0xe7
,
0x24
,
0xf9
,
0x49
,
0x33
,
0x24
,
0x4b
,
0x73
,
0x6e
,
0x48
,
0x96
,
0xc7
,
0x32
,
0x25
,
0xc9
,
0x0f
,
0x94
,
0x21
,
0x59
,
0x1a
,
0x48
,
0x43
,
0xb2
,
0x3c
,
0x7d
,
0xb4
,
0x44
,
0xce
,
0xa1
,
0x9d
,
0x9d
,
0x27
,
0x61
,
0xe4
,
0x28
,
0x8c
,
0x9d
,
0x91
,
0xa3
,
0x38
,
0x79
,
0xb4
,
0x44
,
0x4e
,
0x00
,
0xfe
,
0x40
,
0x69
,
0x66
,
0x88
,
0x74
,
0xb5
,
0xdb
,
0xeb
,
0x7c
,
0x0d
,
0x7b
,
0x79
,
0x40
,
0x87
,
0xfc
,
0x00
,
0xcd
,
0x4c
,
0x4f
,
0x92
,
0x2f
,
0x16
,
0xd4
,
0xaf
,
0x3d
,
0x35
,
0x1c
,
0x2c
,
0x83
,
0x3a
,
0xf6
,
0x67
,
0x68
,
0xe7
,
0xba
,
0x86
,
0x6c
,
0x9a
,
0xae
,
0xcd
,
0xf7
,
0xe4
,
0x70
,
0x6b
,
0x15
,
0xac
,
0x18
,
0x7e
,
0x1d
,
0x00
,
0x99
,
0xc4
,
0x4f
,
0xa3
,
0x49
,
0xcc
,
0x31
,
0x16
,
0xa3
,
0x00
,
0x5f
,
0x94
,
0xe7
,
0x6d
,
0x4d
,
0xff
,
0x07
,
0x7c
,
0xfb
,
0x31
,
0x00
,
0x00
,
0xff
,
0xff
,
0xbd
,
0x6a
,
0x64
,
0xe2
,
0x18
,
0x08
,
0x00
,
0x00
,
// 851 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x8c
,
0x56
,
0xdb
,
0x4e
,
0xf3
,
0x46
,
0x10
,
0x4e
,
0x62
,
0x92
,
0x38
,
0x93
,
0xf3
,
0x36
,
0x3f
,
0x84
,
0xa0
,
0x4a
,
0xb0
,
0xa8
,
0x12
,
0xa8
,
0x52
,
0x28
,
0x54
,
0x6a
,
0xa5
,
0xa2
,
0xd2
,
0x03
,
0xb4
,
0x05
,
0xa9
,
0xaa
,
0x90
,
0xd5
,
0xf4
,
0xb2
,
0x96
,
0x89
,
0x07
,
0x58
,
0x61
,
0x6c
,
0x77
,
0x77
,
0x43
,
0x68
,
0x2f
,
0xfb
,
0x48
,
0x7d
,
0x83
,
0xbe
,
0xd9
,
0xaf
,
0x5d
,
0x6f
,
0x82
,
0x0f
,
0x81
,
0x70
,
0xe7
,
0xf9
,
0x76
,
0xe6
,
0x9b
,
0xf3
,
0xc8
,
0xd0
,
0xf6
,
0x62
,
0x76
,
0xe4
,
0xc5
,
0x6c
,
0x1c
,
0xf3
,
0x48
,
0x46
,
0xc4
,
0xf2
,
0x62
,
0x46
,
0xff
,
0x2f
,
0x43
,
0xed
,
0x3c
,
0x60
,
0x18
,
0x4a
,
0xd2
,
0x81
,
0x0a
,
0xf3
,
0x87
,
0xe5
,
0xdd
,
0xf2
,
0x41
,
0xc3
,
0xa9
,
0x30
,
0x9f
,
0x6c
,
0x42
,
0x4d
,
0xe0
,
0x94
,
0xa3
,
0x1c
,
0x56
,
0x34
,
0x66
,
0x24
,
0xb2
,
0x0f
,
0x6d
,
0x8e
,
0x3e
,
0xe3
,
0x38
,
0x95
,
0xee
,
0x8c
,
0x33
,
0x31
,
0xb4
,
0x76
,
0xad
,
0x83
,
0x86
,
0xd3
,
0x5a
,
0x80
,
0x13
,
0xce
,
0x84
,
0x52
,
0x92
,
0x7c
,
0x26
,
0x24
,
0xfa
,
0x6e
,
0x8c
,
0xc8
,
0xc5
,
0x70
,
0x23
,
0x51
,
0x32
,
0xe0
,
0xb5
,
0xc2
,
0x94
,
0x87
,
0x78
,
0x76
,
0x13
,
0xb0
,
0xe9
,
0xb0
,
0xba
,
0x5b
,
0x3e
,
0xb0
,
0x1d
,
0x23
,
0x11
,
0x02
,
0x1b
,
0xa1
,
0xf7
,
0x88
,
0xc3
,
0x9a
,
0xf6
,
0xab
,
0xbf
,
0xc9
,
0x36
,
0xd8
,
0x41
,
0x74
,
0x17
,
0xb9
,
0x33
,
0x1e
,
0x0c
,
0xeb
,
0x1a
,
0xaf
,
0x2b
,
0x79
,
0xc2
,
0x03
,
0xfa
,
0x15
,
0x74
,
0xcf
,
0x39
,
0x7a
,
0x12
,
0x93
,
0x44
,
0x1c
,
0xfc
,
0x8b
,
0xec
,
0x43
,
0x6d
,
0xaa
,
0x05
,
0x9d
,
0x4f
,
0xf3
,
0xa4
,
0x39
,
0x56
,
0x79
,
0x9b
,
0x77
,
0xf3
,
0x44
,
0xff
,
0x84
,
0x5e
,
0xd6
,
0x4e
,
0xc4
,
0xe4
,
0x33
,
0xe8
,
0x78
,
0x01
,
0x47
,
0xcf
,
0xff
,
0xdb
,
0xc5
,
0x67
,
0x26
,
0xa4
,
0xd0
,
0x04
,
0xb6
,
0xd3
,
0x36
,
0xe8
,
0x4f
,
0x1a
,
0x4c
,
0xf1
,
0x57
,
0x5e
,
0xe7
,
0xdf
,
0x83
,
0xee
,
0x05
,
0x06
,
0x98
,
0x8e
,
0x2b
,
0x57
,
0x63
,
0x7a
,
0x04
,
0xbd
,
0xac
,
0x8a
,
0x88
,
0xc9
,
0x0e
,
0x34
,
0xc2
,
0x48
,
0xba
,
0xb7
,
0xd1
,
0x2c
,
0xf4
,
0x8d
,
0x77
,
0x3b
,
0x8c
,
0xe4
,
0xcf
,
0x4a
,
0xa6
,
0xff
,
0x95
,
0xa1
,
0x3b
,
0x89
,
0x7d
,
0xef
,
0x0d
,
0xd2
,
0x62
,
0x83
,
0x2a
,
0xef
,
0x69
,
0x90
,
0xf5
,
0x66
,
0x83
,
0x36
,
0x56
,
0x36
,
0xa8
,
0xfa
,
0x4a
,
0x83
,
0x6a
,
0xd9
,
0x06
,
0x1d
,
0x41
,
0x2f
,
0x1b
,
0xf3
,
0xba
,
0x2c
,
0x19
,
0xd8
,
0xd7
,
0x9e
,
0x10
,
0xf3
,
0x88
,
0xfb
,
0x64
,
0x00
,
0x55
,
0x7c
,
0xf4
,
0x58
,
0x60
,
0x12
,
0x4c
,
0x04
,
0x15
,
0xc1
,
0xbd
,
0x27
,
0xee
,
0x75
,
0xf9
,
0x5b
,
0x8e
,
0xfe
,
0x26
,
0x23
,
0xb0
,
0x67
,
0x02
,
0xb9
,
0x8e
,
0xcc
,
0xd2
,
0xca
,
0x4b
,
0x99
,
0x6c
,
0x41
,
0x5d
,
0x7d
,
0xbb
,
0xcc
,
0xd7
,
0xa9
,
0x34
,
0x9c
,
0x9a
,
0x12
,
0xaf
,
0x7c
,
0x7a
,
0x06
,
0xfd
,
0x64
,
0x08
,
0x16
,
0x0e
,
0x55
,
0x45
,
0x0f
,
0xc1
,
0x8e
,
0x8d
,
0x68
,
0x06
,
0xa8
,
0xad
,
0x1b
,
0xbc
,
0xd4
,
0x59
,
0x3e
,
0xd3
,
0x53
,
0x20
,
0x79
,
0xfb
,
0x77
,
0x8f
,
0x11
,
0xbd
,
0x83
,
0x7e
,
0x52
,
0x98
,
0xb4
,
0xf3
,
0xd5
,
0x09
,
0x6f
,
0x83
,
0x1d
,
0xe2
,
0xdc
,
0x4d
,
0x25
,
0x5d
,
0x0f
,
0x71
,
0x7e
,
0xa9
,
0xf2
,
0xde
,
0x83
,
0x96
,
0x7a
,
0xca
,
0xe5
,
0xde
,
0x0c
,
0x71
,
0x3e
,
0x31
,
0x10
,
0x3d
,
0x06
,
0x92
,
0x77
,
0xb4
,
0xae
,
0x07
,
0x87
,
0xd0
,
0x4f
,
0x46
,
0x73
,
0x6d
,
0x6c
,
0x8a
,
0x3d
,
0xaf
,
0xba
,
0x8e
,
0xbd
,
0x0f
,
0xdd
,
0x5f
,
0x99
,
0x90
,
0x29
,
0x6e
,
0xfa
,
0x1d
,
0xf4
,
0xb2
,
0x90
,
0x88
,
0xc9
,
0xe7
,
0xd0
,
0x58
,
0x54
,
0x5a
,
0x95
,
0xd0
,
0x2a
,
0x76
,
0xe2
,
0xe5
,
0x9d
,
0xb6
,
0x00
,
0xfe
,
0x40
,
0x2e
,
0x58
,
0x14
,
0x2a
,
0xba
,
0xaf
,
0xa1
,
0xb9
,
0x94
,
0x44
,
0x9c
,
0x5c
,
0x33
,
0xfe
,
0x84
,
0xdc
,
0x84
,
0x6e
,
0x24
,
0xd2
,
0x03
,
0x75
,
0x07
,
0x75
,
0x49
,
0xab
,
0x8e
,
0x3e
,
0x89
,
0xff
,
0x40
,
0xd7
,
0xc1
,
0x5b
,
0x8e
,
0xe2
,
0xfe
,
0xf7
,
0xe8
,
0x01
,
0x43
,
0x07
,
0x6f
,
0x0b
,
0x1b
,
0xb6
,
0x03
,
0x8d
,
0x64
,
0xc7
,
0xd5
,
0x3c
,
0x25
,
0xd7
,
0xd1
,
0x4e
,
0x80
,
0x2b
,
0x9f
,
0x7c
,
0x0a
,
0x30
,
0xd5
,
0x13
,
0xe1
,
0xbb
,
0x9e
,
0xd4
,
0x2b
,
0x62
,
0x39
,
0x0d
,
0x83
,
0xfc
,
0x20
,
0x95
,
0x6d
,
0xe0
,
0x09
,
0xa9
,
0xda
,
0xe5
,
0xeb
,
0x45
,
0xb1
,
0x1c
,
0x5b
,
0x01
,
0x13
,
0x81
,
0xaa
,
0xe8
,
0x1d
,
0x55
,
0x03
,
0xe3
,
0x5f
,
0x55
,
0x3c
,
0x35
,
0xb8
,
0xe5
,
0xcc
,
0xe0
,
0xfe
,
0x96
,
0x54
,
0x70
,
0xa9
,
0x2a
,
0x62
,
0x72
,
0x0a
,
0x1d
,
0x9e
,
0x88
,
0xae
,
0x54
,
0xa1
,
0x2f
,
0x4a
,
0x36
,
0xd0
,
0x25
,
0xcb
,
0x25
,
0xe5
,
0xb4
,
0x79
,
0x0a
,
0x10
,
0xf4
,
0x12
,
0x7a
,
0x0e
,
0x3e
,
0x45
,
0x0f
,
0xf8
,
0x0e
,
0xe7
,
0x6f
,
0x16
,
0x80
,
0x7e
,
0x01
,
0xfd
,
0x1c
,
0xd3
,
0x9a
,
0x69
,
0x38
,
0xf9
,
0xb7
,
0x0a
,
0xd6
,
0x05
,
0x3e
,
0x93
,
0x6f
,
0xa1
,
0x95
,
0xbe
,
0xc8
,
0x24
,
0x09
,
0x3c
,
0x77
,
0xdc
,
0x47
,
0x1f
,
0x56
,
0xa0
,
0x22
,
0xa6
,
0x25
,
0x65
,
0x9e
,
0xbe
,
0x33
,
0xc6
,
0x3c
,
0x77
,
0x2e
,
0x8d
,
0x79
,
0xfe
,
0x20
,
0x25
,
0xe6
,
0xe9
,
0x63
,
0x6c
,
0xcc
,
0x73
,
0x27
,
0xdc
,
0x98
,
0xe7
,
0xaf
,
0x36
,
0x2d
,
0x91
,
0x73
,
0xe8
,
0x64
,
0x2f
,
0x01
,
0xd9
,
0x4c
,
0x05
,
0x9a
,
0x9a
,
0xf4
,
0xd1
,
0xd6
,
0x4a
,
0x7c
,
0x41
,
0x92
,
0x5d
,
0x54
,
0x43
,
0x52
,
0x38
,
0x13
,
0x86
,
0xa4
,
0xb8
,
0xd5
,
0x09
,
0x49
,
0x76
,
0x1f
,
0x0d
,
0x49
,
0x61
,
0x9f
,
0x0d
,
0x49
,
0x71
,
0x79
,
0x69
,
0x89
,
0x9c
,
0x41
,
0x3b
,
0xbd
,
0x8e
,
0xc2
,
0x94
,
0x23
,
0xb7
,
0xb5
,
0xa6
,
0x1c
,
0xf9
,
0xc5
,
0xa5
,
0x25
,
0x72
,
0x0c
,
0xf0
,
0x0b
,
0x4a
,
0xb3
,
0x82
,
0xa4
,
0xab
,
0xd5
,
0x5e
,
0xd6
,
0x73
,
0xd4
,
0xcb
,
0x02
,
0xda
,
0xe4
,
0x1b
,
0x68
,
0xa6
,
0x46
,
0x9a
,
0x7c
,
0xb2
,
0xa4
,
0x7e
,
0x19
,
0xc9
,
0xd1
,
0xa0
,
0x08
,
0x6a
,
0xdb
,
0xef
,
0xa1
,
0x9d
,
0x19
,
0x3a
,
0xf2
,
0xc1
,
0x0c
,
0x7d
,
0x76
,
0xa4
,
0x47
,
0x9b
,
0xab
,
0x60
,
0xc5
,
0xf0
,
0xe3
,
0x00
,
0xc8
,
0x34
,
0x7a
,
0x1c
,
0x4f
,
0x23
,
0x8e
,
0x91
,
0x18
,
0xfb
,
0xf8
,
0xac
,
0x34
,
0x6f
,
0x6a
,
0xfa
,
0x67
,
0xe9
,
0xcb
,
0x8f
,
0x01
,
0x00
,
0x00
,
0xff
,
0xff
,
0xe8
,
0x39
,
0xfe
,
0xc5
,
0x3d
,
0x09
,
0x00
,
0x00
,
}
This diff is collapsed.
Click to expand it.
api/api.proto
+
17
−
0
View file @
9926a0dc
...
...
@@ -36,6 +36,21 @@ message DeleteClientResp {
bool
not_found
=
1
;
}
// UpdateClientReq is a request to update an exisitng client.
message
UpdateClientReq
{
string
id
=
1
;
repeated
string
redirect_uris
=
2
;
repeated
string
trusted_peers
=
3
;
bool
public
=
4
;
string
name
=
5
;
string
logo_url
=
6
;
}
// UpdateClientResp returns the reponse form updating a client.
message
UpdateClientResp
{
bool
not_found
=
1
;
}
// TODO(ericchiang): expand this.
// Password is an email for password mapping managed by the storage.
...
...
@@ -138,6 +153,8 @@ message RevokeRefreshResp {
service
Dex
{
// CreateClient creates a client.
rpc
CreateClient
(
CreateClientReq
)
returns
(
CreateClientResp
)
{};
// UpdateClient updates an exisitng client
rpc
UpdateClient
(
UpdateClientReq
)
returns
(
UpdateClientResp
)
{};
// DeleteClient deletes the provided client.
rpc
DeleteClient
(
DeleteClientReq
)
returns
(
DeleteClientResp
)
{};
// CreatePassword creates a password.
...
...
This diff is collapsed.
Click to expand it.
server/api.go
+
32
−
0
View file @
9926a0dc
...
...
@@ -80,6 +80,38 @@ func (d dexAPI) CreateClient(ctx context.Context, req *api.CreateClientReq) (*ap
},
nil
}
func
(
d
dexAPI
)
UpdateClient
(
ctx
context
.
Context
,
req
*
api
.
UpdateClientReq
)
(
*
api
.
UpdateClientResp
,
error
)
{
if
req
.
Id
==
""
{
return
nil
,
errors
.
New
(
"update client: no client ID supplied"
)
}
err
:=
d
.
s
.
UpdateClient
(
req
.
Id
,
func
(
old
storage
.
Client
)
(
storage
.
Client
,
error
)
{
if
req
.
RedirectUris
!=
nil
&&
len
(
req
.
RedirectUris
)
>
0
{
old
.
RedirectURIs
=
req
.
RedirectUris
}
if
req
.
TrustedPeers
!=
nil
&&
len
(
req
.
TrustedPeers
)
>
0
{
old
.
TrustedPeers
=
req
.
TrustedPeers
}
old
.
Public
=
req
.
Public
if
req
.
Name
!=
""
{
old
.
Name
=
req
.
Name
}
if
req
.
LogoUrl
!=
""
{
old
.
LogoURL
=
req
.
LogoUrl
}
return
old
,
nil
})
if
err
!=
nil
{
if
err
==
storage
.
ErrNotFound
{
return
&
api
.
UpdateClientResp
{
NotFound
:
true
},
nil
}
d
.
logger
.
Errorf
(
"api: failed to update the client: %v"
,
err
)
return
nil
,
fmt
.
Errorf
(
"update client: %v"
,
err
)
}
return
&
api
.
UpdateClientResp
{},
nil
}
func
(
d
dexAPI
)
DeleteClient
(
ctx
context
.
Context
,
req
*
api
.
DeleteClientReq
)
(
*
api
.
DeleteClientResp
,
error
)
{
err
:=
d
.
s
.
DeleteClient
(
req
.
Id
)
if
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment