• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 13412100018

19 Feb 2025 12:05PM UTC coverage: 44.914% (-13.9%) from 58.794%
13412100018

Pull #9521

github

web-flow
Merge 861d6970e into 0e8786348
Pull Request #9521: unit: remove GOACC, use Go 1.20 native coverage functionality

101023 of 224923 relevant lines covered (44.91%)

19479.4 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/lnrpc/wtclientrpc/wtclient.pb.gw.go
1
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
2
// source: wtclientrpc/wtclient.proto
3

4
/*
5
Package wtclientrpc is a reverse proxy.
6

7
It translates gRPC into RESTful JSON APIs.
8
*/
9
package wtclientrpc
10

11
import (
12
        "context"
13
        "io"
14
        "net/http"
15

16
        "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
17
        "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
18
        "google.golang.org/grpc"
19
        "google.golang.org/grpc/codes"
20
        "google.golang.org/grpc/grpclog"
21
        "google.golang.org/grpc/metadata"
22
        "google.golang.org/grpc/status"
23
        "google.golang.org/protobuf/proto"
24
)
25

26
// Suppress "imported and not used" errors
27
var _ codes.Code
28
var _ io.Reader
29
var _ status.Status
30
var _ = runtime.String
31
var _ = utilities.NewDoubleArray
32
var _ = metadata.Join
33

34
func request_WatchtowerClient_AddTower_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
35
        var protoReq AddTowerRequest
×
36
        var metadata runtime.ServerMetadata
×
37

×
38
        newReader, berr := utilities.IOReaderFactory(req.Body)
×
39
        if berr != nil {
×
40
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
×
41
        }
×
42
        if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
×
43
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
44
        }
×
45

46
        msg, err := client.AddTower(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
47
        return msg, metadata, err
×
48

49
}
50

51
func local_request_WatchtowerClient_AddTower_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
52
        var protoReq AddTowerRequest
×
53
        var metadata runtime.ServerMetadata
×
54

×
55
        newReader, berr := utilities.IOReaderFactory(req.Body)
×
56
        if berr != nil {
×
57
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
×
58
        }
×
59
        if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
×
60
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
61
        }
×
62

63
        msg, err := server.AddTower(ctx, &protoReq)
×
64
        return msg, metadata, err
×
65

66
}
67

68
var (
69
        filter_WatchtowerClient_RemoveTower_0 = &utilities.DoubleArray{Encoding: map[string]int{"pubkey": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
70
)
71

72
func request_WatchtowerClient_RemoveTower_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
73
        var protoReq RemoveTowerRequest
×
74
        var metadata runtime.ServerMetadata
×
75

×
76
        var (
×
77
                val string
×
78
                ok  bool
×
79
                err error
×
80
                _   = err
×
81
        )
×
82

×
83
        val, ok = pathParams["pubkey"]
×
84
        if !ok {
×
85
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pubkey")
×
86
        }
×
87

88
        protoReq.Pubkey, err = runtime.Bytes(val)
×
89
        if err != nil {
×
90
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubkey", err)
×
91
        }
×
92

93
        if err := req.ParseForm(); err != nil {
×
94
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
95
        }
×
96
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_RemoveTower_0); err != nil {
×
97
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
98
        }
×
99

100
        msg, err := client.RemoveTower(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
101
        return msg, metadata, err
×
102

103
}
104

105
func local_request_WatchtowerClient_RemoveTower_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
106
        var protoReq RemoveTowerRequest
×
107
        var metadata runtime.ServerMetadata
×
108

×
109
        var (
×
110
                val string
×
111
                ok  bool
×
112
                err error
×
113
                _   = err
×
114
        )
×
115

×
116
        val, ok = pathParams["pubkey"]
×
117
        if !ok {
×
118
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pubkey")
×
119
        }
×
120

121
        protoReq.Pubkey, err = runtime.Bytes(val)
×
122
        if err != nil {
×
123
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubkey", err)
×
124
        }
×
125

126
        if err := req.ParseForm(); err != nil {
×
127
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
128
        }
×
129
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_RemoveTower_0); err != nil {
×
130
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
131
        }
