Merge branch 'patch-1' of https://github.com/mr-c/arvados into mr-c-patch-1
[arvados.git] / lib / controller / localdb / conn.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package localdb
6
7 import (
8         "context"
9
10         "git.arvados.org/arvados.git/lib/controller/railsproxy"
11         "git.arvados.org/arvados.git/lib/controller/rpc"
12         "git.arvados.org/arvados.git/sdk/go/arvados"
13 )
14
15 type railsProxy = rpc.Conn
16
17 type Conn struct {
18         cluster     *arvados.Cluster
19         *railsProxy // handles API methods that aren't defined on Conn itself
20         loginController
21 }
22
23 func NewConn(cluster *arvados.Cluster) *Conn {
24         railsProxy := railsproxy.NewConn(cluster)
25         var conn Conn
26         conn = Conn{
27                 cluster:         cluster,
28                 railsProxy:      railsProxy,
29                 loginController: chooseLoginController(cluster, railsProxy),
30         }
31         return &conn
32 }
33
34 func (conn *Conn) Logout(ctx context.Context, opts arvados.LogoutOptions) (arvados.LogoutResponse, error) {
35         return conn.loginController.Logout(ctx, opts)
36 }
37
38 func (conn *Conn) Login(ctx context.Context, opts arvados.LoginOptions) (arvados.LoginResponse, error) {
39         return conn.loginController.Login(ctx, opts)
40 }
41
42 func (conn *Conn) UserAuthenticate(ctx context.Context, opts arvados.UserAuthenticateOptions) (arvados.APIClientAuthorization, error) {
43         return conn.loginController.UserAuthenticate(ctx, opts)
44 }