From 861808530a94d1d9318036e2a850c2bf68d5cbfd Mon Sep 17 00:00:00 2001 From: Nigel Christian Date: Wed, 4 Sep 2019 23:48:48 -0400 Subject: [PATCH] loop: add REST endpoints for Loop In --- go.mod | 26 ++- go.sum | 115 ++++++++++ looprpc/client.pb.go | 162 +++++++------ looprpc/client.pb.gw.go | 444 ++++++++++++++++++++++++++++++++---- looprpc/client.proto | 19 +- looprpc/client.swagger.json | 167 +++++++++++++- looprpc/server.pb.go | 19 ++ 7 files changed, 836 insertions(+), 116 deletions(-) diff --git a/go.mod b/go.mod index 2c40f84..1bbbc60 100644 --- a/go.mod +++ b/go.mod @@ -1,19 +1,35 @@ module github.com/lightninglabs/loop require ( + cloud.google.com/go v0.44.3 // indirect github.com/btcsuite/btcd v0.0.0-20190605094302-a0d1e3e36d50 github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d github.com/coreos/bbolt v1.3.2 github.com/fortytw2/leaktest v1.3.0 - github.com/golang/protobuf v1.3.1 - github.com/grpc-ecosystem/grpc-gateway v1.8.5 + github.com/golang/protobuf v1.3.2 + github.com/google/go-cmp v0.3.1 // indirect + github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.10.0 + github.com/hashicorp/golang-lru v0.5.3 // indirect github.com/jessevdk/go-flags v1.4.0 + github.com/kr/pty v1.1.8 // indirect github.com/lightningnetwork/lnd v0.6.1-beta.0.20190605130338-880279b266e9 github.com/lightningnetwork/lnd/queue v1.0.1 + github.com/rogpeppe/fastuuid v1.2.0 // indirect + github.com/rogpeppe/go-internal v1.3.1 // indirect github.com/urfave/cli v1.20.0 - golang.org/x/net v0.0.0-20190313220215-9f648a60d977 - google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19 - google.golang.org/grpc v1.19.0 + golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 // indirect + golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 // indirect + golang.org/x/image v0.0.0-20190829233526-b3c06291d021 // indirect + golang.org/x/mobile v0.0.0-20190826170111-cafc553e1ac5 // indirect + golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 + golang.org/x/sys v0.0.0-20190830142957-1e83adbbebd0 // indirect + golang.org/x/tools v0.0.0-20190830172400-56125e7d709e // indirect + google.golang.org/api v0.9.0 // indirect + google.golang.org/appengine v1.6.2 // indirect + google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 + google.golang.org/grpc v1.23.0 gopkg.in/macaroon.v2 v2.1.0 + honnef.co/go/tools v0.0.1-2019.2.2 // indirect ) diff --git a/go.sum b/go.sum index 0ef6949..95b164a 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,13 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= git.schwanenlied.me/yawning/bsaes.git v0.0.0-20180720073208-c0276d75487e h1:F2x1bq7RaNCIuqYpswggh1+c1JmwdnkHNC9wy1KDip0= git.schwanenlied.me/yawning/bsaes.git v0.0.0-20180720073208-c0276d75487e/go.mod h1:BWqTsj8PgcPriQJGl7el20J/7TuT1d/hSyFDXMEpoEo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/NebulousLabs/fastrand v0.0.0-20180208210444-3cf7173006a0 h1:g/ETZwHx5wN2fqKWS3gCUrEU7dLko+DvVs3hakQCfyE= github.com/NebulousLabs/fastrand v0.0.0-20180208210444-3cf7173006a0/go.mod h1:Bdzq+51GR4/0DIhaICZEOm+OHvXGwwB2trKZ8B4Y6eQ= github.com/NebulousLabs/go-upnp v0.0.0-20180202185039-29b680b06c82 h1:MG93+PZYs9PyEsj/n5/haQu2gK0h4tUtSy9ejtMwWa0= @@ -52,6 +58,7 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/coreos/bbolt v0.0.0-20180223184059-7ee3ded59d4835e10f3e7d0f7603c42aa5e83820/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495 h1:6IyqGr3fnd0tM3YxipK27TUskaOVUjU2nG45yzwcQKY= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -62,6 +69,7 @@ github.com/frankban/quicktest v1.0.0 h1:QgmxFbprE29UG4oL88tGiiL/7VuiBl5xCcz+wJcJ github.com/frankban/quicktest v1.0.0/go.mod h1:R98jIehRai+d1/3Hv2//jOVCTJhW1VBavT6B6CuGq2k= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -69,15 +77,35 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekf github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20180821051752-b27b920f9e71/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/grpc-ecosystem/grpc-gateway v0.0.0-20170724004829-f2862b476edc/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.8.5 h1:2+KSC78XiO6Qy0hIjfc1OD9H+hsaJdJlb8Kqsd41CTE= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.10.0 h1:yqx/nTDLC6pVrQ8fTaCeeeMJNbmt7HglUpysQATYXV4= +github.com/grpc-ecosystem/grpc-gateway v1.10.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= @@ -88,6 +116,7 @@ github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGAR github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/juju/clock v0.0.0-20180808021310-bab88fc67299 h1:K9nBHQ3UNqg/HhZkQnGG2AE4YxDyNmGS9FFT2gGegLQ= github.com/juju/clock v0.0.0-20180808021310-bab88fc67299/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5 h1:rhqTjzJlm7EbkELJDKMTU7udov+Se0xZkWmugr6zGok= @@ -110,6 +139,7 @@ github.com/kkdai/bstream v0.0.0-20181106074824-b3251f7901ec/go.mod h1:J+Gs4SYgM6 github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lightninglabs/gozmq v0.0.0-20180324010646-462a8a753885 h1:fTLuPUkaKIIV0+gA1IxiBDvDxtF8tzpSF6N6NfFGmsU= @@ -140,6 +170,10 @@ github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/tv42/zbase32 v0.0.0-20160707012821-501572607d02 h1:tcJ6OjwOMvExLlzrAVZute09ocAGa7KqOON60++Gz4E= github.com/tv42/zbase32 v0.0.0-20160707012821-501572607d02/go.mod h1:tHlrkM198S068ZqfrO6S8HsoJq2bF3ETfTL+kt4tInY= github.com/urfave/cli v1.18.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -148,16 +182,37 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb go.etcd.io/bbolt v1.3.0/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180723164146-c126467f60eb/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 h1:Gv7RPwsi3eZ2Fgewe3CBsuOebPwO27PoXzRpJPsvSSM= +golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190829233526-b3c06291d021/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mobile v0.0.0-20190826170111-cafc553e1ac5/go.mod h1:mJOp/i0LXPxJZ9weeIadcPqKVfS05Ai7m6/t9z1Hs/Y= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180821023952-922f4815f713/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -165,15 +220,27 @@ golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190313220215-9f648a60d977 h1:actzWV6iWn3GLqN8dZjzsB+CLt+gaV2+wsxroxiQI8I= golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180821140842-3b58ed4ad339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -182,31 +249,74 @@ golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190830142957-1e83adbbebd0 h1:7z820YPX9pxWR59qM7BE5+fglp4D/mKqAwCvGt11b+8= +golang.org/x/sys v0.0.0-20190830142957-1e83adbbebd0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 h1:+DCIGbF/swA92ohVg0//6X2IVY3KZs6p9mix0ziNYJM= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190830172400-56125e7d709e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19 h1:Lj2SnHtxkRGJDqnGaSjo+CCdIieEnwVazbOXILwQemk= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v1 v1.0.0 h1:n+7XfCyygBFb8sEjg6692xjC6Us50TFRO54+xYUEwjE= gopkg.in/errgo.v1 v1.0.0/go.mod h1:CxwszS/Xz1C49Ucd2i6Zil5UToP1EmyrFhKaMVbg1mk= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/macaroon-bakery.v2 v2.0.1 h1:0N1TlEdfLP4HXNCg7MQUMp5XwvOoxk+oe9Owr2cpvsc= @@ -225,3 +335,8 @@ gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/looprpc/client.pb.go b/looprpc/client.pb.go index b031d89..3774eb0 100644 --- a/looprpc/client.pb.go +++ b/looprpc/client.pb.go @@ -9,6 +9,8 @@ import ( proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -823,72 +825,74 @@ func init() { func init() { proto.RegisterFile("client.proto", fileDescriptor_014de31d7ac8c57c) } var fileDescriptor_014de31d7ac8c57c = []byte{ - // 1028 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5d, 0x73, 0x1a, 0x37, - 0x14, 0x0d, 0x0b, 0x36, 0x70, 0x0d, 0x0b, 0x56, 0x12, 0x87, 0xd2, 0x66, 0x4a, 0x69, 0x93, 0x32, - 0x7e, 0x30, 0xad, 0xf3, 0xd0, 0x69, 0x5f, 0x3a, 0x04, 0x93, 0x98, 0x19, 0xdb, 0xb8, 0x0b, 0xce, - 0x4c, 0x9f, 0x34, 0x0a, 0x08, 0x7b, 0x67, 0x76, 0xa5, 0xcd, 0x4a, 0xf8, 0x63, 0x3a, 0x7d, 0xe9, - 0x3f, 0x68, 0xfb, 0x57, 0xfa, 0x4f, 0xfa, 0xde, 0xa7, 0xfe, 0x90, 0x8e, 0xae, 0x96, 0x35, 0x0b, - 0xf5, 0x4b, 0xde, 0xf0, 0xd1, 0xd1, 0xd1, 0xd5, 0xbd, 0xe7, 0x68, 0x0d, 0x95, 0x69, 0xe0, 0x73, - 0xa1, 0x0f, 0xa2, 0x58, 0x6a, 0x49, 0x8a, 0x81, 0x94, 0x51, 0x1c, 0x4d, 0x9b, 0x9f, 0x5d, 0x4a, - 0x79, 0x19, 0xf0, 0x2e, 0x8b, 0xfc, 0x2e, 0x13, 0x42, 0x6a, 0xa6, 0x7d, 0x29, 0x94, 0xa5, 0xb5, - 0xff, 0x71, 0xc0, 0x3d, 0x91, 0x32, 0x1a, 0x2d, 0xb4, 0xc7, 0x3f, 0x2c, 0xb8, 0xd2, 0xa4, 0x0e, - 0x79, 0x16, 0xea, 0x46, 0xae, 0x95, 0xeb, 0xe4, 0x3d, 0xf3, 0x93, 0x10, 0x28, 0xcc, 0xb8, 0xd2, - 0x0d, 0xa7, 0x95, 0xeb, 0x94, 0x3d, 0xfc, 0x4d, 0xba, 0xf0, 0x24, 0x64, 0xb7, 0x54, 0xdd, 0xb0, - 0x88, 0xc6, 0x72, 0xa1, 0x7d, 0x71, 0x49, 0xe7, 0x9c, 0x37, 0xf2, 0xb8, 0x6d, 0x37, 0x64, 0xb7, - 0xe3, 0x1b, 0x16, 0x79, 0x76, 0xe5, 0x0d, 0xe7, 0xe4, 0x15, 0xec, 0x99, 0x0d, 0x51, 0xcc, 0x23, - 0x76, 0x97, 0xd9, 0x52, 0xc0, 0x2d, 0x8f, 0x43, 0x76, 0x7b, 0x8e, 0x8b, 0x2b, 0x9b, 0x5a, 0x50, - 0x49, 0x4f, 0x31, 0xd4, 0x2d, 0xa4, 0x42, 0xa2, 0x6e, 0x18, 0x5f, 0x81, 0xbb, 0x22, 0x6b, 0x0a, - 0xdf, 0x46, 0x4e, 0x25, 0x95, 0xeb, 0x85, 0x9a, 0xb4, 0xa1, 0x6a, 0x58, 0xa1, 0x2f, 0x78, 0x8c, - 0x42, 0x45, 0x24, 0xed, 0x84, 0xec, 0xf6, 0xd4, 0x60, 0x46, 0xa9, 0x03, 0x75, 0xd3, 0x33, 0x2a, - 0x17, 0x9a, 0x4e, 0xaf, 0x98, 0x10, 0x3c, 0x68, 0x94, 0x5a, 0xb9, 0x4e, 0xc1, 0x73, 0x03, 0xdb, - 0xa1, 0xbe, 0x45, 0xc9, 0x3e, 0xec, 0xaa, 0x1b, 0xce, 0x23, 0x3a, 0x95, 0x62, 0x4e, 0x35, 0x8b, - 0x2f, 0xb9, 0x6e, 0x94, 0x5b, 0xb9, 0xce, 0x96, 0x57, 0xc3, 0x85, 0xbe, 0x14, 0xf3, 0x09, 0xc2, - 0xed, 0xbf, 0x72, 0x50, 0x35, 0x0d, 0x1e, 0x8a, 0x87, 0xfb, 0xbb, 0x7e, 0x4b, 0x67, 0xe3, 0x96, - 0x1b, 0xf5, 0xe7, 0x37, 0xeb, 0x7f, 0x09, 0x35, 0xac, 0xdf, 0x17, 0x69, 0xf9, 0x05, 0x2c, 0xbf, - 0x1a, 0xe0, 0xf9, 0xcb, 0xea, 0xbf, 0x84, 0x2a, 0xbf, 0xd5, 0x3c, 0x16, 0x2c, 0xa0, 0x57, 0x3a, - 0x98, 0x62, 0x53, 0x4b, 0x5e, 0x65, 0x09, 0x1e, 0xeb, 0x60, 0xda, 0xee, 0x41, 0x05, 0xe7, 0xc7, - 0x55, 0x24, 0x85, 0xe2, 0xc4, 0x05, 0xc7, 0x9f, 0x61, 0xcd, 0x65, 0xcf, 0xf1, 0x67, 0xe4, 0x0b, - 0xa8, 0x98, 0xbd, 0x94, 0xcd, 0x66, 0x31, 0x57, 0x2a, 0xb1, 0xc6, 0x8e, 0xc1, 0x7a, 0x16, 0x6a, - 0xd7, 0xc1, 0x3d, 0x95, 0xc2, 0xd7, 0x32, 0x4e, 0x6e, 0x6e, 0xcc, 0x06, 0x46, 0x75, 0xac, 0x99, - 0x5e, 0xa8, 0xff, 0x69, 0x84, 0x3d, 0xc5, 0x49, 0x4f, 0x79, 0x01, 0x05, 0x7d, 0x17, 0xd9, 0xdb, - 0xba, 0x87, 0xbb, 0x07, 0x89, 0xa7, 0x0f, 0x8c, 0xc8, 0xe4, 0x2e, 0xe2, 0x1e, 0x2e, 0x93, 0x0e, - 0x6c, 0x29, 0xcd, 0xb4, 0x75, 0x92, 0x7b, 0x48, 0x32, 0x3c, 0x73, 0x18, 0xf7, 0x2c, 0x81, 0x7c, - 0x0d, 0x35, 0x5f, 0xf8, 0xda, 0xc7, 0x0c, 0x50, 0xed, 0x87, 0x4b, 0x4b, 0xb9, 0xf7, 0xf0, 0xc4, - 0x0f, 0xad, 0x19, 0x98, 0xd2, 0x74, 0x11, 0xcd, 0x98, 0xe6, 0x96, 0x69, 0x8d, 0xe5, 0x1a, 0xfc, - 0x02, 0x61, 0x64, 0xae, 0x77, 0xa2, 0xb8, 0xd1, 0x09, 0xf2, 0x39, 0xec, 0x4c, 0xa5, 0xd2, 0x54, - 0xf1, 0xf8, 0x9a, 0xc7, 0x68, 0xaa, 0xbc, 0x07, 0x06, 0x1a, 0x23, 0x62, 0x34, 0x90, 0x20, 0xc5, - 0xf4, 0x8a, 0xf9, 0x02, 0xbd, 0x94, 0xf7, 0x70, 0xd3, 0xc8, 0x42, 0x66, 0x6a, 0x96, 0x32, 0x9f, - 0x5b, 0x0e, 0x58, 0x9b, 0x23, 0x27, 0xc1, 0xda, 0x2e, 0x54, 0x26, 0x3c, 0x0e, 0xd5, 0xb2, 0xe1, - 0xbf, 0x3b, 0x50, 0x4d, 0x80, 0x64, 0x8e, 0x68, 0x5d, 0x16, 0xd1, 0x88, 0xdd, 0x85, 0x5c, 0x68, - 0x8a, 0xb9, 0xb6, 0x63, 0xad, 0x99, 0x85, 0x73, 0x8b, 0x1f, 0x19, 0xa3, 0xb6, 0xa1, 0xba, 0xb4, - 0x24, 0x7d, 0xcf, 0xd4, 0xd2, 0x97, 0x3b, 0xca, 0x9a, 0xf2, 0x35, 0x53, 0x3c, 0xc3, 0x89, 0xcd, - 0x08, 0xf2, 0x19, 0x8e, 0x67, 0x9a, 0xfe, 0x1c, 0x60, 0x25, 0x9e, 0x36, 0xed, 0xe5, 0x28, 0xcd, - 0xe6, 0x4b, 0xa8, 0x85, 0xbe, 0xb0, 0xee, 0x67, 0xa1, 0x5c, 0x08, 0x9d, 0xcc, 0xa4, 0x1a, 0xfa, - 0xc2, 0x4c, 0xb0, 0x87, 0x20, 0xf2, 0x96, 0x29, 0x49, 0x78, 0xdb, 0x09, 0xcf, 0x06, 0x25, 0xe1, - 0x3d, 0x07, 0x98, 0x06, 0xfa, 0x9a, 0xce, 0x78, 0xa0, 0x19, 0x8e, 0x63, 0xcb, 0x2b, 0x1b, 0xe4, - 0xc8, 0x00, 0xc6, 0xd9, 0x3f, 0x2d, 0xa4, 0xe6, 0x0f, 0xc7, 0x11, 0xc7, 0x75, 0x1f, 0x6c, 0x07, - 0x15, 0x60, 0x7a, 0x9f, 0xe9, 0x39, 0x54, 0x13, 0x89, 0xa4, 0xab, 0x9f, 0x40, 0x29, 0x0d, 0xaf, - 0x15, 0x2a, 0x26, 0x0d, 0x58, 0xbb, 0xbc, 0xb3, 0x7e, 0xf9, 0x4f, 0xa1, 0xbc, 0x1e, 0xea, 0x52, - 0x98, 0x24, 0x7a, 0xff, 0x05, 0x94, 0x96, 0x4e, 0x27, 0x15, 0x28, 0x9d, 0x8c, 0x46, 0xe7, 0x74, - 0x74, 0x31, 0xa9, 0x3f, 0x22, 0x3b, 0x50, 0xc4, 0xbf, 0x86, 0x67, 0xf5, 0xdc, 0xbe, 0x82, 0x72, - 0x6a, 0x74, 0x52, 0x85, 0xf2, 0xf0, 0x6c, 0x38, 0x19, 0xf6, 0x26, 0x83, 0xa3, 0xfa, 0x23, 0xf2, - 0x14, 0x76, 0xcf, 0xbd, 0xc1, 0xf0, 0xb4, 0xf7, 0x76, 0x40, 0xbd, 0xc1, 0xbb, 0x41, 0xef, 0x64, - 0x70, 0x54, 0xcf, 0x11, 0x02, 0xee, 0xf1, 0xe4, 0xa4, 0x4f, 0xcf, 0x2f, 0x5e, 0x9f, 0x0c, 0xc7, - 0xc7, 0x83, 0xa3, 0xba, 0x63, 0x34, 0xc7, 0x17, 0xfd, 0xfe, 0x60, 0x3c, 0xae, 0xe7, 0x09, 0xc0, - 0xf6, 0x9b, 0xde, 0xd0, 0x90, 0x0b, 0xe4, 0x31, 0xd4, 0x86, 0x67, 0xef, 0x46, 0xc3, 0xfe, 0x80, - 0x8e, 0x07, 0x93, 0x89, 0x01, 0xb7, 0x0e, 0xff, 0x28, 0xd8, 0x2c, 0xf7, 0xf1, 0xa3, 0x43, 0x3c, - 0x28, 0x26, 0x9f, 0x11, 0xf2, 0x2c, 0x8d, 0x5f, 0xf6, 0xc3, 0xd2, 0x7c, 0x9a, 0xc9, 0xe5, 0xb2, - 0x79, 0xed, 0x67, 0xbf, 0xfd, 0xfd, 0xef, 0x9f, 0xce, 0x6e, 0xbb, 0xd2, 0xbd, 0xfe, 0xb6, 0x6b, - 0x18, 0x5d, 0xb9, 0xd0, 0x3f, 0xe4, 0xf6, 0xc9, 0x77, 0xb0, 0x6d, 0x5f, 0x4e, 0xb2, 0x97, 0x91, - 0x4c, 0x9f, 0xd2, 0x07, 0x14, 0xc9, 0xf7, 0x50, 0x4c, 0x5e, 0x9e, 0x95, 0x62, 0xb2, 0x6f, 0x51, - 0xf3, 0xf1, 0xc6, 0x23, 0xb1, 0x50, 0xdf, 0xe4, 0xc8, 0xcf, 0x50, 0x49, 0xaa, 0xc6, 0xdc, 0x90, - 0xfb, 0x13, 0x56, 0x83, 0xd5, 0xdc, 0x5b, 0x87, 0x93, 0xbb, 0x34, 0xf1, 0x2e, 0x4f, 0x08, 0x59, - 0xbd, 0x4b, 0x57, 0xa3, 0x14, 0x4d, 0xa5, 0xd1, 0x3c, 0x2b, 0xd2, 0xab, 0x7e, 0x5c, 0x91, 0xce, - 0x78, 0xac, 0xdd, 0x42, 0xe9, 0x26, 0x69, 0x64, 0xa4, 0x3f, 0x18, 0x4e, 0xf7, 0x17, 0x16, 0xea, - 0x5f, 0xc9, 0x8f, 0xe0, 0xbe, 0xe5, 0xda, 0x76, 0xe8, 0x63, 0xaa, 0xcf, 0x08, 0x7c, 0x4c, 0x8d, - 0xef, 0xb7, 0xf1, 0x9f, 0x8a, 0x57, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x09, 0x80, 0x8f, 0x06, - 0x8b, 0x08, 0x00, 0x00, + // 1057 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5d, 0x73, 0xda, 0x46, + 0x14, 0x0d, 0x02, 0x1b, 0xb8, 0x80, 0x80, 0x75, 0xe2, 0x10, 0xda, 0x4c, 0xa8, 0xda, 0xa4, 0x8c, + 0x1f, 0x4c, 0xeb, 0x3c, 0xb5, 0x6f, 0x04, 0x93, 0x98, 0x19, 0xdb, 0xb8, 0x02, 0x67, 0xa6, 0x7d, + 0xd9, 0x6e, 0x60, 0xb1, 0x35, 0x23, 0xed, 0x2a, 0xd2, 0xe2, 0x8f, 0xe9, 0xf4, 0xa5, 0xff, 0xa0, + 0xd3, 0xbf, 0xd2, 0x7f, 0xd2, 0xf7, 0x3e, 0x75, 0xfa, 0x3b, 0x3a, 0x7b, 0x57, 0xc8, 0x02, 0xd7, + 0x2f, 0x79, 0xc3, 0x67, 0xcf, 0x9e, 0xbd, 0x7b, 0xef, 0x39, 0x2b, 0x43, 0x75, 0xe6, 0x7b, 0x5c, + 0xa8, 0xfd, 0x30, 0x92, 0x4a, 0x92, 0xa2, 0x2f, 0x65, 0x18, 0x85, 0xb3, 0xf6, 0xe7, 0x17, 0x52, + 0x5e, 0xf8, 0xbc, 0xc7, 0x42, 0xaf, 0xc7, 0x84, 0x90, 0x8a, 0x29, 0x4f, 0x8a, 0xd8, 0xd0, 0x9c, + 0xbf, 0x2d, 0xb0, 0x8f, 0xa5, 0x0c, 0xc7, 0x4b, 0xe5, 0xf2, 0x8f, 0x4b, 0x1e, 0x2b, 0xd2, 0x80, + 0x3c, 0x0b, 0x54, 0x2b, 0xd7, 0xc9, 0x75, 0xf3, 0xae, 0xfe, 0x49, 0x08, 0x14, 0xe6, 0x3c, 0x56, + 0x2d, 0xab, 0x93, 0xeb, 0x96, 0x5d, 0xfc, 0x4d, 0x7a, 0xf0, 0x38, 0x60, 0x37, 0x34, 0xbe, 0x66, + 0x21, 0x8d, 0xe4, 0x52, 0x79, 0xe2, 0x82, 0x2e, 0x38, 0x6f, 0xe5, 0x71, 0x5b, 0x33, 0x60, 0x37, + 0x93, 0x6b, 0x16, 0xba, 0x66, 0xe5, 0x2d, 0xe7, 0xe4, 0x35, 0xec, 0xea, 0x0d, 0x61, 0xc4, 0x43, + 0x76, 0xbb, 0xb6, 0xa5, 0x80, 0x5b, 0x76, 0x02, 0x76, 0x73, 0x86, 0x8b, 0x99, 0x4d, 0x1d, 0xa8, + 0xa6, 0xa7, 0x68, 0xea, 0x16, 0x52, 0x21, 0x51, 0xd7, 0x8c, 0xaf, 0xc0, 0xce, 0xc8, 0xea, 0xc2, + 0xb7, 0x91, 0x53, 0x4d, 0xe5, 0xfa, 0x81, 0x22, 0x0e, 0xd4, 0x34, 0x2b, 0xf0, 0x04, 0x8f, 0x50, + 0xa8, 0x88, 0xa4, 0x4a, 0xc0, 0x6e, 0x4e, 0x34, 0xa6, 0x95, 0xba, 0xd0, 0xd0, 0x3d, 0xa3, 0x72, + 0xa9, 0xe8, 0xec, 0x92, 0x09, 0xc1, 0xfd, 0x56, 0xa9, 0x93, 0xeb, 0x16, 0x5c, 0xdb, 0x37, 0x1d, + 0x1a, 0x18, 0x94, 0xec, 0x41, 0x33, 0xbe, 0xe6, 0x3c, 0xa4, 0x33, 0x29, 0x16, 0x54, 0xb1, 0xe8, + 0x82, 0xab, 0x56, 0xb9, 0x93, 0xeb, 0x6e, 0xb9, 0x75, 0x5c, 0x18, 0x48, 0xb1, 0x98, 0x22, 0xec, + 0xfc, 0x99, 0x83, 0x9a, 0x6e, 0xf0, 0x48, 0x3c, 0xdc, 0xdf, 0xcd, 0x5b, 0x5a, 0xf7, 0x6e, 0x79, + 0xaf, 0xfe, 0xfc, 0xfd, 0xfa, 0x5f, 0x41, 0x1d, 0xeb, 0xf7, 0x44, 0x5a, 0x7e, 0x01, 0xcb, 0xaf, + 0xf9, 0x78, 0xfe, 0xaa, 0xfa, 0x2f, 0xa1, 0xc6, 0x6f, 0x14, 0x8f, 0x04, 0xf3, 0xe9, 0xa5, 0xf2, + 0x67, 0xd8, 0xd4, 0x92, 0x5b, 0x5d, 0x81, 0x47, 0xca, 0x9f, 0x39, 0x7d, 0xa8, 0xe2, 0xfc, 0x78, + 0x1c, 0x4a, 0x11, 0x73, 0x62, 0x83, 0xe5, 0xcd, 0xb1, 0xe6, 0xb2, 0x6b, 0x79, 0x73, 0xf2, 0x05, + 0x54, 0xf5, 0x5e, 0xca, 0xe6, 0xf3, 0x88, 0xc7, 0x71, 0x62, 0x8d, 0x8a, 0xc6, 0xfa, 0x06, 0x72, + 0x1a, 0x60, 0x9f, 0x48, 0xe1, 0x29, 0x19, 0x25, 0x37, 0xd7, 0x66, 0x03, 0xad, 0x3a, 0x51, 0x4c, + 0x2d, 0xe3, 0xff, 0x69, 0x84, 0x39, 0xc5, 0x4a, 0x4f, 0x79, 0x09, 0x05, 0x75, 0x1b, 0x9a, 0xdb, + 0xda, 0x07, 0xcd, 0xfd, 0xc4, 0xd3, 0xfb, 0x5a, 0x64, 0x7a, 0x1b, 0x72, 0x17, 0x97, 0x49, 0x17, + 0xb6, 0x62, 0xc5, 0x94, 0x71, 0x92, 0x7d, 0x40, 0xd6, 0x78, 0xfa, 0x30, 0xee, 0x1a, 0x02, 0xf9, + 0x1a, 0xea, 0x9e, 0xf0, 0x94, 0x87, 0x19, 0xa0, 0xca, 0x0b, 0x56, 0x96, 0xb2, 0xef, 0xe0, 0xa9, + 0x17, 0x18, 0x33, 0xb0, 0x58, 0xd1, 0x65, 0x38, 0x67, 0x8a, 0x1b, 0xa6, 0x31, 0x96, 0xad, 0xf1, + 0x73, 0x84, 0x91, 0xb9, 0xd9, 0x89, 0xe2, 0xbd, 0x4e, 0x90, 0x17, 0x50, 0x99, 0xc9, 0x58, 0xd1, + 0x98, 0x47, 0x57, 0x3c, 0x42, 0x53, 0xe5, 0x5d, 0xd0, 0xd0, 0x04, 0x11, 0xad, 0x81, 0x04, 0x29, + 0x66, 0x97, 0xcc, 0x13, 0xe8, 0xa5, 0xbc, 0x8b, 0x9b, 0xc6, 0x06, 0xd2, 0x53, 0x33, 0x94, 0xc5, + 0xc2, 0x70, 0xc0, 0xd8, 0x1c, 0x39, 0x09, 0xe6, 0xd8, 0x50, 0x9d, 0xf2, 0x28, 0x88, 0x57, 0x0d, + 0xff, 0xdd, 0x82, 0x5a, 0x02, 0x24, 0x73, 0x44, 0xeb, 0xb2, 0x90, 0x86, 0xec, 0x36, 0xe0, 0x42, + 0x51, 0xcc, 0xb5, 0x19, 0x6b, 0x5d, 0x2f, 0x9c, 0x19, 0xfc, 0x50, 0x1b, 0xd5, 0x81, 0xda, 0xca, + 0x92, 0xf4, 0x03, 0x8b, 0x57, 0xbe, 0xac, 0xc4, 0xc6, 0x94, 0x6f, 0x58, 0xcc, 0xd7, 0x38, 0x91, + 0x1e, 0x41, 0x7e, 0x8d, 0xe3, 0xea, 0xa6, 0x3f, 0x07, 0xc8, 0xc4, 0xd3, 0xa4, 0xbd, 0x1c, 0xa6, + 0xd9, 0x7c, 0x05, 0xf5, 0xc0, 0x13, 0xc6, 0xfd, 0x2c, 0x90, 0x4b, 0xa1, 0x92, 0x99, 0xd4, 0x02, + 0x4f, 0xe8, 0x09, 0xf6, 0x11, 0x44, 0xde, 0x2a, 0x25, 0x09, 0x6f, 0x3b, 0xe1, 0x99, 0xa0, 0x24, + 0xbc, 0xe7, 0x00, 0x33, 0x5f, 0x5d, 0xd1, 0x39, 0xf7, 0x15, 0xc3, 0x71, 0x6c, 0xb9, 0x65, 0x8d, + 0x1c, 0x6a, 0x40, 0x3b, 0xfb, 0x87, 0xa5, 0x54, 0xfc, 0xe1, 0x38, 0xe2, 0xb8, 0xee, 0x82, 0x6d, + 0xa1, 0x02, 0xcc, 0xee, 0x32, 0xbd, 0x80, 0x5a, 0x22, 0x91, 0x74, 0xf5, 0x19, 0x94, 0xd2, 0xf0, + 0x1a, 0xa1, 0x62, 0xd2, 0x80, 0x8d, 0xcb, 0x5b, 0x9b, 0x97, 0xff, 0x0c, 0xca, 0x9b, 0xa1, 0x2e, + 0x05, 0x49, 0xa2, 0xf7, 0x5e, 0x42, 0x69, 0xe5, 0x74, 0x52, 0x85, 0xd2, 0xf1, 0x78, 0x7c, 0x46, + 0xc7, 0xe7, 0xd3, 0xc6, 0x23, 0x52, 0x81, 0x22, 0xfe, 0x35, 0x3a, 0x6d, 0xe4, 0xf6, 0x62, 0x28, + 0xa7, 0x46, 0x27, 0x35, 0x28, 0x8f, 0x4e, 0x47, 0xd3, 0x51, 0x7f, 0x3a, 0x3c, 0x6c, 0x3c, 0x22, + 0x4f, 0xa0, 0x79, 0xe6, 0x0e, 0x47, 0x27, 0xfd, 0x77, 0x43, 0xea, 0x0e, 0xdf, 0x0f, 0xfb, 0xc7, + 0xc3, 0xc3, 0x46, 0x8e, 0x10, 0xb0, 0x8f, 0xa6, 0xc7, 0x03, 0x7a, 0x76, 0xfe, 0xe6, 0x78, 0x34, + 0x39, 0x1a, 0x1e, 0x36, 0x2c, 0xad, 0x39, 0x39, 0x1f, 0x0c, 0x86, 0x93, 0x49, 0x23, 0x4f, 0x00, + 0xb6, 0xdf, 0xf6, 0x47, 0x9a, 0x5c, 0x20, 0x3b, 0x50, 0x1f, 0x9d, 0xbe, 0x1f, 0x8f, 0x06, 0x43, + 0x3a, 0x19, 0x4e, 0xa7, 0x1a, 0xdc, 0x3a, 0xf8, 0xb7, 0x60, 0xb2, 0x3c, 0xc0, 0x8f, 0x0e, 0x71, + 0xa1, 0x98, 0x7c, 0x46, 0xc8, 0xd3, 0x34, 0x7e, 0xeb, 0x1f, 0x96, 0xf6, 0x93, 0xb5, 0x5c, 0xae, + 0x9a, 0xe7, 0x3c, 0xfd, 0xed, 0xaf, 0x7f, 0xfe, 0xb0, 0x9a, 0x4e, 0xb5, 0x77, 0xf5, 0x6d, 0x4f, + 0x33, 0x7a, 0x72, 0xa9, 0xbe, 0xcf, 0xed, 0x91, 0x31, 0x6c, 0x9b, 0x97, 0x93, 0xec, 0xae, 0x49, + 0xa6, 0x4f, 0xe9, 0x43, 0x8a, 0xbb, 0xa8, 0xd8, 0x70, 0x2a, 0xa9, 0xa2, 0x27, 0xb4, 0xe0, 0x77, + 0x50, 0x4c, 0x5e, 0xa4, 0x4c, 0x91, 0xeb, 0x6f, 0x54, 0x7b, 0xe7, 0xde, 0xe3, 0xb1, 0x8c, 0xbf, + 0xc9, 0x91, 0x1f, 0xa1, 0x9a, 0xdc, 0x06, 0xf3, 0x44, 0xee, 0x4e, 0xce, 0x06, 0xae, 0xbd, 0xbb, + 0x09, 0x27, 0x15, 0xb5, 0xb1, 0xa2, 0xc7, 0x84, 0x64, 0xef, 0xd8, 0x53, 0x28, 0x45, 0x53, 0x69, + 0x34, 0x55, 0x46, 0x3a, 0xeb, 0xd3, 0x8c, 0xf4, 0x9a, 0xf7, 0x9c, 0x0e, 0x4a, 0xb7, 0x49, 0x6b, + 0x4d, 0xfa, 0xa3, 0xe6, 0xf4, 0x7e, 0x61, 0x81, 0xfa, 0x95, 0xfc, 0x04, 0xf6, 0x3b, 0xae, 0x4c, + 0xe7, 0x3e, 0xa9, 0xfa, 0x67, 0x78, 0xc4, 0x0e, 0x69, 0x66, 0xfa, 0x99, 0x14, 0xff, 0x73, 0x46, + 0xfb, 0x93, 0xca, 0x7f, 0x81, 0xda, 0xcf, 0xc8, 0xd3, 0xac, 0x76, 0xa6, 0xfa, 0x0f, 0xdb, 0xf8, + 0x8f, 0xca, 0xeb, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x88, 0xc1, 0x07, 0xdf, 0x08, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1061,6 +1065,32 @@ type SwapClientServer interface { GetLoopInQuote(context.Context, *QuoteRequest) (*QuoteResponse, error) } +// UnimplementedSwapClientServer can be embedded to have forward compatible implementations. +type UnimplementedSwapClientServer struct { +} + +func (*UnimplementedSwapClientServer) LoopOut(ctx context.Context, req *LoopOutRequest) (*SwapResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoopOut not implemented") +} +func (*UnimplementedSwapClientServer) LoopIn(ctx context.Context, req *LoopInRequest) (*SwapResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoopIn not implemented") +} +func (*UnimplementedSwapClientServer) Monitor(req *MonitorRequest, srv SwapClient_MonitorServer) error { + return status.Errorf(codes.Unimplemented, "method Monitor not implemented") +} +func (*UnimplementedSwapClientServer) LoopOutTerms(ctx context.Context, req *TermsRequest) (*TermsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoopOutTerms not implemented") +} +func (*UnimplementedSwapClientServer) LoopOutQuote(ctx context.Context, req *QuoteRequest) (*QuoteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoopOutQuote not implemented") +} +func (*UnimplementedSwapClientServer) GetLoopInTerms(ctx context.Context, req *TermsRequest) (*TermsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLoopInTerms not implemented") +} +func (*UnimplementedSwapClientServer) GetLoopInQuote(ctx context.Context, req *QuoteRequest) (*QuoteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLoopInQuote not implemented") +} + func RegisterSwapClientServer(s *grpc.Server, srv SwapClientServer) { s.RegisterService(&_SwapClient_serviceDesc, srv) } diff --git a/looprpc/client.pb.gw.go b/looprpc/client.pb.gw.go index 500982e..0251c65 100644 --- a/looprpc/client.pb.gw.go +++ b/looprpc/client.pb.gw.go @@ -9,13 +9,13 @@ It translates gRPC into RESTful JSON APIs. package looprpc import ( + "context" "io" "net/http" "github.com/golang/protobuf/proto" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/grpc-ecosystem/grpc-gateway/utilities" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" @@ -32,7 +32,11 @@ func request_SwapClient_LoopOut_0(ctx context.Context, marshaler runtime.Marshal var protoReq LoopOutRequest var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -41,6 +45,57 @@ func request_SwapClient_LoopOut_0(ctx context.Context, marshaler runtime.Marshal } +func local_request_SwapClient_LoopOut_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq LoopOutRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.LoopOut(ctx, &protoReq) + return msg, metadata, err + +} + +func request_SwapClient_LoopIn_0(ctx context.Context, marshaler runtime.Marshaler, client SwapClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq LoopInRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.LoopIn(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SwapClient_LoopIn_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq LoopInRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.LoopIn(ctx, &protoReq) + return msg, metadata, err + +} + func request_SwapClient_LoopOutTerms_0(ctx context.Context, marshaler runtime.Marshaler, client SwapClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq TermsRequest var metadata runtime.ServerMetadata @@ -50,6 +105,15 @@ func request_SwapClient_LoopOutTerms_0(ctx context.Context, marshaler runtime.Ma } +func local_request_SwapClient_LoopOutTerms_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TermsRequest + var metadata runtime.ServerMetadata + + msg, err := server.LoopOutTerms(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_SwapClient_LoopOutQuote_0 = &utilities.DoubleArray{Encoding: map[string]int{"amt": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -76,7 +140,10 @@ func request_SwapClient_LoopOutQuote_0(ctx context.Context, marshaler runtime.Ma return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_SwapClient_LoopOutQuote_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SwapClient_LoopOutQuote_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -85,6 +152,252 @@ func request_SwapClient_LoopOutQuote_0(ctx context.Context, marshaler runtime.Ma } +func local_request_SwapClient_LoopOutQuote_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QuoteRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["amt"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "amt") + } + + protoReq.Amt, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err) + } + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_SwapClient_LoopOutQuote_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.LoopOutQuote(ctx, &protoReq) + return msg, metadata, err + +} + +func request_SwapClient_GetLoopInTerms_0(ctx context.Context, marshaler runtime.Marshaler, client SwapClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TermsRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetLoopInTerms(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SwapClient_GetLoopInTerms_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TermsRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetLoopInTerms(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_SwapClient_GetLoopInQuote_0 = &utilities.DoubleArray{Encoding: map[string]int{"amt": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_SwapClient_GetLoopInQuote_0(ctx context.Context, marshaler runtime.Marshaler, client SwapClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QuoteRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["amt"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "amt") + } + + protoReq.Amt, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SwapClient_GetLoopInQuote_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetLoopInQuote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SwapClient_GetLoopInQuote_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QuoteRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["amt"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "amt") + } + + protoReq.Amt, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err) + } + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_SwapClient_GetLoopInQuote_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetLoopInQuote(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterSwapClientHandlerServer registers the http handlers for service SwapClient to "mux". +// UnaryRPC :call SwapClientServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +func RegisterSwapClientHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SwapClientServer, opts []grpc.DialOption) error { + + mux.Handle("POST", pattern_SwapClient_LoopOut_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SwapClient_LoopOut_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_LoopOut_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_SwapClient_LoopIn_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SwapClient_LoopIn_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_LoopIn_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_SwapClient_LoopOutTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SwapClient_LoopOutTerms_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_LoopOutTerms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_SwapClient_LoopOutQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SwapClient_LoopOutQuote_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_LoopOutQuote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_SwapClient_GetLoopInTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SwapClient_GetLoopInTerms_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_GetLoopInTerms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_SwapClient_GetLoopInQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SwapClient_GetLoopInQuote_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_GetLoopInQuote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + // RegisterSwapClientHandlerFromEndpoint is same as RegisterSwapClientHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterSwapClientHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -95,14 +408,14 @@ func RegisterSwapClientHandlerFromEndpoint(ctx context.Context, mux *runtime.Ser defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -113,20 +426,19 @@ func RegisterSwapClientHandlerFromEndpoint(ctx context.Context, mux *runtime.Ser // RegisterSwapClientHandler registers the http handlers for service SwapClient to "mux". // The handlers forward requests to the grpc endpoint over "conn". func RegisterSwapClientHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - client := NewSwapClientClient(conn) + return RegisterSwapClientHandlerClient(ctx, mux, NewSwapClientClient(conn)) +} + +// RegisterSwapClientHandlerClient registers the http handlers for service SwapClient +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SwapClientClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SwapClientClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "SwapClientClient" to call the correct interceptors. +func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SwapClientClient) error { mux.Handle("POST", pattern_SwapClient_LoopOut_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(ctx) + ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -144,18 +456,29 @@ func RegisterSwapClientHandler(ctx context.Context, mux *runtime.ServeMux, conn }) - mux.Handle("GET", pattern_SwapClient_LoopOutTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(ctx) + mux.Handle("POST", pattern_SwapClient_LoopIn_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return } + resp, md, err := request_SwapClient_LoopIn_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_LoopIn_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_SwapClient_LoopOutTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -174,17 +497,8 @@ func RegisterSwapClientHandler(ctx context.Context, mux *runtime.ServeMux, conn }) mux.Handle("GET", pattern_SwapClient_LoopOutQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(ctx) + ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -202,21 +516,73 @@ func RegisterSwapClientHandler(ctx context.Context, mux *runtime.ServeMux, conn }) + mux.Handle("GET", pattern_SwapClient_GetLoopInTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SwapClient_GetLoopInTerms_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_GetLoopInTerms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_SwapClient_GetLoopInQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SwapClient_GetLoopInQuote_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SwapClient_GetLoopInQuote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( - pattern_SwapClient_LoopOut_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "out"}, "")) + pattern_SwapClient_LoopOut_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "out"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_SwapClient_LoopIn_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "in"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_SwapClient_LoopOutTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "out", "terms"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_SwapClient_LoopOutTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "out", "terms"}, "")) + pattern_SwapClient_LoopOutQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "out", "quote", "amt"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_SwapClient_LoopOutQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "out", "quote", "amt"}, "")) + pattern_SwapClient_GetLoopInTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "in", "terms"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_SwapClient_GetLoopInQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "in", "quote", "amt"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( forward_SwapClient_LoopOut_0 = runtime.ForwardResponseMessage + forward_SwapClient_LoopIn_0 = runtime.ForwardResponseMessage + forward_SwapClient_LoopOutTerms_0 = runtime.ForwardResponseMessage forward_SwapClient_LoopOutQuote_0 = runtime.ForwardResponseMessage + + forward_SwapClient_GetLoopInTerms_0 = runtime.ForwardResponseMessage + + forward_SwapClient_GetLoopInQuote_0 = runtime.ForwardResponseMessage ) diff --git a/looprpc/client.proto b/looprpc/client.proto index fc71202..792ec1c 100644 --- a/looprpc/client.proto +++ b/looprpc/client.proto @@ -28,7 +28,12 @@ service SwapClient { point onwards, progress can be tracked via the SwapStatus stream that is returned from Monitor(). */ - rpc LoopIn(LoopInRequest) returns (SwapResponse); + rpc LoopIn(LoopInRequest) returns (SwapResponse) { + option (google.api.http) = { + post: "/v1/loop/in" + body: "*" + }; + } /** loop: `monitor` Monitor will return a stream of swap updates for currently active swaps. @@ -58,12 +63,20 @@ service SwapClient { /** GetTerms returns the terms that the server enforces for swaps. */ - rpc GetLoopInTerms(TermsRequest) returns(TermsResponse); + rpc GetLoopInTerms(TermsRequest) returns(TermsResponse) { + option (google.api.http) = { + get: "/v1/loop/in/terms" + }; + } /** GetQuote returns a quote for a swap with the provided parameters. */ - rpc GetLoopInQuote(QuoteRequest) returns(QuoteResponse); + rpc GetLoopInQuote(QuoteRequest) returns(QuoteResponse) { + option (google.api.http) = { + get: "/v1/loop/in/quote/{amt}" + }; + } } message LoopOutRequest { diff --git a/looprpc/client.swagger.json b/looprpc/client.swagger.json index 50d3d92..0031979 100644 --- a/looprpc/client.swagger.json +++ b/looprpc/client.swagger.json @@ -15,13 +15,92 @@ "application/json" ], "paths": { + "/v1/loop/in": { + "post": { + "summary": "*\nLoopIn initiates a loop in swap with the given parameters. The call\nreturns after the swap has been set up with the swap server. From that\npoint onwards, progress can be tracked via the SwapStatus stream\nthat is returned from Monitor().", + "operationId": "LoopIn", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/looprpcSwapResponse" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/looprpcLoopInRequest" + } + } + ], + "tags": [ + "SwapClient" + ] + } + }, + "/v1/loop/in/quote/{amt}": { + "get": { + "summary": "*\nGetQuote returns a quote for a swap with the provided parameters.", + "operationId": "GetLoopInQuote", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/looprpcQuoteResponse" + } + } + }, + "parameters": [ + { + "name": "amt", + "description": "*\nThe amount to swap in satoshis.", + "in": "path", + "required": true, + "type": "string", + "format": "int64" + }, + { + "name": "conf_target", + "description": "*\nThe confirmation target that should be used either for the sweep of the\non-chain HTLC broadcast by the swap server in the case of a Loop Out, or for\nthe confirmation of the on-chain HTLC broadcast by the swap client in the\ncase of a Loop In.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "SwapClient" + ] + } + }, + "/v1/loop/in/terms": { + "get": { + "summary": "*\nGetTerms returns the terms that the server enforces for swaps.", + "operationId": "GetLoopInTerms", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/looprpcTermsResponse" + } + } + }, + "tags": [ + "SwapClient" + ] + } + }, "/v1/loop/out": { "post": { "summary": "* loop: `out`\nLoopOut initiates an loop out swap with the given parameters. The call\nreturns after the swap has been set up with the swap server. From that\npoint onwards, progress can be tracked via the SwapStatus stream that is\nreturned from Monitor().", "operationId": "LoopOut", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/looprpcSwapResponse" } @@ -48,7 +127,7 @@ "operationId": "LoopOutQuote", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/looprpcQuoteResponse" } @@ -57,6 +136,7 @@ "parameters": [ { "name": "amt", + "description": "*\nThe amount to swap in satoshis.", "in": "path", "required": true, "type": "string", @@ -82,7 +162,7 @@ "operationId": "LoopOutTerms", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/looprpcTermsResponse" } @@ -95,6 +175,36 @@ } }, "definitions": { + "looprpcLoopInRequest": { + "type": "object", + "properties": { + "amt": { + "type": "string", + "format": "int64", + "description": "*\nRequested swap amount in sat. This does not include the swap and miner \nfee." + }, + "max_swap_fee": { + "type": "string", + "format": "int64", + "description": "*\nMaximum we are willing to pay the server for the swap. This value is not\ndisclosed in the swap initiation call, but if the server asks for a\nhigher fee, we abort the swap. Typically this value is taken from the\nresponse of the GetQuote call." + }, + "max_miner_fee": { + "type": "string", + "format": "int64", + "description": "*\nMaximum in on-chain fees that we are willing to spent. If we want to\npublish the on-chain htlc and the fee estimate turns out higher than this\nvalue, we cancel the swap. \n\nmax_miner_fee is typically taken from the response of the GetQuote call." + }, + "loop_in_channel": { + "type": "string", + "format": "uint64", + "description": "*\nThe channel to loop in. If zero, the channel to loop in is selected based\non the lowest routing fee for the swap payment from the server.\n\nNote: NOT YET IMPLEMENTED" + }, + "external_htlc": { + "type": "boolean", + "format": "boolean", + "description": "*\nIf external_htlc is true, we expect the htlc to be published by an external\nactor." + } + } + }, "looprpcLoopOutRequest": { "type": "object", "properties": { @@ -288,6 +398,57 @@ "title": "*\nOn-chain cltv expiry delta" } } + }, + "protobufAny": { + "type": "object", + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "runtimeStreamError": { + "type": "object", + "properties": { + "grpc_code": { + "type": "integer", + "format": "int32" + }, + "http_code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "http_status": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + } + }, + "x-stream-definitions": { + "looprpcSwapStatus": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/looprpcSwapStatus" + }, + "error": { + "$ref": "#/definitions/runtimeStreamError" + } + }, + "title": "Stream result of looprpcSwapStatus" } } } diff --git a/looprpc/server.pb.go b/looprpc/server.pb.go index e9914df..adfff68 100644 --- a/looprpc/server.pb.go +++ b/looprpc/server.pb.go @@ -9,6 +9,8 @@ import ( proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -595,6 +597,23 @@ type SwapServerServer interface { LoopInQuote(context.Context, *ServerLoopInQuoteRequest) (*ServerLoopInQuoteResponse, error) } +// UnimplementedSwapServerServer can be embedded to have forward compatible implementations. +type UnimplementedSwapServerServer struct { +} + +func (*UnimplementedSwapServerServer) NewLoopOutSwap(ctx context.Context, req *ServerLoopOutRequest) (*ServerLoopOutResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NewLoopOutSwap not implemented") +} +func (*UnimplementedSwapServerServer) LoopOutQuote(ctx context.Context, req *ServerLoopOutQuoteRequest) (*ServerLoopOutQuote, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoopOutQuote not implemented") +} +func (*UnimplementedSwapServerServer) NewLoopInSwap(ctx context.Context, req *ServerLoopInRequest) (*ServerLoopInResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NewLoopInSwap not implemented") +} +func (*UnimplementedSwapServerServer) LoopInQuote(ctx context.Context, req *ServerLoopInQuoteRequest) (*ServerLoopInQuoteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoopInQuote not implemented") +} + func RegisterSwapServerServer(s *grpc.Server, srv SwapServerServer) { s.RegisterService(&_SwapServer_serviceDesc, srv) }