×
132

133
        msg, err := server.RemoveTower(ctx, &protoReq)
×
134
        return msg, metadata, err
×
135

136
}
137

138
func request_WatchtowerClient_DeactivateTower_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
139
        var protoReq DeactivateTowerRequest
×
140
        var metadata runtime.ServerMetadata
×
141

×
142
        var (
×
143
                val string
×
144
                ok  bool
×
145
                err error
×
146
                _   = err
×
147
        )
×
148

×
149
        val, ok = pathParams["pubkey"]
×
150
        if !ok {
×
151
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pubkey")
×
152
        }
×
153

154
        protoReq.Pubkey, err = runtime.Bytes(val)
×
155
        if err != nil {
×
156
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubkey", err)
×
157
        }
×
158

159
        msg, err := client.DeactivateTower(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
160
        return msg, metadata, err
×
161

162
}
163

164
func local_request_WatchtowerClient_DeactivateTower_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
165
        var protoReq DeactivateTowerRequest
×
166
        var metadata runtime.ServerMetadata
×
167

×
168
        var (
×
169
                val string
×
170
                ok  bool
×
171
                err error
×
172
                _   = err
×
173
        )
×
174

×
175
        val, ok = pathParams["pubkey"]
×
176
        if !ok {
×
177
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pubkey")
×
178
        }
×
179

180
        protoReq.Pubkey, err = runtime.Bytes(val)
×
181
        if err != nil {
×
182
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubkey", err)
×
183
        }
×
184

185
        msg, err := server.DeactivateTower(ctx, &protoReq)
×
186
        return msg, metadata, err
×
187

188
}
189

190
func request_WatchtowerClient_TerminateSession_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
191
        var protoReq TerminateSessionRequest
×
192
        var metadata runtime.ServerMetadata
×
193

×
194
        var (
×
195
                val string
×
196
                ok  bool
×
197
                err error
×
198
                _   = err
×
199
        )
×
200

×
201
        val, ok = pathParams["session_id"]
×
202
        if !ok {
×
203
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "session_id")
×
204
        }
×
205

206
        protoReq.SessionId, err = runtime.Bytes(val)
×
207
        if err != nil {
×
208
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "session_id", err)
×
209
        }
×
210

211
        msg, err := client.TerminateSession(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
212
        return msg, metadata, err
×
213

214
}
215

216
func local_request_WatchtowerClient_TerminateSession_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
217
        var protoReq TerminateSessionRequest
×
218
        var metadata runtime.ServerMetadata
×
219

×
220
        var (
×
221
                val string
×
222
                ok  bool
×
223
                err error
×
224
                _   = err
×
225
        )
×
226

×
227
        val, ok = pathParams["session_id"]
×
228
        if !ok {
×
229
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "session_id")
×
230
        }
×
231

232
        protoReq.SessionId, err = runtime.Bytes(val)
×
233
        if err != nil {
×
234
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "session_id", err)
×
235
        }
×
236

237
        msg, err := server.TerminateSession(ctx, &protoReq)
×
238
        return msg, metadata, err
×
239

240
}
241

242
var (
243
        filter_WatchtowerClient_ListTowers_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
244
)
245

246
func request_WatchtowerClient_ListTowers_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
247
        var protoReq ListTowersRequest
×
248
        var metadata runtime.ServerMetadata
×
249

×
250
        if err := req.ParseForm(); err != nil {
×
251
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
252
        }
×
253
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_ListTowers_0); err != nil {
×
254
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
255
        }
×
256

257
        msg, err := client.ListTowers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
258
        return msg, metadata, err
×
259

260
}
261

262
func local_request_WatchtowerClient_ListTowers_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
263
        var protoReq ListTowersRequest
×
264
        var metadata runtime.ServerMetadata
×
265

×
266
        if err := req.ParseForm(); err != nil {
×
267
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
268
        }
