1// Copyright 2015 Keybase, Inc. All rights reserved. Use of
2// this source code is governed by the included BSD license.
3
4package client
5
6import (
7	"github.com/keybase/client/go/libkb"
8	keybase1 "github.com/keybase/client/go/protocol/keybase1"
9	"github.com/keybase/go-framed-msgpack-rpc/rpc"
10	"golang.org/x/net/context"
11)
12
13type IdentifyUIServer struct {
14	libkb.Contextified
15	ui libkb.IdentifyUI
16}
17
18func NewIdentifyUIProtocol(g *libkb.GlobalContext) rpc.Protocol {
19	return keybase1.IdentifyUiProtocol(&IdentifyUIServer{
20		Contextified: libkb.NewContextified(g),
21		ui:           g.UI.GetIdentifyUI(),
22	})
23}
24
25func NewIdentifyTrackUIProtocol(g *libkb.GlobalContext) rpc.Protocol {
26	ui := g.UI.GetIdentifyTrackUI()
27	return keybase1.IdentifyUiProtocol(&IdentifyUIServer{
28		Contextified: libkb.NewContextified(g),
29		ui:           ui,
30	})
31}
32
33func (i *IdentifyUIServer) newMetaContext(ctx context.Context) libkb.MetaContext {
34	return libkb.NewMetaContext(ctx, i.G())
35}
36
37func (i *IdentifyUIServer) DelegateIdentifyUI(_ context.Context) (int, error) {
38	return 0, libkb.UIDelegationUnavailableError{}
39}
40
41func (i *IdentifyUIServer) Confirm(ctx context.Context, arg keybase1.ConfirmArg) (keybase1.ConfirmResult, error) {
42	return i.ui.Confirm(i.newMetaContext(ctx), &arg.Outcome)
43}
44
45func (i *IdentifyUIServer) FinishWebProofCheck(ctx context.Context, arg keybase1.FinishWebProofCheckArg) error {
46	return i.ui.FinishWebProofCheck(i.newMetaContext(ctx), arg.Rp, arg.Lcr)
47}
48
49func (i *IdentifyUIServer) FinishSocialProofCheck(ctx context.Context, arg keybase1.FinishSocialProofCheckArg) error {
50	return i.ui.FinishSocialProofCheck(i.newMetaContext(ctx), arg.Rp, arg.Lcr)
51}
52
53func (i *IdentifyUIServer) DisplayCryptocurrency(ctx context.Context, arg keybase1.DisplayCryptocurrencyArg) error {
54	return i.ui.DisplayCryptocurrency(i.newMetaContext(ctx), arg.C)
55}
56
57func (i *IdentifyUIServer) DisplayStellarAccount(ctx context.Context, arg keybase1.DisplayStellarAccountArg) error {
58	return i.ui.DisplayStellarAccount(i.newMetaContext(ctx), arg.A)
59}
60
61func (i *IdentifyUIServer) DisplayKey(ctx context.Context, arg keybase1.DisplayKeyArg) error {
62	return i.ui.DisplayKey(i.newMetaContext(ctx), arg.Key)
63}
64
65func (i *IdentifyUIServer) ReportLastTrack(ctx context.Context, arg keybase1.ReportLastTrackArg) error {
66	return i.ui.ReportLastTrack(i.newMetaContext(ctx), arg.Track)
67}
68
69func (i *IdentifyUIServer) LaunchNetworkChecks(ctx context.Context, arg keybase1.LaunchNetworkChecksArg) error {
70	return nil
71}
72
73func (i *IdentifyUIServer) DisplayTrackStatement(ctx context.Context, arg keybase1.DisplayTrackStatementArg) error {
74	return i.ui.DisplayTrackStatement(i.newMetaContext(ctx), arg.Stmt)
75}
76
77func (i *IdentifyUIServer) ReportTrackToken(ctx context.Context, arg keybase1.ReportTrackTokenArg) error {
78	return i.ui.ReportTrackToken(i.newMetaContext(ctx), arg.TrackToken)
79}
80
81func (i *IdentifyUIServer) DisplayUserCard(ctx context.Context, arg keybase1.DisplayUserCardArg) error {
82	return i.ui.DisplayUserCard(i.newMetaContext(ctx), arg.Card)
83}
84
85func (i *IdentifyUIServer) Start(ctx context.Context, arg keybase1.StartArg) error {
86	return i.ui.Start(i.newMetaContext(ctx), arg.Username, arg.Reason, arg.ForceDisplay)
87}
88
89func (i *IdentifyUIServer) Cancel(ctx context.Context, sessionID int) error {
90	return i.ui.Cancel(i.newMetaContext(ctx))
91}
92
93func (i *IdentifyUIServer) Finish(ctx context.Context, sessionID int) error {
94	return i.ui.Finish(i.newMetaContext(ctx))
95}
96
97func (i *IdentifyUIServer) Dismiss(ctx context.Context, arg keybase1.DismissArg) error {
98	return i.ui.Dismiss(i.newMetaContext(ctx), arg.Username, arg.Reason)
99}
100
101func (i *IdentifyUIServer) DisplayTLFCreateWithInvite(ctx context.Context, arg keybase1.DisplayTLFCreateWithInviteArg) error {
102	return i.ui.DisplayTLFCreateWithInvite(i.newMetaContext(ctx), arg)
103}
104
105func NewNullIdentifyUIProtocol() rpc.Protocol {
106	return keybase1.IdentifyUiProtocol(&nullIdentifyUI{})
107}
108
109type nullIdentifyUI struct{}
110
111func (c nullIdentifyUI) Start(context.Context, keybase1.StartArg) error {
112	return nil
113}
114func (c nullIdentifyUI) FinishWebProofCheck(context.Context, keybase1.FinishWebProofCheckArg) error {
115	return nil
116}
117func (c nullIdentifyUI) FinishSocialProofCheck(context.Context, keybase1.FinishSocialProofCheckArg) error {
118	return nil
119}
120func (c nullIdentifyUI) Confirm(context.Context, keybase1.ConfirmArg) (keybase1.ConfirmResult, error) {
121	return keybase1.ConfirmResult{}, nil
122}
123func (c nullIdentifyUI) DisplayCryptocurrency(context.Context, keybase1.DisplayCryptocurrencyArg) error {
124	return nil
125}
126func (c nullIdentifyUI) DisplayStellarAccount(context.Context, keybase1.DisplayStellarAccountArg) error {
127	return nil
128}
129func (c nullIdentifyUI) DisplayKey(context.Context, keybase1.DisplayKeyArg) error { return nil }
130func (c nullIdentifyUI) ReportLastTrack(context.Context, keybase1.ReportLastTrackArg) error {
131	return nil
132}
133func (c nullIdentifyUI) LaunchNetworkChecks(context.Context, keybase1.LaunchNetworkChecksArg) error {
134	return nil
135}
136func (c nullIdentifyUI) DisplayTrackStatement(context.Context, keybase1.DisplayTrackStatementArg) error {
137	return nil
138}
139func (c nullIdentifyUI) DisplayUserCard(context.Context, keybase1.DisplayUserCardArg) error {
140	return nil
141}
142func (c nullIdentifyUI) ReportTrackToken(context.Context, keybase1.ReportTrackTokenArg) error {
143	return nil
144}
145func (c nullIdentifyUI) Cancel(context.Context, int) error { return nil }
146func (c nullIdentifyUI) Finish(context.Context, int) error { return nil }
147func (c nullIdentifyUI) DisplayTLFCreateWithInvite(context.Context, keybase1.DisplayTLFCreateWithInviteArg) error {
148	return nil
149}
150func (c nullIdentifyUI) Dismiss(context.Context, keybase1.DismissArg) error { return nil }
151func (c nullIdentifyUI) DelegateIdentifyUI(context.Context) (int, error)    { return 0, nil }
152