1package protocol
2
3// Package protocol contains data types and code for LSP jsonrpcs
4// generated automatically from vscode-languageserver-node
5// commit: 7b90c29d0cb5cd7b9c41084f6cb3781a955adeba
6// last fetched Thu Jan 23 2020 11:10:31 GMT-0500 (Eastern Standard Time)
7
8// Code generated (see typescript/README.md) DO NOT EDIT.
9
10import (
11	"context"
12	"encoding/json"
13
14	"golang.org/x/tools/internal/jsonrpc2"
15	"golang.org/x/tools/internal/telemetry/log"
16	"golang.org/x/tools/internal/xcontext"
17)
18
19type Client interface {
20	ShowMessage(context.Context, *ShowMessageParams) error
21	LogMessage(context.Context, *LogMessageParams) error
22	Event(context.Context, *interface{}) error
23	PublishDiagnostics(context.Context, *PublishDiagnosticsParams) error
24	WorkspaceFolders(context.Context) ([]WorkspaceFolder /*WorkspaceFolder[] | null*/, error)
25	Configuration(context.Context, *ParamConfiguration) ([]interface{}, error)
26	RegisterCapability(context.Context, *RegistrationParams) error
27	UnregisterCapability(context.Context, *UnregistrationParams) error
28	ShowMessageRequest(context.Context, *ShowMessageRequestParams) (*MessageActionItem /*MessageActionItem | null*/, error)
29	ApplyEdit(context.Context, *ApplyWorkspaceEditParams) (*ApplyWorkspaceEditResponse, error)
30}
31
32func (h clientHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, delivered bool) bool {
33	if delivered {
34		return false
35	}
36	if ctx.Err() != nil {
37		ctx := xcontext.Detach(ctx)
38		r.Reply(ctx, nil, jsonrpc2.NewErrorf(RequestCancelledError, ""))
39		return true
40	}
41	switch r.Method {
42	case "window/showMessage": // notif
43		var params ShowMessageParams
44		if err := json.Unmarshal(*r.Params, &params); err != nil {
45			sendParseError(ctx, r, err)
46			return true
47		}
48		if err := h.client.ShowMessage(ctx, &params); err != nil {
49			log.Error(ctx, "", err)
50		}
51		return true
52	case "window/logMessage": // notif
53		var params LogMessageParams
54		if err := json.Unmarshal(*r.Params, &params); err != nil {
55			sendParseError(ctx, r, err)
56			return true
57		}
58		if err := h.client.LogMessage(ctx, &params); err != nil {
59			log.Error(ctx, "", err)
60		}
61		return true
62	case "telemetry/event": // notif
63		var params interface{}
64		if err := json.Unmarshal(*r.Params, &params); err != nil {
65			sendParseError(ctx, r, err)
66			return true
67		}
68		if err := h.client.Event(ctx, &params); err != nil {
69			log.Error(ctx, "", err)
70		}
71		return true
72	case "textDocument/publishDiagnostics": // notif
73		var params PublishDiagnosticsParams
74		if err := json.Unmarshal(*r.Params, &params); err != nil {
75			sendParseError(ctx, r, err)
76			return true
77		}
78		if err := h.client.PublishDiagnostics(ctx, &params); err != nil {
79			log.Error(ctx, "", err)
80		}
81		return true
82	case "workspace/workspaceFolders": // req
83		if r.Params != nil {
84			r.Reply(ctx, nil, jsonrpc2.NewErrorf(jsonrpc2.CodeInvalidParams, "Expected no params"))
85			return true
86		}
87		resp, err := h.client.WorkspaceFolders(ctx)
88		if err := r.Reply(ctx, resp, err); err != nil {
89			log.Error(ctx, "", err)
90		}
91		return true
92	case "workspace/configuration": // req
93		var params ParamConfiguration
94		if err := json.Unmarshal(*r.Params, &params); err != nil {
95			sendParseError(ctx, r, err)
96			return true
97		}
98		resp, err := h.client.Configuration(ctx, &params)
99		if err := r.Reply(ctx, resp, err); err != nil {
100			log.Error(ctx, "", err)
101		}
102		return true
103	case "client/registerCapability": // req
104		var params RegistrationParams
105		if err := json.Unmarshal(*r.Params, &params); err != nil {
106			sendParseError(ctx, r, err)
107			return true
108		}
109		err := h.client.RegisterCapability(ctx, &params)
110		if err := r.Reply(ctx, nil, err); err != nil {
111			log.Error(ctx, "", err)
112		}
113		return true
114	case "client/unregisterCapability": // req
115		var params UnregistrationParams
116		if err := json.Unmarshal(*r.Params, &params); err != nil {
117			sendParseError(ctx, r, err)
118			return true
119		}
120		err := h.client.UnregisterCapability(ctx, &params)
121		if err := r.Reply(ctx, nil, err); err != nil {
122			log.Error(ctx, "", err)
123		}
124		return true
125	case "window/showMessageRequest": // req
126		var params ShowMessageRequestParams
127		if err := json.Unmarshal(*r.Params, &params); err != nil {
128			sendParseError(ctx, r, err)
129			return true
130		}
131		resp, err := h.client.ShowMessageRequest(ctx, &params)
132		if err := r.Reply(ctx, resp, err); err != nil {
133			log.Error(ctx, "", err)
134		}
135		return true
136	case "workspace/applyEdit": // req
137		var params ApplyWorkspaceEditParams
138		if err := json.Unmarshal(*r.Params, &params); err != nil {
139			sendParseError(ctx, r, err)
140			return true
141		}
142		resp, err := h.client.ApplyEdit(ctx, &params)
143		if err := r.Reply(ctx, resp, err); err != nil {
144			log.Error(ctx, "", err)
145		}
146		return true
147	default:
148		return false
149
150	}
151}
152
153type clientDispatcher struct {
154	*jsonrpc2.Conn
155}
156
157func (s *clientDispatcher) ShowMessage(ctx context.Context, params *ShowMessageParams) error {
158	return s.Conn.Notify(ctx, "window/showMessage", params)
159}
160
161func (s *clientDispatcher) LogMessage(ctx context.Context, params *LogMessageParams) error {
162	return s.Conn.Notify(ctx, "window/logMessage", params)
163}
164
165func (s *clientDispatcher) Event(ctx context.Context, params *interface{}) error {
166	return s.Conn.Notify(ctx, "telemetry/event", params)
167}
168
169func (s *clientDispatcher) PublishDiagnostics(ctx context.Context, params *PublishDiagnosticsParams) error {
170	return s.Conn.Notify(ctx, "textDocument/publishDiagnostics", params)
171}
172func (s *clientDispatcher) WorkspaceFolders(ctx context.Context) ([]WorkspaceFolder /*WorkspaceFolder[] | null*/, error) {
173	var result []WorkspaceFolder /*WorkspaceFolder[] | null*/
174	if err := s.Conn.Call(ctx, "workspace/workspaceFolders", nil, &result); err != nil {
175		return nil, err
176	}
177	return result, nil
178}
179
180func (s *clientDispatcher) Configuration(ctx context.Context, params *ParamConfiguration) ([]interface{}, error) {
181	var result []interface{}
182	if err := s.Conn.Call(ctx, "workspace/configuration", params, &result); err != nil {
183		return nil, err
184	}
185	return result, nil
186}
187
188func (s *clientDispatcher) RegisterCapability(ctx context.Context, params *RegistrationParams) error {
189	return s.Conn.Call(ctx, "client/registerCapability", params, nil) // Call, not Notify
190}
191
192func (s *clientDispatcher) UnregisterCapability(ctx context.Context, params *UnregistrationParams) error {
193	return s.Conn.Call(ctx, "client/unregisterCapability", params, nil) // Call, not Notify
194}
195
196func (s *clientDispatcher) ShowMessageRequest(ctx context.Context, params *ShowMessageRequestParams) (*MessageActionItem /*MessageActionItem | null*/, error) {
197	var result MessageActionItem /*MessageActionItem | null*/
198	if err := s.Conn.Call(ctx, "window/showMessageRequest", params, &result); err != nil {
199		return nil, err
200	}
201	return &result, nil
202}
203
204func (s *clientDispatcher) ApplyEdit(ctx context.Context, params *ApplyWorkspaceEditParams) (*ApplyWorkspaceEditResponse, error) {
205	var result ApplyWorkspaceEditResponse
206	if err := s.Conn.Call(ctx, "workspace/applyEdit", params, &result); err != nil {
207		return nil, err
208	}
209	return &result, nil
210}
211