×
269
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_ListTowers_0); err != nil {
×
270
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
271
        }
×
272

273
        msg, err := server.ListTowers(ctx, &protoReq)
×
274
        return msg, metadata, err
×
275

276
}
277

278
var (
279
        filter_WatchtowerClient_GetTowerInfo_0 = &utilities.DoubleArray{Encoding: map[string]int{"pubkey": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
280
)
281

282
func request_WatchtowerClient_GetTowerInfo_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
283
        var protoReq GetTowerInfoRequest
×
284
        var metadata runtime.ServerMetadata
×
285

×
286
        var (
×
287
                val string
×
288
                ok  bool
×
289
                err error
×
290
                _   = err
×
291
        )
×
292

×
293
        val, ok = pathParams["pubkey"]
×
294
        if !ok {
×
295
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pubkey")
×
296
        }
×
297

298
        protoReq.Pubkey, err = runtime.Bytes(val)
×
299
        if err != nil {
×
300
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubkey", err)
×
301
        }
×
302

303
        if err := req.ParseForm(); err != nil {
×
304
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
305
        }
×
306
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_GetTowerInfo_0); err != nil {
×
307
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
308
        }
×
309

310
        msg, err := client.GetTowerInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
311
        return msg, metadata, err
×
312

313
}
314

315
func local_request_WatchtowerClient_GetTowerInfo_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
316
        var protoReq GetTowerInfoRequest
×
317
        var metadata runtime.ServerMetadata
×
318

×
319
        var (
×
320
                val string
×
321
                ok  bool
×
322
                err error
×
323
                _   = err
×
324
        )
×
325

×
326
        val, ok = pathParams["pubkey"]
×
327
        if !ok {
×
328
                return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "pubkey")
×
329
        }
×
330

331
        protoReq.Pubkey, err = runtime.Bytes(val)
×
332
        if err != nil {
×
333
                return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubkey", err)
×
334
        }
×
335

336
        if err := req.ParseForm(); err != nil {
×
337
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
338
        }
×
339
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_GetTowerInfo_0); err != nil {
×
340
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
341
        }
×
342

343
        msg, err := server.GetTowerInfo(ctx, &protoReq)
×
344
        return msg, metadata, err
×
345

346
}
347

348
func request_WatchtowerClient_Stats_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
349
        var protoReq StatsRequest
×
350
        var metadata runtime.ServerMetadata
×
351

×
352
        msg, err := client.Stats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
353
        return msg, metadata, err
×
354

×
355
}
×
356

357
func local_request_WatchtowerClient_Stats_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
358
        var protoReq StatsRequest
×
359
        var metadata runtime.ServerMetadata
×
360

×
361
        msg, err := server.Stats(ctx, &protoReq)
×
362
        return msg, metadata, err
×
363

×
364
}
×
365

366
var (
367
        filter_WatchtowerClient_Policy_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
368
)
369

370
func request_WatchtowerClient_Policy_0(ctx context.Context, marshaler runtime.Marshaler, client WatchtowerClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
371
        var protoReq PolicyRequest
×
372
        var metadata runtime.ServerMetadata
×
373

×
374
        if err := req.ParseForm(); err != nil {
×
375
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
376
        }
×
377
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_Policy_0); err != nil {
×
378
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
379
        }
×
380

381
        msg, err := client.Policy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
×
382
        return msg, metadata, err
×
383

384
}
385

386
func local_request_WatchtowerClient_Policy_0(ctx context.Context, marshaler runtime.Marshaler, server WatchtowerClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
×
387
        var protoReq PolicyRequest
×
388
        var metadata runtime.ServerMetadata
×
389

×
390
        if err := req.ParseForm(); err != nil {
×
391
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
392
        }
×
393
        if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_WatchtowerClient_Policy_0); err != nil {
×
394
                return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
×
395
        }
×
396

397
        msg, err := server.Policy(ctx, &protoReq)
×
398
        return msg, metadata, err
×
399

400
}
401

402
// RegisterWatchtowerClientHandlerServer registers the http handlers for service WatchtowerClient to "mux".
403
// UnaryRPC     :call WatchtowerClientServer directly.
404
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
405
// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterWatchtowerClientHandlerFromEndpoint instead.
406
func RegisterWatchtowerClientHandlerServer(ctx context.Context, mux *runtime.ServeMux, server WatchtowerClientServer) error {
×
407

×
408
        mux.Handle("POST", pattern_WatchtowerClient_AddTower_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
409
                ctx, cancel := context.WithCancel(req.Context())
×
410
                defer cancel()
×
411
                var stream runtime.ServerTransportStream
×
412
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
413
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
414
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/AddTower", runtime.WithHTTPPathPattern("/v2/watchtower/client"))
×
415
                if err != nil {
×
416
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
417
                        return
×
418
                }
×
419
                resp, md, err := local_request_WatchtowerClient_AddTower_0(rctx, inboundMarshaler, server, req, pathParams)
×
420
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
421
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
422
                if err != nil {
×
423
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
424
                        return
×
425
                }
×
426

427
                forward_WatchtowerClient_AddTower_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
428

429
        })
430

431
        mux.Handle("DELETE", pattern_WatchtowerClient_RemoveTower_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
432
                ctx, cancel := context.WithCancel(req.Context())
×
433
                defer cancel()
×
434
                var stream runtime.ServerTransportStream
×
435
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
436
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
437
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/RemoveTower", runtime.WithHTTPPathPattern("/v2/watchtower/client/{pubkey}"))
×
438
                if err != nil {
×
439
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
440
                        return
×
441
                }
×
442
                resp, md, err := local_request_WatchtowerClient_RemoveTower_0(rctx, inboundMarshaler, server, req, pathParams)
×
443
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
444
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
445
                if err != nil {
×
446
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
447
                        return
×
448
                }
×
449

450
                forward_WatchtowerClient_RemoveTower_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
451

452
        })
453

454
        mux.Handle("POST", pattern_WatchtowerClient_DeactivateTower_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
455
                ctx, cancel := context.WithCancel(req.Context())
×
456
                defer cancel()
×
457
                var stream runtime.ServerTransportStream
×
458
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
459
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
460
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/DeactivateTower", runtime.WithHTTPPathPattern("/v2/watchtower/client/tower/deactivate/{pubkey}"))
×
461
                if err != nil {
×
462
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
463
                        return
×
464
                }
×
465
                resp, md, err := local_request_WatchtowerClient_DeactivateTower_0(rctx, inboundMarshaler, server, req, pathParams)
×
466
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
467
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
468
                if err != nil {
×
469
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
470
                        return
×
471
                }
×
472

473
                forward_WatchtowerClient_DeactivateTower_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
474

475
        })
476

477
        mux.Handle("POST", pattern_WatchtowerClient_TerminateSession_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
478
                ctx, cancel := context.WithCancel(req.Context())
×
479
                defer cancel()
×
480
                var stream runtime.ServerTransportStream
×
481
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
482
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
483
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/TerminateSession", runtime.WithHTTPPathPattern("/v2/watchtower/client/sessions/terminate/{session_id}"))
×
484
                if err != nil {
×
485
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
486
                        return
×
487
                }
×
488
                resp, md, err := local_request_WatchtowerClient_TerminateSession_0(rctx, inboundMarshaler, server, req, pathParams)
×
489
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
490
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
491
                if err != nil {
×
492
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
493
                        return
×
494
                }
×
495

496
                forward_WatchtowerClient_TerminateSession_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
497

498
        })
499

500
        mux.Handle("GET", pattern_WatchtowerClient_ListTowers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
501
                ctx, cancel := context.WithCancel(req.Context())
×
502
                defer cancel()
×
503
                var stream runtime.ServerTransportStream
×
504
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
505
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
506
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/ListTowers", runtime.WithHTTPPathPattern("/v2/watchtower/client"))
×
507
                if err != nil {
×
508
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
509
                        return
×
510
                }
×
511
                resp, md, err := local_request_WatchtowerClient_ListTowers_0(rctx, inboundMarshaler, server, req, pathParams)
×
512
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
513
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
514
                if err != nil {
×
515
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
516
                        return
×
517
                }
×
518

519
                forward_WatchtowerClient_ListTowers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
520

521
        })
522

523
        mux.Handle("GET", pattern_WatchtowerClient_GetTowerInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
524
                ctx, cancel := context.WithCancel(req.Context())
×
525
                defer cancel()
×
526
                var stream runtime.ServerTransportStream
×
527
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
528
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
529
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/GetTowerInfo", runtime.WithHTTPPathPattern("/v2/watchtower/client/info/{pubkey}"))
×
530
                if err != nil {
×
531
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
532
                        return
×
533
                }
×
534
                resp, md, err := local_request_WatchtowerClient_GetTowerInfo_0(rctx, inboundMarshaler, server, req, pathParams)
×
535
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
536
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
537
                if err != nil {
×
538
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
539
                        return
×
540
                }
×
541

542
                forward_WatchtowerClient_GetTowerInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
543

544
        })
545

546
        mux.Handle("GET", pattern_WatchtowerClient_Stats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
547
                ctx, cancel := context.WithCancel(req.Context())
×
548
                defer cancel()
×
549
                var stream runtime.ServerTransportStream
×
550
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
551
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
552
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/Stats", runtime.WithHTTPPathPattern("/v2/watchtower/client/stats"))
×
553
                if err != nil {
×
554
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
555
                        return
×
556
                }
×
557
                resp, md, err := local_request_WatchtowerClient_Stats_0(rctx, inboundMarshaler, server, req, pathParams)
×
558
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
559
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
560
                if err != nil {
×
561
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
562
                        return
×
563
                }
×
564

565
                forward_WatchtowerClient_Stats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
566

567
        })
568

569
        mux.Handle("GET", pattern_WatchtowerClient_Policy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
570
                ctx, cancel := context.WithCancel(req.Context())
×
571
                defer cancel()
×
572
                var stream runtime.ServerTransportStream
×
573
                ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
×
574
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
575
                rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/Policy", runtime.WithHTTPPathPattern("/v2/watchtower/client/policy"))
×
576
                if err != nil {
×
577
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
578
                        return
×
579
                }
×
580
                resp, md, err := local_request_WatchtowerClient_Policy_0(rctx, inboundMarshaler, server, req, pathParams)
×
581
                md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
×
582
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
583
                if err != nil {
×
584
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
585
                        return
×
586
                }
×
587

588
                forward_WatchtowerClient_Policy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
589

590
        })
591

592
        return nil
×
593
}
594

595
// RegisterWatchtowerClientHandlerFromEndpoint is same as RegisterWatchtowerClientHandler but
596
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
597
func RegisterWatchtowerClientHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
×
598
        conn, err := grpc.Dial(endpoint, opts...)
×
599
        if err != nil {
×
600
                return err
×
601
        }
×
602
        defer func() {
×
603
                if err != nil {
×
604
                        if cerr := conn.Close(); cerr != nil {
×
605
                                grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
×
606
                        }
×
607
                        return
×
608
                }
609
                go func() {
×
610
                        <-ctx.Done()
×
611
                        if cerr := conn.Close(); cerr != nil {
×
612
                                grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
×
613
                        }
×
614
                }()
615
        }()
616

617
        return RegisterWatchtowerClientHandler(ctx, mux, conn)
×
618
}
619

620
// RegisterWatchtowerClientHandler registers the http handlers for service WatchtowerClient to "mux".
621
// The handlers forward requests to the grpc endpoint over "conn".
622
func RegisterWatchtowerClientHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
×
623
        return RegisterWatchtowerClientHandlerClient(ctx, mux, NewWatchtowerClientClient(conn))
×
624
}
×
625

626
// RegisterWatchtowerClientHandlerClient registers the http handlers for service WatchtowerClient
627
// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "WatchtowerClientClient".
628
// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "WatchtowerClientClient"
629
// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
630
// "WatchtowerClientClient" to call the correct interceptors.
631
func RegisterWatchtowerClientHandlerClient(ctx context.Context, mux *runtime.ServeMux, client WatchtowerClientClient) error {
×
632

×
633
        mux.Handle("POST", pattern_WatchtowerClient_AddTower_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
634
                ctx, cancel := context.WithCancel(req.Context())
×
635
                defer cancel()
×
636
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
637
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/AddTower", runtime.WithHTTPPathPattern("/v2/watchtower/client"))
×
638
                if err != nil {
×
639
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
640
                        return
×
641
                }
×
642
                resp, md, err := request_WatchtowerClient_AddTower_0(rctx, inboundMarshaler, client, req, pathParams)
×
643
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
644
                if err != nil {
×
645
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
646
                        return
×
647
                }
×
648

649
                forward_WatchtowerClient_AddTower_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
650

651
        })
652

653
        mux.Handle("DELETE", pattern_WatchtowerClient_RemoveTower_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
654
                ctx, cancel := context.WithCancel(req.Context())
×
655
                defer cancel()
×
656
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
657
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/RemoveTower", runtime.WithHTTPPathPattern("/v2/watchtower/client/{pubkey}"))
×
658
                if err != nil {
×
659
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
660
                        return
×
661
                }
×
662
                resp, md, err := request_WatchtowerClient_RemoveTower_0(rctx, inboundMarshaler, client, req, pathParams)
×
663
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
664
                if err != nil {
×
665
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
666
                        return
×
667
                }
×
668

669
                forward_WatchtowerClient_RemoveTower_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
670

671
        })
672

673
        mux.Handle("POST", pattern_WatchtowerClient_DeactivateTower_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
674
                ctx, cancel := context.WithCancel(req.Context())
×
675
                defer cancel()
×
676
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
677
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/DeactivateTower", runtime.WithHTTPPathPattern("/v2/watchtower/client/tower/deactivate/{pubkey}"))
×
678
                if err != nil {
×
679
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
680
                        return
×
681
                }
×
682
                resp, md, err := request_WatchtowerClient_DeactivateTower_0(rctx, inboundMarshaler, client, req, pathParams)
×
683
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
684
                if err != nil {
×
685
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
686
                        return
×
687
                }
×
688

689
                forward_WatchtowerClient_DeactivateTower_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
690

691
        })
692

693
        mux.Handle("POST", pattern_WatchtowerClient_TerminateSession_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
694
                ctx, cancel := context.WithCancel(req.Context())
×
695
                defer cancel()
×
696
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
697
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/TerminateSession", runtime.WithHTTPPathPattern("/v2/watchtower/client/sessions/terminate/{session_id}"))
×
698
                if err != nil {
×
699
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
700
                        return
×
701
                }
×
702
                resp, md, err := request_WatchtowerClient_TerminateSession_0(rctx, inboundMarshaler, client, req, pathParams)
×
703
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
704
                if err != nil {
×
705
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
706
                        return
×
707
                }
×
708

709
                forward_WatchtowerClient_TerminateSession_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
710

711
        })
712

713
        mux.Handle("GET", pattern_WatchtowerClient_ListTowers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
714
                ctx, cancel := context.WithCancel(req.Context())
×
715
                defer cancel()
×
716
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
717
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/ListTowers", runtime.WithHTTPPathPattern("/v2/watchtower/client"))
×
718
                if err != nil {
×
719
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
720
                        return
×
721
                }
×
722
                resp, md, err := request_WatchtowerClient_ListTowers_0(rctx, inboundMarshaler, client, req, pathParams)
×
723
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
724
                if err != nil {
×
725
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
726
                        return
×
727
                }
×
728

729
                forward_WatchtowerClient_ListTowers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
730

731
        })
732

733
        mux.Handle("GET", pattern_WatchtowerClient_GetTowerInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
734
                ctx, cancel := context.WithCancel(req.Context())
×
735
                defer cancel()
×
736
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
737
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/GetTowerInfo", runtime.WithHTTPPathPattern("/v2/watchtower/client/info/{pubkey}"))
×
738
                if err != nil {
×
739
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
740
                        return
×
741
                }
×
742
                resp, md, err := request_WatchtowerClient_GetTowerInfo_0(rctx, inboundMarshaler, client, req, pathParams)
×
743
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
744
                if err != nil {
×
745
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
746
                        return
×
747
                }
×
748

749
                forward_WatchtowerClient_GetTowerInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
750

751
        })
752

753
        mux.Handle("GET", pattern_WatchtowerClient_Stats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
754
                ctx, cancel := context.WithCancel(req.Context())
×
755
                defer cancel()
×
756
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
757
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/Stats", runtime.WithHTTPPathPattern("/v2/watchtower/client/stats"))
×
758
                if err != nil {
×
759
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
760
                        return
×
761
                }
×
762
                resp, md, err := request_WatchtowerClient_Stats_0(rctx, inboundMarshaler, client, req, pathParams)
×
763
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
764
                if err != nil {
×
765
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
766
                        return
×
767
                }
×
768

769
                forward_WatchtowerClient_Stats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
770

771
        })
772

773
        mux.Handle("GET", pattern_WatchtowerClient_Policy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
×
774
                ctx, cancel := context.WithCancel(req.Context())
×
775
                defer cancel()
×
776
                inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
×
777
                rctx, err := runtime.AnnotateContext(ctx, mux, req, "/wtclientrpc.WatchtowerClient/Policy", runtime.WithHTTPPathPattern("/v2/watchtower/client/policy"))
×
778
                if err != nil {
×
779
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
780
                        return
×
781
                }
×
782
                resp, md, err := request_WatchtowerClient_Policy_0(rctx, inboundMarshaler, client, req, pathParams)
×
783
                ctx = runtime.NewServerMetadataContext(ctx, md)
×
784
                if err != nil {
×
785
                        runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
×
786
                        return
×
787
                }
×
788

789
                forward_WatchtowerClient_Policy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
×
790

791
        })
792

793
        return nil
×
794
}
795

796
var (
797
        pattern_WatchtowerClient_AddTower_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "watchtower", "client"}, ""))
798

799
        pattern_WatchtowerClient_RemoveTower_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v2", "watchtower", "client", "pubkey"}, ""))
800

801
        pattern_WatchtowerClient_DeactivateTower_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"v2", "watchtower", "client", "tower", "deactivate", "pubkey"}, ""))
802

803
        pattern_WatchtowerClient_TerminateSession_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"v2", "watchtower", "client", "sessions", "terminate", "session_id"}, ""))
804

805
        pattern_WatchtowerClient_ListTowers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "watchtower", "client"}, ""))
806

807
        pattern_WatchtowerClient_GetTowerInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v2", "watchtower", "client", "info", "pubkey"}, ""))
808

809
        pattern_WatchtowerClient_Stats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v2", "watchtower", "client", "stats"}, ""))
810

811
        pattern_WatchtowerClient_Policy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v2", "watchtower", "client", "policy"}, ""))
812
)
813

814
var (
815
        forward_WatchtowerClient_AddTower_0 = runtime.ForwardResponseMessage
816

817
        forward_WatchtowerClient_RemoveTower_0 = runtime.ForwardResponseMessage
818

819
        forward_WatchtowerClient_DeactivateTower_0 = runtime.ForwardResponseMessage
820

821
        forward_WatchtowerClient_TerminateSession_0 = runtime.ForwardResponseMessage
822

823
        forward_WatchtowerClient_ListTowers_0 = runtime.ForwardResponseMessage
824

825
        forward_WatchtowerClient_GetTowerInfo_0 = runtime.ForwardResponseMessage
826

827
        forward_WatchtowerClient_Stats_0 = runtime.ForwardResponseMessage
828

829
        forward_WatchtowerClient_Policy_0 = runtime.ForwardResponseMessage
830
)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc