From bc318edfde168e1114bb89cecb46f5c8aead90e4 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 18 Jul 2019 18:42:35 +0200 Subject: [PATCH] subscriber bundle now provides it's config; add subscription decoder type --- a_main-packr.go | 7 +- go.mod | 2 +- go.sum | 19 ++++++ internal/bundle/publish.go | 1 + internal/bundle/subscribe.go | 67 ++++++++++++++----- internal/generate/amqp_encode_decode.go | 8 ++- internal/parse/amqp_encode_decode.go | 6 +- internal/template/context.go | 20 ++++-- internal/template/partial.go | 29 ++++---- templates/amqp_encode_decode.tpl | 5 ++ templates/amqp_subscriber_handler.tpl | 14 +++- templates/amqp_subscriber_init.tpl | 2 +- .../subscribe_decoder_interfaces.tpl | 2 + 13 files changed, 135 insertions(+), 47 deletions(-) create mode 100644 templates/partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl diff --git a/a_main-packr.go b/a_main-packr.go index 26459f6..695123a 100644 --- a/a_main-packr.go +++ b/a_main-packr.go @@ -8,10 +8,10 @@ import "github.com/gobuffalo/packr" // and any other packr generated files. func init() { packr.PackJSONBytes("./templates", "Dockerfile.tpl", "\"IyMjIyMjIyMjIyMjIyMjIyMKIyBCdWlsZGVyIGltYWdlICMKIyMjIyMjIyMjIyMjIyMjIyMKRlJPTSBnb2xhbmc6MS4xMiBhcyBidWlsZGVyCgpFTlYgR08xMTFNT0RVTEU9b24KCiMgSW5zdGFsbCBnaXQgKyBTU0wgY2EgY2VydGlmaWNhdGVzLgojIEdpdCBpcyByZXF1aXJlZCBmb3IgZmV0Y2hpbmcgdGhlIGRlcGVuZGVuY2llcy4KIyBDQS1jZXJ0aWZpY2F0ZXMgaXMgcmVxdWlyZWQgdG8gY2FsbCBIVFRQUyBlbmRwb2ludHMuClJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgZ2l0IGNhLWNlcnRpZmljYXRlcyAmJiB1cGRhdGUtY2EtY2VydGlmaWNhdGVzCgojIENyZWF0ZSB1c2VyIGZvciB0aGUgcnVudGltZSBpbWFnZQpSVU4gYWRkdXNlciAtLWRpc2FibGVkLXBhc3N3b3JkIC0tZ2Vjb3MgJycgc2VydmljZXVzZXIKCiMgYnVpbGQgYmluYXJ5CldPUktESVIgL2J1aWxkCkNPUFkgLiAuClJVTiBDR09fRU5BQkxFRD0wIEdPT1M9bGludXggR09BUkNIPWFtZDY0IEdPRkxBR1M9LW1vZD12ZW5kb3IgZ28gYnVpbGQgIC1sZGZsYWdzPSItdyAtcyIgLW8gL2Jpbi97eyAuU2VydmljZS5OYW1lIH19IC4vY21kL3t7IC5TZXJ2aWNlLk5hbWUgfX0vbWFpbi5nbwoKCiMjIyMjIyMjIyMjIyMjIyMjCiMgUnVudGltZSBpbWFnZSAjCiMjIyMjIyMjIyMjIyMjIyMjCkZST00gc2NyYXRjaAoKIyAgc2VydmljZSBiaW5hcnkgYW5kIGFzc2V0cwpDT1BZIC0tZnJvbT1idWlsZGVyIC9iaW4ve3sgLlNlcnZpY2UuTmFtZSB9fSAve3sgLlNlcnZpY2UuTmFtZSB9fQojQ09QWSAuL21pZ3JhdGlvbnMgL21pZ3JhdGlvbnMKCiMgaW1wb3J0IGZyb20gYnVpbGRlcgpDT1BZIC0tZnJvbT1idWlsZGVyIC91c3Ivc2hhcmUvem9uZWluZm8gL3Vzci9zaGFyZS96b25laW5mbwpDT1BZIC0tZnJvbT1idWlsZGVyIC9ldGMvcGFzc3dkIC9ldGMvcGFzc3dkCkNPUFkgLS1mcm9tPWJ1aWxkZXIgL2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCAvZXRjL3NzbC9jZXJ0cy8KCiMgYmV0dGVyIG5vdCBydW4gYXMgcm9vdApVU0VSIHNlcnZpY2V1c2VyCgpFTlRSWVBPSU5UIFsiL3t7IC5TZXJ2aWNlLk5hbWUgfX0iXQoK\"") - packr.PackJSONBytes("./templates", "amqp_encode_decode.tpl", "\"cGFja2FnZSBhbXFwCgppbXBvcnQgKAogICAgcGIgInt7IC5Qcm90b2J1Zi5QYWNrYWdlIH19IgopCgoKe3stIGlmIGd0IChsZW4gLlNlcnZpY2UuUHVibGlzaGVyKSAwIH19Cnt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0Ke3stIHRlbXBsYXRlICJhbXFwX3B1Ymxpc2hfZW5jb2RlIiAuIH19Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQo=\"") + packr.PackJSONBytes("./templates", "amqp_encode_decode.tpl", "\"cGFja2FnZSBhbXFwCgppbXBvcnQgKAogICAgImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCiAgICBwYiAie3sgLlByb3RvYnVmLlBhY2thZ2UgfX0iCikKCnt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlN1YnNjcmliZXIpIDAgfX0KdHlwZSBTdWJjcmlwdGlvbkRlY29kZXIgZnVuYyhkZWxpdmVyeSAqcmFiYml0bXEuRGVsaXZlcnkpIChkZWNvZGVkIGludGVyZmFjZXt9LCBlcnIgZXJyb3IpCnt7LSBlbmQgfX0KCnt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQp7ey0gcmFuZ2UgLlNlcnZpY2UuUHVibGlzaGVyIH19Cnt7LSB0ZW1wbGF0ZSAiYW1xcF9wdWJsaXNoX2VuY29kZSIgLiB9fQp7ey0gZW5kIH19Cnt7LSBlbmQgfX0KCg==\"") packr.PackJSONBytes("./templates", "amqp_publisher_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiY29udGV4dCIKCSJnaXRodWIuY29tL3BrZy9lcnJvcnMiCgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9ncnBjLW1ldGFkYXRhIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgopCgp0eXBlIFB1Ymxpc2hlclNldCBzdHJ1Y3QgewoJbG9nZ2VyIGxvZy5Mb2dnZXIKICAgIHt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KICAgIHt7IHVudGl0bGUgLk5hbWUgfX0gcmFiYml0bXEuUHVibGlzaGVyCgl7ey0gZW5kIH19Cn0KCi8vIFB1Ymxpc2hlcnMgd2lsbCBpbml0aWFsaXplIGFsbCBBTVFQIHB1Ymxpc2hlcnMuIEVhY2ggcHVibGlzaGVyIHdpbGwgcmVjZWl2ZSBpdCdzIG93biBjaGFubmVsIHRvIHdvcmsgb24KLy8gdG8gcmVkdWNlIFRDUCBwcmVzc3VyZSBpbiB0aW1lcyBvZiBoaWdoIGxvYWQuCmZ1bmMgUHVibGlzaGVycyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSwgbG9nZ2dlciBsb2cuTG9nZ2VyKSBQdWJsaXNoZXJTZXQgewoJe3stIHJhbmdlIC5TZXJ2aWNlLlB1Ymxpc2hlciB9fQoJe3sgdW50aXRsZSAuTmFtZSB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gUHVibGlzaGVyU2V0ewoJCWxvZ2dlcjpsb2dnZ2VyLAoJCXt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KCQl7eyB1bnRpdGxlIC5OYW1lIH19OiByYWJiaXRtcS5OZXdQdWJsaXNoZXIoCgkJCXt7IHVudGl0bGUgLk5hbWUgfX1DaGFubmVsLAoJCQkmcmFiYml0bXEuUHVibGlzaGluZ3sKCQkJCVRvcGljOiAie3sgLlB1Ymxpc2hpbmcuVG9waWMgfX0iLAoJCQkJRXhjaGFuZ2U6ICJ7eyAuUHVibGlzaGluZy5FeGNoYW5nZSB9fSIsCgkJCQlEZWxpdmVyeU1vZGU6IHt7IC5QdWJsaXNoaW5nLkRlbGl2ZXJ5TW9kZSB9fSwKCQkJfSwKCQkpLAoJCXt7LSBlbmQgfX0KCX0KfQoKe3stICRzZXJ2aWNlTmFtZSA6PSB0aXRsZSAuU2VydmljZS5OYW1lIC19fQoKCnt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KZnVuYyAocHViIFB1Ymxpc2hlclNldCkgUHVibGlzaHt7IC5OYW1lIH19KGN0eCBjb250ZXh0LkNvbnRleHQsIGV2ZW50IGludGVyZmFjZXt9KSBlcnJvciB7Cglsb2dnZXIgOj0gcHViLmxvZ2dlci5XaXRoKCJ0b3BpYyIsICJ7eyAuUHVibGlzaGluZy5Ub3BpYyB9fSIsICJleGNoYW5nZSIsICJ7eyAuUHVibGlzaGluZy5FeGNoYW5nZSB9fSIsICJyZXF1ZXN0SWQiLCBncnBjX21ldGFkYXRhLkdldFJlcXVlc3RJRChjdHgpKQoKCWV2dCwgZXJyIDo9IHt7IC5OYW1lIH19RW5jb2RlcihldmVudCkKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGVuY29kZSBldmVudCIsICJldmVudCIsIGV2ZW50KQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gZW5jb2RlIGV2ZW50IikKCX0KCglpZiBlcnIgOj0gcHViLnt7IHVudGl0bGUgLk5hbWUgfX0uUHVibGlzaChjdHgsIGV2dCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQiLCAiZXJyIiwgZXJyKQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gcHVibGlzaCB0byAne3sgLlB1Ymxpc2hpbmcuVG9waWMgfX0nIikKCX0KCglsb2dnZXIuSW5mbygicHVibGlzaGVkICd7eyAuUHVibGlzaGluZy5Ub3BpYyB9fScgZXZlbnQiKQoJcmV0dXJuIG5pbAp9Cnt7LSBlbmQgfX0K\"") - packr.PackJSONBytes("./templates", "amqp_subscriber_handler.tpl", "\"cGFja2FnZSBzdWJzY3JpYmVyCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCWdycGNfbWV0YWRhdGEgImdpdGh1Yi5jb20vZ28tZ29kaW4vZ3JwYy1tZXRhZGF0YSIKCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCikKCnt7LSAkc2VydmljZU5hbWUgOj0gdGl0bGUgLlNlcnZpY2UuTmFtZSAtfX0KCnt7LyoKTG9vcCBvdmVyIGFsbCBzdWJzY3JpYmVycy4gVGhlIHNsaWNlIGlzIGZha2VkLCB0aG8uIFRoZSBnZW5lcmF0b3Igd2lsbCByZXBsYWNlIHRoZSBzbGljZSB3aXRoIHRoZSBjdXJyZW50CnN1YnNjcmliZXIgb25seSwgc28gd2UgY2FuIHNhZmVseSBhc3N1bWUgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBlbGVtZW50IGluIHRoZSBzbGljZS4KKi99fQp7eyByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19Ci8vIHt7IC5IYW5kbGVyIH19IGlzIHJlc3BvbnNpYmxlIG9mIGhhbmRsaW5nIGFsbCBpbmNvbWluZyBBTVFQIG1lc3NhZ2VzIHdpdGggcm91dGluZyBrZXkgJ3t7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0nCmZ1bmMge3sgLkhhbmRsZXIgfX0obG9nZ2VyIGxvZy5Mb2dnZXIsIHVzZWNhc2Ugc2VydmljZS57eyB0aXRsZSAkc2VydmljZU5hbWUgfX0pIHJhYmJpdG1xLlN1YnNjcmlwdGlvbkhhbmRsZXIgewoJcmV0dXJuIGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgZGVsaXZlcnkgKnJhYmJpdG1xLkRlbGl2ZXJ5KSB7CgkJLy8gdGhlIHJlcXVlc3RJZCBpcyBpbmplY3RlZCBpbnRvIHRoZSBjb250ZXh0IGFuZCBzaG91bGQgYmUgYXR0YWNoZWQgb24gZXZlcnkgbG9nCgkJbG9nZ2VyID0gbG9nZ2VyLldpdGgoc3RyaW5nKGdycGNfbWV0YWRhdGEuUmVxdWVzdElEKSwgY3R4LlZhbHVlKHN0cmluZyhncnBjX21ldGFkYXRhLlJlcXVlc3RJRCkpKQoKCQkvLyBUT0RPOiBIYW5kbGUge3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSBzdWJzY3JpcHRpb24KCQkvKgoJCQlJZiB5b3Ugd2FudCB0byBOQUNLIHRoZSBkZWxpdmVyeSwgdXNlIGBkZWxpdmVyeS5OYWNrRGVsaXZlcnkoKWAgaW5zdGVhZCBvZiBOYWNrKCkuCgkJCVRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGUgcHJvbWV0aGV1cyBhbXFwX25hY2tfY291bnRlciBpcyBpbmNyZWFzZWQuCgoJCQlHb2RpbnMgZGVsaXZlcnkgd3JhcHBlciBhbHNvIHByb3ZpZGVzIGEgYGRlbGl2ZXJ5LkluY3JlbWVudFRyYW5zcG9ydEVycm9yQ291bnRlcigpYCBtZXRob2QgdG8gZ3JhbnQKCQkJeW91IGFjY2VzcyB0byB0aGUgYW1xcF90cmFuc3BvcnRfZXJyb3IgbWV0cmljLiBDYWxsIGl0IGlmIHRoZSBtZXNzYWdlIGlzIGluY29tcGxldGUgb3IgY2Fubm90CgkJCWJlIHVubWFyc2hhbGxlZCBmb3IgYW55IHJlYXNvbi4KCQkqLwoKCQlfID0gZGVsaXZlcnkuQWNrKGZhbHNlKQogICAgfQp9Cnt7IGVuZCB9fQoK\"") - packr.PackJSONBytes("./templates", "amqp_subscriber_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiZ2l0aHViLmNvbS9wa2cvZXJyb3JzIgoKCSJnaXRodWIuY29tL2dvLWdvZGluL2xvZyIKCW1pZGRsZXdhcmUgImdpdGh1Yi5jb20vZ28tZ29kaW4vbWlkZGxld2FyZS9hbXFwIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3N1YnNjcmliZXIiCikKCnR5cGUgU3Vic2NyaWJlclNldCBzdHJ1Y3QgewogICAge3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KICAgIHt7IHVudGl0bGUgLkhhbmRsZXIgfX0gcmFiYml0bXEuU3Vic2NyaWJlcgoJe3stIGVuZCB9fQp9CgovLyBTdWJzY3JpcHRpb25zIHdpbGwgaW5pdGlhbGl6ZSBhbGwgQU1RUCBzdWJzY3JpcHRpb25zLiBGb3IgZWFjaCBzdWJzY3JpcHRpb24sIGEgbmV3IEFNUVAgY2hhbm5lbCBpcyBjcmVhdGVkIG9uIHdoaWNoCi8vIHRoZSBDb25zdW1lKCkgZ29yb3V0aW5lIHdpbGwgcnVuIChvbmUgY2hhbm5lbCBwZXIgdGhyZWFkIHBvbGljeSkuCmZ1bmMgU3Vic2NyaXB0aW9ucyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSkgU3Vic2NyaWJlclNldCB7Cgl7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQoJe3sgdW50aXRsZSAuSGFuZGxlciB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gU3Vic2NyaWJlclNldHsKICAgIHt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19CiAgICAgICAge3sgdW50aXRsZSAuSGFuZGxlciB9fTogcmFiYml0bXEuTmV3U3Vic2NyaWJlcih7eyB1bnRpdGxlIC5IYW5kbGVyIH19Q2hhbm5lbCwgJnJhYmJpdG1xLlN1YnNjcmlwdGlvbnsKICAgICAgICAgICAgRXhjaGFuZ2U6ICJ7eyAuU3Vic2NyaXB0aW9uLkV4Y2hhbmdlIH19IiwKCQkgICAgVG9waWM6ICJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwKICAgICAgICAgICAgQXV0b0FjazogIHt7IC5TdWJzY3JpcHRpb24uQXV0b0FjayB9fSwKICAgICAgICAgICAgUXVldWU6IHJhYmJpdG1xLlN1YnNjcmlwdGlvblF1ZXVlewogICAgICAgICAgICAgICAgQXV0b0RlbGV0ZToge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5BdXRvRGVsZXRlIH19LAogICAgICAgICAgICAgICAgRHVyYWJsZTogICAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5EdXJhYmxlIH19LAogICAgICAgICAgICAgICAgRXhjbHVzaXZlOiAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5FeGNsdXNpdmUgfX0sCiAgICAgICAgICAgICAgICBOYW1lOiAgICAgICAie3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5OYW1lIH19IiwKICAgICAgICAgICAgICAgIE5vV2FpdDogICAgIHt7IC5TdWJzY3JpcHRpb24uUXVldWUuTm9XYWl0IH19LAogICAgICAgICAgICB9LAoJCX0pLAoJe3sgZW5kIH19Cgl9Cn0KCnt7LSAkc2VydmljZU5hbWUgOj0gdGl0bGUgLlNlcnZpY2UuTmFtZSAtfX0KCnt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19Ci8vIHt7IC5IYW5kbGVyIH19IHNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbiB0byB0aGUgJ3t7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0nIHRvcGljLiBBbGwgbWlkZGxld2FyZSBpcyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQKLy8gYW5kIGNhbGxlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBSZXF1ZXN0SUQgPT4gUHJvbWV0aGV1c0luc3RydW1lbnRhdGlvbiA9PiBMb2dnaW5nID0+IHN1YnNjcmliZXIue3sgLkhhbmRsZXIgfX0KLy8gVGhlIFJlcXVlc3RJRCBtaWRkbHdhcmUgd2lsbCBleHRyYWN0IHRoZSByZXF1ZXN0SWQgZnJvbSB0aGUgZGVsaXZlcnkgaGVhZGVyIG9yIGdlbmVyYXRlIGEgbmV3IG9uZS4gVGhlIHJlcXVlc3RJZCBpcwovLyB0aGVuIG1hZCBhdmFpbGFibGUgdGhyb3VnaCB0aGUgY29udGV4dC4KZnVuYyAoc3MgU3Vic2NyaWJlclNldCkge3sgLkhhbmRsZXIgfX0obG9nZ2VyIGxvZy5Mb2dnZXIsIHVzZWNhc2Ugc2VydmljZS57eyAkc2VydmljZU5hbWUgfX0pIGVycm9yIHsKCWhhbmRsZXIgOj0gc3Vic2NyaWJlci57eyAuSGFuZGxlciB9fShsb2dnZXIsIHVzZWNhc2UpCgloYW5kbGVyID0gbWlkZGxld2FyZS5Mb2dnaW5nKGxvZ2dlciwgInt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iLCBoYW5kbGVyKQoJaGFuZGxlciA9IG1pZGRsZXdhcmUuUHJvbWV0aGV1c0luc3RydW1lbnRhdGlvbigie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIsIGhhbmRsZXIpCgloYW5kbGVyID0gbWlkZGxld2FyZS5SZXF1ZXN0SUQoaGFuZGxlcikKCglpZiBlcnIgOj0gc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpYmUoaGFuZGxlcik7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIHN1YnNjcmliZSB0byB7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwgImVyciIsIGVyciwgInRyYW5zcG9ydCIsICJBTVFQIikKCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyLCAiZmFpbGVkIHRvIHN1YnNjcmliZSB0byB7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IikKCX0KCWxvZ2dlci5JbmZvKAoJCSJzdWJzY3JpYmVkIHRvIHRvcGljICd7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19JyIsCgkJInRvcGljIiwgc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpcHRpb24uVG9waWMsCgkJInF1ZXVlIiwgc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpcHRpb24uUXVldWUuTmFtZSwKCQkiZXhjaGFuZ2UiLCBzcy57eyB1bnRpdGxlIC5IYW5kbGVyIH19LlN1YnNjcmlwdGlvbi5FeGNoYW5nZSwKCQkidHJhbnNwb3J0IiwgIkFNUVAiLAoJKQoKCXJldHVybiBuaWwKfQp7eyBlbmQgfX0KCi8vIFNodXRkb3duIHdpbGwgY2FsbCBTaHV0ZG93bigpIG9uIGFsbCByZWdpc3RlcmVkIHN1YnNjcmlwdGlvbnMKZnVuYyAoc3MgU3Vic2NyaWJlclNldCkgU2h1dGRvd24oKSAoZXJyIGVycm9yKSB7Cgl7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQoJZXJyID0gc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TaHV0ZG93bigpCgl7ey0gZW5kIH19CgoJcmV0dXJuIGVycgp9Cg==\"") + packr.PackJSONBytes("./templates", "amqp_subscriber_handler.tpl", "\"cGFja2FnZSBzdWJzY3JpYmVyCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCWdycGNfbWV0YWRhdGEgImdpdGh1Yi5jb20vZ28tZ29kaW4vZ3JwYy1tZXRhZGF0YSIKCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCiAgICB7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQogICAge3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvICJ7eyAuUHJvdG9idWYuSW1wb3J0IH19IgogICAge3stIGVuZCB9fQopCgp7ey0gJHNlcnZpY2VOYW1lIDo9IHRpdGxlIC5TZXJ2aWNlLk5hbWUgLX19Cgp7ey8qCkxvb3Agb3ZlciBhbGwgc3Vic2NyaWJlcnMuIFRoZSBzbGljZSBpcyBmYWtlZCwgdGhvLiBUaGUgZ2VuZXJhdG9yIHdpbGwgcmVwbGFjZSB0aGUgc2xpY2Ugd2l0aCB0aGUgY3VycmVudApzdWJzY3JpYmVyIG9ubHksIHNvIHdlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudCBpbiB0aGUgc2xpY2UuCiovfX0Ke3sgcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQovLyB7eyAuSGFuZGxlciB9fSBpcyByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBhbGwgaW5jb21pbmcgQU1RUCBtZXNzYWdlcyB3aXRoIHJvdXRpbmcga2V5ICd7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19JwpmdW5jIHt7IC5IYW5kbGVyIH19U3Vic2NyaWJlcihsb2dnZXIgbG9nLkxvZ2dlciwgdXNlY2FzZSBzZXJ2aWNlLnt7IHRpdGxlICRzZXJ2aWNlTmFtZSB9fSwgZGVjb2RlciByYWJiaXRtcS5TdWJzY3JpYmVyRGVjb2RlcikgcmFiYml0bXEuU3Vic2NyaXB0aW9uSGFuZGxlciB7CglyZXR1cm4gZnVuYyhjdHggY29udGV4dC5Db250ZXh0LCBkZWxpdmVyeSAqcmFiYml0bXEuRGVsaXZlcnkpIHsKCQkvLyB0aGUgcmVxdWVzdElkIGlzIGluamVjdGVkIGludG8gdGhlIGNvbnRleHQgYW5kIHNob3VsZCBiZSBhdHRhY2hlZCBvbiBldmVyeSBsb2cKCQlsb2dnZXIgPSBsb2dnZXIuV2l0aChzdHJpbmcoZ3JwY19tZXRhZGF0YS5SZXF1ZXN0SUQpLCBjdHguVmFsdWUoc3RyaW5nKGdycGNfbWV0YWRhdGEuUmVxdWVzdElEKSkpCgoJCWV2ZW50LCBlcnIgOj0gZGVjb2RlcihkZWxpdmVyeSkKCQlldmVudCA9IGV2ZW50Lih7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8ue3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0pCgkJaWYgZXJyICE9IG5pbCB7CgkJICAgIGxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGRlY29kZSAne3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fScgZXZlbnQiLCAiZXJyIiwgZXJyKQoJCSAgICBkZWxpdmVyeS5OYWNrRGVsaXZlcnkoZmFsc2UsIGZhbHNlLCAie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIpCgkJICAgIGRlbGl2ZXJ5LkluY3JlbWVudFRyYW5zcG9ydEVycm9yQ291bnRlcigie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIpCgkJICAgIHJldHVybgoJCX0KCgkJLy8gVE9ETzogSGFuZGxlIHt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0gc3Vic2NyaXB0aW9uCgkJLyoKCQkJSWYgeW91IHdhbnQgdG8gTkFDSyB0aGUgZGVsaXZlcnksIHVzZSBgZGVsaXZlcnkuTmFja0RlbGl2ZXJ5KClgIGluc3RlYWQgb2YgTmFjaygpLgoJCQlUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIHByb21ldGhldXMgYW1xcF9uYWNrX2NvdW50ZXIgaXMgaW5jcmVhc2VkLgoKCQkJR29kaW5zIGRlbGl2ZXJ5IHdyYXBwZXIgYWxzbyBwcm92aWRlcyBhIGBkZWxpdmVyeS5JbmNyZW1lbnRUcmFuc3BvcnRFcnJvckNvdW50ZXIoKWAgbWV0aG9kIHRvIGdyYW50CgkJCXlvdSBhY2Nlc3MgdG8gdGhlIGFtcXBfdHJhbnNwb3J0X2Vycm9yIG1ldHJpYy4gQ2FsbCBpdCBpZiB0aGUgbWVzc2FnZSBpcyBpbmNvbXBsZXRlIG9yIGNhbm5vdAoJCQliZSB1bm1hcnNoYWxsZWQgZm9yIGFueSByZWFzb24uCgkJKi8KCgkJXyA9IGRlbGl2ZXJ5LkFjayhmYWxzZSkKICAgIH0KfQp7eyBlbmQgfX0KCg==\"") + packr.PackJSONBytes("./templates", "amqp_subscriber_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiZ2l0aHViLmNvbS9wa2cvZXJyb3JzIgoKCSJnaXRodWIuY29tL2dvLWdvZGluL2xvZyIKCW1pZGRsZXdhcmUgImdpdGh1Yi5jb20vZ28tZ29kaW4vbWlkZGxld2FyZS9hbXFwIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3N1YnNjcmliZXIiCikKCnR5cGUgU3Vic2NyaWJlclNldCBzdHJ1Y3QgewogICAge3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KICAgIHt7IHVudGl0bGUgLkhhbmRsZXIgfX0gcmFiYml0bXEuU3Vic2NyaWJlcgoJe3stIGVuZCB9fQp9CgovLyBTdWJzY3JpcHRpb25zIHdpbGwgaW5pdGlhbGl6ZSBhbGwgQU1RUCBzdWJzY3JpcHRpb25zLiBGb3IgZWFjaCBzdWJzY3JpcHRpb24sIGEgbmV3IEFNUVAgY2hhbm5lbCBpcyBjcmVhdGVkIG9uIHdoaWNoCi8vIHRoZSBDb25zdW1lKCkgZ29yb3V0aW5lIHdpbGwgcnVuIChvbmUgY2hhbm5lbCBwZXIgdGhyZWFkIHBvbGljeSkuCmZ1bmMgU3Vic2NyaXB0aW9ucyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSkgU3Vic2NyaWJlclNldCB7Cgl7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQoJe3sgdW50aXRsZSAuSGFuZGxlciB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gU3Vic2NyaWJlclNldHsKICAgIHt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19CiAgICAgICAge3sgdW50aXRsZSAuSGFuZGxlciB9fTogcmFiYml0bXEuTmV3U3Vic2NyaWJlcih7eyB1bnRpdGxlIC5IYW5kbGVyIH19Q2hhbm5lbCwgJnJhYmJpdG1xLlN1YnNjcmlwdGlvbnsKICAgICAgICAgICAgRXhjaGFuZ2U6ICJ7eyAuU3Vic2NyaXB0aW9uLkV4Y2hhbmdlIH19IiwKCQkgICAgVG9waWM6ICJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwKICAgICAgICAgICAgQXV0b0FjazogIHt7IC5TdWJzY3JpcHRpb24uQXV0b0FjayB9fSwKICAgICAgICAgICAgUXVldWU6IHJhYmJpdG1xLlN1YnNjcmlwdGlvblF1ZXVlewogICAgICAgICAgICAgICAgQXV0b0RlbGV0ZToge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5BdXRvRGVsZXRlIH19LAogICAgICAgICAgICAgICAgRHVyYWJsZTogICAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5EdXJhYmxlIH19LAogICAgICAgICAgICAgICAgRXhjbHVzaXZlOiAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5FeGNsdXNpdmUgfX0sCiAgICAgICAgICAgICAgICBOYW1lOiAgICAgICAie3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5OYW1lIH19IiwKICAgICAgICAgICAgICAgIE5vV2FpdDogICAgIHt7IC5TdWJzY3JpcHRpb24uUXVldWUuTm9XYWl0IH19LAogICAgICAgICAgICB9LAoJCX0pLAoJe3sgZW5kIH19Cgl9Cn0KCnt7LSAkc2VydmljZU5hbWUgOj0gdGl0bGUgLlNlcnZpY2UuTmFtZSAtfX0KCnt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19Ci8vIHt7IC5IYW5kbGVyIH19IHNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbiB0byB0aGUgJ3t7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0nIHRvcGljLiBBbGwgbWlkZGxld2FyZSBpcyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQKLy8gYW5kIGNhbGxlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBSZXF1ZXN0SUQgPT4gUHJvbWV0aGV1c0luc3RydW1lbnRhdGlvbiA9PiBMb2dnaW5nID0+IHN1YnNjcmliZXIue3sgLkhhbmRsZXIgfX0KLy8gVGhlIFJlcXVlc3RJRCBtaWRkbHdhcmUgd2lsbCBleHRyYWN0IHRoZSByZXF1ZXN0SWQgZnJvbSB0aGUgZGVsaXZlcnkgaGVhZGVyIG9yIGdlbmVyYXRlIGEgbmV3IG9uZS4gVGhlIHJlcXVlc3RJZCBpcwovLyB0aGVuIG1hZCBhdmFpbGFibGUgdGhyb3VnaCB0aGUgY29udGV4dC4KZnVuYyAoc3MgU3Vic2NyaWJlclNldCkge3sgLkhhbmRsZXIgfX0obG9nZ2VyIGxvZy5Mb2dnZXIsIHVzZWNhc2Ugc2VydmljZS57eyAkc2VydmljZU5hbWUgfX0pIGVycm9yIHsKCWhhbmRsZXIgOj0gc3Vic2NyaWJlci57eyAuSGFuZGxlciB9fVN1YnNjcmliZXIobG9nZ2VyLCB1c2VjYXNlKQoJaGFuZGxlciA9IG1pZGRsZXdhcmUuTG9nZ2luZyhsb2dnZXIsICJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwgaGFuZGxlcikKCWhhbmRsZXIgPSBtaWRkbGV3YXJlLlByb21ldGhldXNJbnN0cnVtZW50YXRpb24oInt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iLCBoYW5kbGVyKQoJaGFuZGxlciA9IG1pZGRsZXdhcmUuUmVxdWVzdElEKGhhbmRsZXIpCgoJaWYgZXJyIDo9IHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU3Vic2NyaWJlKGhhbmRsZXIpOyBlcnIgIT0gbmlsIHsKCQlsb2dnZXIuRXJyb3IoImZhaWxlZCB0byBzdWJzY3JpYmUgdG8ge3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIsICJlcnIiLCBlcnIsICJ0cmFuc3BvcnQiLCAiQU1RUCIpCgkJcmV0dXJuIGVycm9ycy5XcmFwKGVyciwgImZhaWxlZCB0byBzdWJzY3JpYmUgdG8ge3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIpCgl9Cglsb2dnZXIuSW5mbygKCQkic3Vic2NyaWJlZCB0byB0b3BpYyAne3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSciLAoJCSJ0b3BpYyIsIHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU3Vic2NyaXB0aW9uLlRvcGljLAoJCSJxdWV1ZSIsIHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU3Vic2NyaXB0aW9uLlF1ZXVlLk5hbWUsCgkJImV4Y2hhbmdlIiwgc3Mue3sgdW50aXRsZSAuSGFuZGxlciB9fS5TdWJzY3JpcHRpb24uRXhjaGFuZ2UsCgkJInRyYW5zcG9ydCIsICJBTVFQIiwKCSkKCglyZXR1cm4gbmlsCn0Ke3sgZW5kIH19CgovLyBTaHV0ZG93biB3aWxsIGNhbGwgU2h1dGRvd24oKSBvbiBhbGwgcmVnaXN0ZXJlZCBzdWJzY3JpcHRpb25zCmZ1bmMgKHNzIFN1YnNjcmliZXJTZXQpIFNodXRkb3duKCkgKGVyciBlcnJvcikgewoJe3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KCWVyciA9IHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU2h1dGRvd24oKQoJe3stIGVuZCB9fQoKCXJldHVybiBlcnIKfQo=\"") packr.PackJSONBytes("./templates", "cmd_main.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KcGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImZtdCIKICAgICJuZXQiCiAgICAibmV0L2h0dHAiCiAgICAib3MiCiAgICAib3Mvc2lnbmFsIgogICAgInN5c2NhbGwiCgoJImdpdGh1Yi5jb20vb2tsb2cvb2tsb2cvcGtnL2dyb3VwIgoJImdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nL3Byb21ldGhldXMvcHJvbWh0dHAiCglnb29nbGVHcnBjICJnb29nbGUuZ29sYW5nLm9yZy9ncnBjIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vZ3JwYy1pbnRlcmNlcHRvciIKCSJnaXRodWIuY29tL2dvLWdvZGluL3JhYmJpdG1xIgoKICAgIHBiICJ7eyAuUHJvdG9idWYuUGFja2FnZSB9fSIKCSJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvYW1xcCIKICAgIHN2Y0dycGMgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9ncnBjIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3VzZWNhc2UiCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UvbWlkZGxld2FyZSIKICAgICJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvc2VydmljZS9lbmRwb2ludCIKCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCikKCnZhciBEZWJ1Z0FkZHIgPSBnZXRFbnYoIkRFQlVHX0FERFJFU1MiLCAiMC4wLjAuMDozMDAwIikKdmFyIEdycGNBZGRyID0gZ2V0RW52KCJHUlBDX0FERFJFU1MiLCAiMC4wLjAuMDo1MDA1MSIpCgovLyBncm91cCB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBmb3IgZ29yb3V0aW5lcwp2YXIgZyBncm91cC5Hcm91cAoKZnVuYyBtYWluKCkgewogICAgbG9nZ2VyIDo9IGxvZy5OZXdMb2dnZXJGcm9tRW52KCkKCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlN1YnNjcmliZXIpIDAgfX0KCXJhYmJpdG1xU3ViQ29ubiA6PSBpbml0UmFiYml0TVEobG9nZ2VyKQoJZGVmZXIgcmFiYml0bXFTdWJDb25uLkNsb3NlKCkKCXt7LSBlbmQgfX0KCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQoJcmFiYml0bXFQdWJDb25uIDo9IGluaXRSYWJiaXRNUShsb2dnZXIpCglkZWZlciByYWJiaXRtcVB1YkNvbm4uQ2xvc2UoKQoJe3stIGVuZCB9fQoKCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQoJLy8gaW5pdCBwdWJsaXNoZXJzCglwdWJsaXNoZXJzIDo9IGFtcXAuUHVibGlzaGVycyhyYWJiaXRtcVB1YkNvbm4sIGxvZ2dlcikKCXt7LSBlbmQgfX0KCgkvLyBpbml0aWFsaXplIHNlcnZpY2UgaW5jbHVkaW5nIG1pZGRsZXdhcmUKCXZhciBzdmMgc2VydmljZS57eyB0aXRsZSAuU2VydmljZS5OYW1lIH19Cgl7ey8qCgkJRGVwZW5kaW5nIG9uIHdoaWNoIGJ1bmRsZXMgYXJlIGFjdGl2YXRlZCwgdGhlIHBhcmFtZXRlciBsaXN0IG9mIHRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGlzIGdvaW5nIHRvIGNoYW5nZS4KCQlUaGlzIGlzIGEgdHJpY2t5IGJpdCBhcyBhbGwgY29tYmluYXRpb25zIG5lZWQgdG8gYmUgdGFrZW4gY2FyZSBvZi4KCSovfX0KCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlB1Ymxpc2hlcikgMCB9fQoJc3ZjID0gdXNlY2FzZS5OZXdTZXJ2aWNlSW1wbGVtZW50YXRpb24obG9nZ2VyLCBwdWJsaXNoZXJzKQoJe3stIGVsc2UgfX0KCXN2YyA9IHVzZWNhc2UuTmV3U2VydmljZUltcGxlbWVudGF0aW9uKGxvZ2dlcikKCXt7LSBlbmQgfX0KCgl7ey0gaWYgLlNlcnZpY2UuTG9nZ2luZ01pZGRsZXdhcmUgfX0KCXN2YyA9IG1pZGRsZXdhcmUuTG9nZ2luZ01pZGRsZXdhcmUobG9nZ2VyKShzdmMpCgl7ey0gZW5kIH19CgoJLy8gaW5pdGlhbGl6ZSBlbmRwb2ludCBhbmQgdHJhbnNwb3J0IGxheWVycwoJdmFyICgKCQllbmRwb2ludHMgICA9IGVuZHBvaW50LkVuZHBvaW50cyhzdmMsIGxvZ2dlcikKCQlncnBjSGFuZGxlciA9IHN2Y0dycGMuTmV3U2VydmVyKGVuZHBvaW50cywgbG9nZ2VyKQoJKQoKCXt7LSBpZiBndCAobGVuIC5TZXJ2aWNlLlN1YnNjcmliZXIpIDAgfX0KCS8vIHNldHVwIEFNUVAgc3Vic2NyaXB0aW9ucwoJc3Vic2NyaXB0aW9ucyA6PSBhbXFwLlN1YnNjcmlwdGlvbnMocmFiYml0bXFTdWJDb25uKQoJe3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KCWlmIGVyciA6PSBzdWJzY3JpcHRpb25zLnt7IC5IYW5kbGVyIH19KGxvZ2dlciwgc3ZjKTsgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkVycm9yKCJmYWlsZWQgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbiIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgtMSkKCX0KCXt7LSBlbmQgfX0KCXt7LSBlbmQgfX0KCgkvLyBzZXJ2ZSBnUlBDIHNlcnZlcgoJZ3JwY1NlcnZlciA6PSBnb29nbGVHcnBjLk5ld1NlcnZlcigKCSAgICBnb29nbGVHcnBjLlVuYXJ5SW50ZXJjZXB0b3IoZ3JwY19pbnRlcmNlcHRvci5VbmFyeUludGVyY2VwdG9yKSwKCSkKCWcuQWRkKGluaXRHcnBjKGdycGNTZXJ2ZXIsIGdycGNIYW5kbGVyLCBsb2dnZXIpLCBmdW5jKGVycm9yKSB7CgkJZ3JwY1NlcnZlci5HcmFjZWZ1bFN0b3AoKQoJfSkKCgkvLyBzZXJ2ZSBkZWJ1ZyBodHRwIHNlcnZlciAocHJvbWV0aGV1cykKCWh0dHAuRGVmYXVsdFNlcnZlTXV4LkhhbmRsZSgiL21ldHJpY3MiLCBwcm9taHR0cC5IYW5kbGVyKCkpCglkZWJ1Z0xpc3RlbmVyIDo9IGluaXREZWJ1Z0h0dHAobG9nZ2VyKQoJZy5BZGQoZnVuYygpIGVycm9yIHsKCQlsb2dnZXIuTG9nKCJ0cmFuc3BvcnQiLCAiZGVidWcvSFRUUCIsICJhZGRyIiwgRGVidWdBZGRyKQoJCXJldHVybiBodHRwLlNlcnZlKGRlYnVnTGlzdGVuZXIsIGh0dHAuRGVmYXVsdFNlcnZlTXV4KQoJfSwgZnVuYyhlcnJvcikgewoJCWRlYnVnTGlzdGVuZXIuQ2xvc2UoKQoJfSkKCgkvLyBXYWl0IGZvciBTSUdJTlQgb3IgU0lHVEVSTSBhbmQgc3RvcCBncmFjZWZ1bGx5CgljYW5jZWxJbnRlcnJ1cHQgOj0gbWFrZShjaGFuIHN0cnVjdHt9KQoJZy5BZGQoc2h1dGRvd25IYW5kbGVyKGNhbmNlbEludGVycnVwdCksIGZ1bmMoZSBlcnJvcikgewoJCWNsb3NlKGNhbmNlbEludGVycnVwdCkKCX0pCgoJLy8gcnVuCglpZiBlcnIgOj0gZy5SdW4oKTsgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkxvZygiZmF0YWwiLCBlcnIpCgkJb3MuRXhpdCgxKQoJfQp9CgovLyBnZXRFbnYgZ2V0IGtleSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBleGlzdCBvdGhlcndpc2UgcmV0dXJuIGRlZmFsdXRWYWx1ZQpmdW5jIGdldEVudihrZXksIGRlZmF1bHRWYWx1ZSBzdHJpbmcpIHN0cmluZyB7Cgl2YWx1ZSA6PSBvcy5HZXRlbnYoa2V5KQoJaWYgbGVuKHZhbHVlKSA9PSAwIHsKCQlyZXR1cm4gZGVmYXVsdFZhbHVlCgl9CglyZXR1cm4gdmFsdWUKfQoKLy8gc2h1dGRvd25IYW5kbGVyIHRvIGhhbmRsZSBncmFjZWZ1bCBzaHV0ZG93bnMKZnVuYyBzaHV0ZG93bkhhbmRsZXIoaW50ZXJydXB0Q2hhbm5lbCBjaGFuIHN0cnVjdHt9KSBmdW5jKCkgZXJyb3IgewoJcmV0dXJuIGZ1bmMoKSBlcnJvciB7CgkJYyA6PSBtYWtlKGNoYW4gb3MuU2lnbmFsLCAxKQoJCXNpZ25hbC5Ob3RpZnkoYywgc3lzY2FsbC5TSUdJTlQsIHN5c2NhbGwuU0lHVEVSTSkKCQlzZWxlY3QgewoJCWNhc2Ugc2lnIDo9IDwtYzoKCQkJcmV0dXJuIGZtdC5FcnJvcmYoInJlY2VpdmVkIHNpZ25hbCAlcyIsIHNpZykKCQljYXNlIDwtaW50ZXJydXB0Q2hhbm5lbDoKCQkJcmV0dXJuIG5pbAoJCX0KCX0KfQoKLy8gaW5pdEdycGMgc2VydmUgdXAgR1JQQwpmdW5jIGluaXRHcnBjKGdycGNTZXJ2ZXIgKmdvb2dsZUdycGMuU2VydmVyLCBoYW5kbGVyIHBiLnt7IC5Qcm90b2J1Zi5TZXJ2aWNlIH19U2VydmVyLCBsb2dnZXIgbG9nLkxvZ2dlcikgZnVuYygpIGVycm9yIHsKCWdycGNMaXN0ZW5lciwgZXJyIDo9IG5ldC5MaXN0ZW4oInRjcCIsIEdycGNBZGRyKQoJaWYgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkxvZygidHJhbnNwb3J0IiwgImdSUEMiLCAiZHVyaW5nIiwgIkxpc3RlbiIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgxKQoJfQoKCXJldHVybiBmdW5jKCkgZXJyb3IgewoJCWxvZ2dlci5Mb2coInRyYW5zcG9ydCIsICJnUlBDIiwgImFkZHIiLCBHcnBjQWRkcikKCQlwYi5SZWdpc3Rlcnt7IC5Qcm90b2J1Zi5TZXJ2aWNlIH19U2VydmVyKGdycGNTZXJ2ZXIsIGhhbmRsZXIpCgkJcmV0dXJuIGdycGNTZXJ2ZXIuU2VydmUoZ3JwY0xpc3RlbmVyKQoJfQp9Cgp7eyBpZiAuU2VydmljZS5UcmFuc3BvcnQuQU1RUCB9fQovLyBpbml0UmFiYml0TVEgd2lsbCBpbml0aWFsaXplIHRoZSBhbXFwIGNvbm5lY3Rpb24gYW5kIGNyZWF0ZSBhIG5ldyBjaGFubmVsCmZ1bmMgaW5pdFJhYmJpdE1RKGxvZ2dlciBsb2cuTG9nZ2VyKSAqcmFiYml0bXEuUmFiYml0TVEgewoJcmFiYml0bXFDb25uLCBlcnIgOj0gcmFiYml0bXEuTmV3UmFiYml0TVFGcm9tRW52KCkKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGluaXRpYWxpemUgUmFiYml0TVEgY29ubmVjdGlvbiIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgtMSkKCX0KCWlmIGVyciA6PSByYWJiaXRtcUNvbm4uQ29ubmVjdCgpOyBlcnIgIT0gbmlsIHsKCQlsb2dnZXIuRXJyb3IoImZhaWxlZCB0byBjb25uZWN0IHRvIFJhYmJpdE1RIiwgImVyciIsIGVycikKCQlvcy5FeGl0KC0xKQoJfQoJaWYgcmFiYml0bXFDb25uLkNoYW5uZWwsIGVyciA9IHJhYmJpdG1xQ29ubi5OZXdDaGFubmVsKCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBBTVFQIGNoYW5uZWwiLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoLTEpCgl9CgoJcmV0dXJuIHJhYmJpdG1xQ29ubgp9Cnt7IGVuZCB9fQoKZnVuYyBpbml0RGVidWdIdHRwKGxvZ2dlciBsb2cuTG9nZ2VyKSBuZXQuTGlzdGVuZXIgewoJZGVidWdMaXN0ZW5lciwgZXJyIDo9IG5ldC5MaXN0ZW4oInRjcCIsIERlYnVnQWRkcikKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5Mb2coInRyYW5zcG9ydCIsICJkZWJ1Zy9IVFRQIiwgImR1cmluZyIsICJMaXN0ZW4iLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoMSkKCX0KCXJldHVybiBkZWJ1Z0xpc3RlbmVyCn0KCg==\"") packr.PackJSONBytes("./templates", "domain_errors.tpl", "\"cGFja2FnZSBkb21haW4KCmltcG9ydCAiZXJyb3JzIgoKLy8gRG9tYWluIGVycm9ycwovLyBUaGVzZSBjYW4gdGhlbiBiZSByZW1hcHBlZCB0byB0cmFuc3BvcnQtc3BlY2lmaWMgZXJyb3JzIGluIHRoZSB0cmFuc3BvcnQgbGF5ZXIgKGdSUEMsIEhUVFAsIEFNUVAgLi4uKQp2YXIgKAogICAgRXJyTm90SW1wbGVtZW50ZWQgPSBlcnJvcnMuTmV3KCJlbmRwb2ludCBub3QgaW1wbGVtZW50ZWQiKQopCg==\"") packr.PackJSONBytes("./templates", "endpoint_set.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgZW5kcG9pbnQKCmltcG9ydCAoCiAgICAiZ2l0aHViLmNvbS9nby1raXQva2l0L2VuZHBvaW50IgoKICAgICJnaXRodWIuY29tL2dvLWdvZGluL21pZGRsZXdhcmUiCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCikKCnR5cGUgU2V0IHN0cnVjdCB7CiAgICB7eyByYW5nZSAuU2VydmljZS5NZXRob2RzIH19CiAgICAgICAge3sgLk5hbWUgfX1FbmRwb2ludCBlbmRwb2ludC5FbmRwb2ludAogICAgIHt7LSBlbmQgfX0KfQoKZnVuYyBFbmRwb2ludHMoc2VydmljZSBzZXJ2aWNlLnt7IHRpdGxlIC5TZXJ2aWNlLk5hbWUgfX0sIGxvZ2dlciBsb2cuTG9nZ2VyKSBTZXQgewogICAge3sgcmFuZ2UgLlNlcnZpY2UuTWV0aG9kcyB9fQogICAgdmFyIHt7IHVudGl0bGUgLk5hbWUgfX0gZW5kcG9pbnQuRW5kcG9pbnQKICAgIHsKICAgICAgICB7eyB1bnRpdGxlIC5OYW1lIH19ID0ge3sgLk5hbWUgfX1FbmRwb2ludChzZXJ2aWNlKQogICAgICAgIHt7IHVudGl0bGUgLk5hbWUgfX0gPSBtaWRkbGV3YXJlLkluc3RydW1lbnRHUlBDKCJ7eyAuTmFtZSB9fSIpKHt7IHVudGl0bGUgLk5hbWUgfX0pCiAgICAgICAge3sgdW50aXRsZSAuTmFtZSB9fSA9IG1pZGRsZXdhcmUuTG9nZ2luZyhsb2dnZXIsICJ7eyAuTmFtZSB9fSIpKHt7IHVudGl0bGUgLk5hbWUgfX0pCiAgICAgICAge3sgdW50aXRsZSAuTmFtZSB9fSA9IG1pZGRsZXdhcmUuUmVxdWVzdElEKCkoe3sgdW50aXRsZSAuTmFtZSB9fSkKICAgIH0KICAgIHt7LSBlbmQgfX0KCiAgICByZXR1cm4gU2V0ewogICAgICAgIHt7LSByYW5nZSAuU2VydmljZS5NZXRob2RzIH19CiAgICAgICAgICAgIHt7IC5OYW1lIH19RW5kcG9pbnQ6IHt7IHVudGl0bGUgLk5hbWV9fSwKICAgICAgICB7ey0gZW5kIH19CiAgICB9Cn0KCg==\"") @@ -27,6 +27,7 @@ func init() { packr.PackJSONBytes("./templates", "middleware.tpl", "\"cGFja2FnZSBtaWRkbGV3YXJlCgppbXBvcnQgKAogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgopCgp0eXBlIE1pZGRsZXdhcmUgZnVuYyhzZXJ2aWNlIHNlcnZpY2Uue3sgdGl0bGUgLlNlcnZpY2UuTmFtZSB9fSkgc2VydmljZS57eyB0aXRsZSAuU2VydmljZS5OYW1lIH19Cg==\"") packr.PackJSONBytes("./templates", "middleware_logging.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgbWlkZGxld2FyZQoKaW1wb3J0ICgKICAgICJjb250ZXh0IgogICAgInRpbWUiCgogICAgImdpdGh1Yi5jb20vZ28ta2l0L2tpdC9sb2ciCglncnBjX21ldGFkYXRhICJnaXRodWIuY29tL2dvLWdvZGluL2dycGMtbWV0YWRhdGEiCgogICAgc2VydmljZSAie3sgLlNlcnZpY2UuSW1wb3J0UGF0aCB9fSIKKQoKdHlwZSBsb2dnaW5nTWlkZGxld2FyZSBzdHJ1Y3QgewogICAgbG9nZ2VyIGxvZy5Mb2dnZXIKICAgIG5leHQgc2VydmljZS57eyAuU2VydmljZS5OYW1lIH19Cn0KCmZ1bmMgTmV3TG9nZ2luZ01pZGRsZXdhcmUobG9nZ2VyIGxvZy5Mb2dnZXIpIE1pZGRsZXdhcmUgewogICAgcmV0dXJuIGZ1bmMobmV4dCBzZXJ2aWNlLnt7IC5TZXJ2aWNlLk5hbWUgfX0pIHNlcnZpY2Uue3sgLlNlcnZpY2UuTmFtZSB9fSB7CiAgICAgICAgcmV0dXJuICZsb2dnaW5nTWlkZGxld2FyZXtsb2dnZXIsIG5leHR9CiAgICB9Cn0KCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0KZnVuYyAobCBsb2dnaW5nTWlkZGxld2FyZSkge3sgLk5hbWUgfX0oe3sgLlBhcmFtTGlzdCB9fSkgKHt7IC5SZXR1cm5MaXN0IH19KSB7Cn0Ke3stIGVuZCB9fQ==\"") packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/publish_encode.tpl", "\"e3stIGRlZmluZSAiYW1xcF9wdWJsaXNoX2VuY29kZSIgfX0KLy8ge3sgLk5hbWUgfX1FbmNvZGVyIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBwdWJsaXNoaW5nIGFuIGV2ZW50IHRvICd7eyAuUHVibGlzaGluZy5Ub3BpYyB9fScgYW5kIGVuY29kZXMKLy8gdGhlIERBTyB0byBwcm90b2J1Zi4KZnVuYyB7eyAuTmFtZSB9fUVuY29kZXIoZXZlbnQgaW50ZXJmYWNle30pICgqcGIue3sgLlB1Ymxpc2hpbmcuUHJvdG9idWZNZXNzYWdlIH19LCBlcnJvcikgewp2YXIgZW5jb2RlZCBwYi57eyAuUHVibGlzaGluZy5Qcm90b2J1Zk1lc3NhZ2UgfX0KCi8vIFRPRE86IG1hcCB0byBwcm90b2J1ZgoKcmV0dXJuICZlbmNvZGVkLCBuaWwKfQp7ey0gZW5kIH19Cg==\"") + packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl", "\"e3stIGRlZmluZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2Rlcl9pbnRlcmZhY2UiIH19Cnt7LSBlbmQgfX0K\"") packr.PackJSONBytes("./templates", "partials/endpoint.tpl", "\"e3stIGRlZmluZSAiZW5kcG9pbnQiIH19Ci8vIHt7IC5OYW1lIH19RW5kcG9pbnQgcHJvdmlkZXMgc2VydmljZS57eyAuTmFtZSB9fSgpIGFzIGdlbmVyYWwgZW5kcG9pbnQKLy8gd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCBhcmJpdHJhcnkgdHJhbnNwb3J0IGxheWVycy4KZnVuYyB7eyAuTmFtZSB9fUVuZHBvaW50KHNlcnZpY2Ugc2VydmljZS57eyB0aXRsZSAuU2VydmljZU5hbWUgfX0pIGVuZHBvaW50LkVuZHBvaW50IHsKICAgIHJldHVybiBmdW5jIChjdHggY29udGV4dC5Db250ZXh0LCByZXF1ZXN0IGludGVyZmFjZXt9KSAoaW50ZXJmYWNle30sIGVycm9yKSB7CiAgICAgICAgcmVxIDo9IHJlcXVlc3QuKHt7IC5SZXF1ZXN0TmFtZSB9fSkKICAgICAgICBfID0gcmVxIC8vIGJ5cGFzcyAiZGVjbGFyZWQgYW5kIG5vdCB1c2VkIiBjb21waWxlciBlcnJvciBpZiB0aGUgcmVxdWVzdCBpcyBlbXB0eSBhbmQgbm90IHVzZWQKICAgICAgICB7eyAuUmV0dXJuVmFyaWFibGVMaXN0IH19IDo9IHNlcnZpY2Uue3sgLk5hbWUgfX0oCiAgICAgICAgICAgIHt7LSByYW5nZSAuUGFyYW1zIH19CiAgICAgICAgICAgICAgICB7ey0gaWYgZXEgLk5hbWUgImN0eCIgfX0KICAgICAgICAgICAgICAgICAgICB7ey0gLk5hbWUgfX0sCiAgICAgICAgICAgICAgICB7ey0gZWxzZSAtfX0KICAgICAgICAgICAgICAgICAgICByZXEue3sgdGl0bGUgLk5hbWUgfX0sCiAgICAgICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIHt7LSBlbmQgfX0pCgogICAgICAgIHJldHVybiB7eyAuUmVzcG9uc2VOYW1lIH19ewogICAgICAgICAgICB7ey0gcmFuZ2UgLlJldHVybnMgfX0KICAgICAgICAgICAge3sgdGl0bGUgLk5hbWUgfX06IHt7IC5OYW1lIH19LAogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgfSwgZXJyCiAgICB9Cn0Ke3stIGVuZCB9fQo=\"") packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/request_decoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3JlcXVlc3RfZGVjb2RlciIgfX0KLy8ge3sgLlJlcXVlc3QgfX1EZWNvZGVyIG1hcHMgdGhlIHByb3RvYnVmIHJlcXVlc3Qgb2YgdGhlIGdSUEMgdHJhbnNwb3J0IGxheWVyIG9udG8gdGhlIGRvbWFpbi1sZXZlbCB7eyAuUmVxdWVzdCB9fQpmdW5jIHt7IC5SZXF1ZXN0IH19RGVjb2RlcihwYlJlcXVlc3QgKnBiLnt7IC5Qcm90b2J1ZlJlcXVlc3QgfX0pIChyZXF1ZXN0IGVuZHBvaW50Lnt7IC5SZXF1ZXN0IH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncGJSZXF1ZXN0JyB0byAncmVxdWVzdCcgYW5kIHJldHVybgogICAgcmV0dXJuIHJlcXVlc3QsIGVycgp9Cnt7IGVuZCB9fQo=\"") packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/request_encoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3JlcXVlc3RfZW5jb2RlciIgfX0KLy8ge3sgLlJlcXVlc3QgfX1FbmNvZGVyIGVuY29kZXMgdGhlIGRvbWFpbi1sZXZlbCB7eyAuUmVxdWVzdCB9fSBpbnRvIGEgcHJvdG9idWYge3sgLlByb3RvYnVmUmVxdWVzdCB9fQpmdW5jIHt7IC5SZXF1ZXN0IH19RW5jb2RlcihyZXF1ZXN0IGVuZHBvaW50Lnt7IC5SZXF1ZXN0IH19KSAocGJSZXF1ZXN0ICpwYi57eyAuUHJvdG9idWZSZXF1ZXN0IH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncmVxdWVzdCcgdG8gJ3BiUmVxdWVzdCcgYW5kIHJldHVybgogICAgcmV0dXJuIHBiUmVxdWVzdCwgZXJyCn0Ke3sgZW5kIH19\"") diff --git a/go.mod b/go.mod index 58941c6..affc956 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/Masterminds/sprig v2.18.0+incompatible github.com/VividCortex/gohistogram v1.0.0 // indirect github.com/fatih/structtag v1.0.0 // indirect - github.com/go-godin/rabbitmq v0.0.0-20190718123308-7135d018437c + github.com/go-godin/rabbitmq v0.0.0-20190718163615-1e522570d2b0 github.com/go-kit/kit v0.9.0 github.com/go-logfmt/logfmt v0.4.0 // indirect github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e // indirect diff --git a/go.sum b/go.sum index 6de0393..e4e6d6d 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= @@ -36,6 +37,8 @@ github.com/fatih/structtag v1.0.0 h1:pTHj65+u3RKWYPSGaU290FpI/dXxTaHdVwVwbcPKmEc github.com/fatih/structtag v1.0.0/go.mod h1:IKitwq45uXL/yqi5mYghiD3w9H6eTOvI9vnk8tXMphA= 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/go-godin/grpc-metadata v0.0.0-20190717081641-be8cff64989a h1:M7HE/lFQQ8zczy6/U6Rl+f+8Do0EdHBsmywWiapF4pk= +github.com/go-godin/grpc-metadata v0.0.0-20190717081641-be8cff64989a/go.mod h1:8l5js6oXPPupjhdJrmYVaJuidrUyr+Q3V75iZJAZ974= github.com/go-godin/rabbitmq v0.0.0-20190716163246-e909e622b8c7 h1:dYvuqVELcsEcrUD1S+ztnmV5uCis6uh92oFxVcDUQPM= github.com/go-godin/rabbitmq v0.0.0-20190716163246-e909e622b8c7/go.mod h1:RC4VtaodR+xZa0/+CDeM1cXCSmkxnOYKvtDntFA4lIw= github.com/go-godin/rabbitmq v0.0.0-20190717074815-2a37ca6d6428 h1:i0jRrHiKVPq9mTEXdhR5DY0B4enu1Ma3ZBxEfDEwQt8= @@ -52,6 +55,8 @@ github.com/go-godin/rabbitmq v0.0.0-20190718123150-841efeb3fbb8 h1:bP8g+EOCwfzEo github.com/go-godin/rabbitmq v0.0.0-20190718123150-841efeb3fbb8/go.mod h1:fO91iywDopq8wdK/EDvQkIXf1pmZBgEgI7Mkg+tiFVc= github.com/go-godin/rabbitmq v0.0.0-20190718123308-7135d018437c h1:WfUK35XMX0AwA+Q8yxvCRkHLvu0XAy6YyWypJL3Qsqg= github.com/go-godin/rabbitmq v0.0.0-20190718123308-7135d018437c/go.mod h1:fO91iywDopq8wdK/EDvQkIXf1pmZBgEgI7Mkg+tiFVc= +github.com/go-godin/rabbitmq v0.0.0-20190718163615-1e522570d2b0 h1:bTpzUq6qrARFMshpB9nguQNRvi18GS20/U2iIxeZ4pA= +github.com/go-godin/rabbitmq v0.0.0-20190718163615-1e522570d2b0/go.mod h1:MJrnf5cgsXgUIRmkmcA57XW7pRWlXSXRqZlS0NcdeAY= github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= @@ -91,11 +96,14 @@ github.com/gobuffalo/packr/v2 v2.4.0/go.mod h1:ra341gygw9/61nSjAbfwcwh8IrYL4WmR4 github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754 h1:tpom+2CJmpzAWj5/VEHync2rJGi+epHNIeRSWjzGA+4= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/lint v0.0.0-20181026193005-c67002cb31c3 h1:I4BOK3PBMjhWfQM2zPJKK7lOBGsrsvOB7kBELP33hiE= github.com/golang/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= 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/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf h1:7+FW5aGwISbqUtkfmIpZJGRgNFg2ioYPvFaUxdqpDsg= github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= @@ -218,8 +226,11 @@ golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf h1:pZmAoqqjjxp5rjcjFhHcvD golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3 h1:x/bBzNauLQAlE3fLku/xy92Y8QwKX5HZymrMz2IiKFc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/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-20190620200207-3b0461eec859/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/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= @@ -238,11 +249,18 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w 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/tools v0.0.0-20181122213734-04b5d21e00f1/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190404132500-923d25813098 h1:MtqjsZmyGRgMmLUgxnmMJ6RYdvd2ib8ipiayHhqSxs4= golang.org/x/tools v0.0.0-20190404132500-923d25813098/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190613204242-ed0dc450797f h1:+zypR5600WBcnJgA2nzZAsBlM8cArEGa8dhhiNE4u3w= golang.org/x/tools v0.0.0-20190613204242-ed0dc450797f/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190711191110-9a621aea19f8/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.22.0 h1:J0UbZOIrCAl+fpTOf8YLs4dJo8L/owV4LYVtAXQoPkw= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20180810215634-df19058c872c h1:vTxShRUnK60yd8DZU+f95p1zSLj814+5CuEh7NjF2/Y= gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20180810215634-df19058c872c/go.mod h1:3HH7i1SgMqlzxCcBmUHW657sD4Kvv9sC3HpL3YukzwA= @@ -254,3 +272,4 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/internal/bundle/publish.go b/internal/bundle/publish.go index 077fd15..cb4b887 100644 --- a/internal/bundle/publish.go +++ b/internal/bundle/publish.go @@ -20,6 +20,7 @@ type publisher struct { Publishing rabbitmq.Publishing } + func InitializePublisher() (*publisher, error) { pub := rabbitmq.Publishing{} protoMessage, err := promptPublisherValues(&pub) diff --git a/internal/bundle/subscribe.go b/internal/bundle/subscribe.go index 1e813d3..3c484bc 100644 --- a/internal/bundle/subscribe.go +++ b/internal/bundle/subscribe.go @@ -14,39 +14,46 @@ import ( const SubscriberKey = "transport.amqp.subscriber" +type SubscriberConfiguration struct { + RabbitMQ rabbitmq.Subscription + HandlerName string `json:"handler_name" mapstructure:"handler_name"` + Protobuf struct { + GoModule string `json:"go_module" mapstructure:"go_module"` + MessageName string `json:"message_name" mapstructure:"message_name"` + } +} + type subscriber struct { - Subscription rabbitmq.Subscription - HandlerName string `json:"handler_name"` + Configuration SubscriberConfiguration } func InitializeSubscriber() (*subscriber, error) { - sub := rabbitmq.Subscription{} - err := promptSubscriberValues(&sub) + cfg := SubscriberConfiguration{} + err := promptSubscriberValues(&cfg) if err != nil { return nil, err } - subscriberKey := strings.Replace(sub.Topic, ".", "_", -1) + subscriberKey := strings.Replace(cfg.RabbitMQ.Topic, ".", "_", -1) subscriberKey = strings.ToLower(subscriberKey) - // defaults - sub.AutoAck = false - sub.Queue.Durable = true - sub.Queue.NoWait = false - sub.Queue.Exclusive = false - sub.Queue.AutoDelete = false + cfg.HandlerName = strcase.ToCamel(subscriberKey) + cfg.RabbitMQ.AutoAck = false + cfg.RabbitMQ.Queue.Durable = true + cfg.RabbitMQ.Queue.NoWait = false + cfg.RabbitMQ.Queue.Exclusive = false + cfg.RabbitMQ.Queue.AutoDelete = false confSub := config.GetStringMap(SubscriberKey) if _, ok := confSub[subscriberKey]; ok == true { return nil, fmt.Errorf("subscriber '%s' is already registered", subscriberKey) } - confSub[subscriberKey] = sub + confSub[subscriberKey] = cfg config.Set(SubscriberKey, confSub) godin.SaveConfiguration() return &subscriber{ - Subscription: sub, - HandlerName: subscriberKey, + Configuration: cfg, }, nil } @@ -68,7 +75,7 @@ func SubscriberFileName(topic string) string { return fmt.Sprintf("%s.go", name) } -func promptSubscriberValues(sub *rabbitmq.Subscription) (err error) { +func promptSubscriberValues(cfg *SubscriberConfiguration) (err error) { // Topic p := prompt.NewPrompt( "AMQP subscription Topic", @@ -79,7 +86,7 @@ func promptSubscriberValues(sub *rabbitmq.Subscription) (err error) { if err != nil { return err } - sub.Topic = topic + cfg.RabbitMQ.Topic = topic // Exchange p = prompt.NewPrompt( @@ -91,7 +98,7 @@ func promptSubscriberValues(sub *rabbitmq.Subscription) (err error) { if err != nil { return err } - sub.Exchange = exchange + cfg.RabbitMQ.Exchange = exchange // Queue p = prompt.NewPrompt( @@ -103,7 +110,31 @@ func promptSubscriberValues(sub *rabbitmq.Subscription) (err error) { if err != nil { return err } - sub.Queue.Name = queue + cfg.RabbitMQ.Queue.Name = queue + + // Protobuf module + p = prompt.NewPrompt( + "Import of the target protobuf", + "github.com/user/some-other-service-protobuf", + prompt.Validate(), + ) + protoModule, err := p.Run() + if err != nil { + return err + } + cfg.Protobuf.GoModule = protoModule + + // Protobuf message + p = prompt.NewPrompt( + "Name of the protobuf message of the subscribed event", + "AnotherServiceMessage", + prompt.Validate(), + ) + protoMessage, err := p.Run() + if err != nil { + return err + } + cfg.Protobuf.MessageName = protoMessage return nil } diff --git a/internal/generate/amqp_encode_decode.go b/internal/generate/amqp_encode_decode.go index 8107634..1b555c7 100644 --- a/internal/generate/amqp_encode_decode.go +++ b/internal/generate/amqp_encode_decode.go @@ -48,11 +48,17 @@ func (s *AmqpEncodeDecode) Update() error { func (s *AmqpEncodeDecode) GenerateMissing() error { var publishers []string + var subscribers []string + for _, pub := range s.opts.Context.Service.Publisher { publishers = append(publishers, pub.Name) } - implementation := parse.NewAmqpEncodeDecodeParser(s.opts.TargetFile, publishers) + for _, sub := range s.opts.Context.Service.Subscriber { + subscribers = append(subscribers, sub.Handler) + } + + implementation := parse.NewAmqpEncodeDecodeParser(s.opts.TargetFile, publishers, subscribers) if err := implementation.Parse(); err != nil { return errors.Wrap(err, "Parse") } diff --git a/internal/parse/amqp_encode_decode.go b/internal/parse/amqp_encode_decode.go index 3c9f830..6d9b9dd 100644 --- a/internal/parse/amqp_encode_decode.go +++ b/internal/parse/amqp_encode_decode.go @@ -9,17 +9,19 @@ import ( type amqpEncodeDecodeParser struct { baseParser publisherNames []string + subscriberNames []string ImplementedFunctions []string MissingFunctions []string formatStrings []string } -func NewAmqpEncodeDecodeParser(path string, publisherNames []string) *amqpEncodeDecodeParser { +func NewAmqpEncodeDecodeParser(path string, publisherNames []string, subscriberNames []string) *amqpEncodeDecodeParser { return &amqpEncodeDecodeParser{ baseParser: baseParser{ Path: path, }, - publisherNames: publisherNames, + publisherNames: publisherNames, + subscriberNames: subscriberNames, } } diff --git a/internal/template/context.go b/internal/template/context.go index ca43f9c..b6b1475 100644 --- a/internal/template/context.go +++ b/internal/template/context.go @@ -35,12 +35,16 @@ func NewContextFromConfig() Context { sub := config.GetStringMap(bundle.SubscriberKey) if len(sub) > 0 { for x := range sub { - s := &rabbitmq.Subscription{} - mapstructure.Decode(sub[x], s) - subscribers = append(subscribers, Subscriber{ - Subscription: *s, - Handler: bundle.SubscriberHandlerName(s.Topic), - }) + cfg := &bundle.SubscriberConfiguration{} + mapstructure.Decode(sub[x], cfg) + + sub := Subscriber{} + sub.Subscription = cfg.RabbitMQ + sub.Handler = cfg.HandlerName + sub.Protobuf.Import = cfg.Protobuf.GoModule + sub.Protobuf.Message = cfg.Protobuf.MessageName + + subscribers = append(subscribers, sub) } } @@ -174,6 +178,10 @@ type Docker struct { type Subscriber struct { Handler string Subscription rabbitmq.Subscription + Protobuf struct { + Import string + Message string + } } type Publisher struct { diff --git a/internal/template/partial.go b/internal/template/partial.go index ba3b469..aa3f44a 100644 --- a/internal/template/partial.go +++ b/internal/template/partial.go @@ -12,20 +12,21 @@ import ( ) var PartialTemplates = map[string]string{ - "service_method": "partials/service_method.tpl", - "logging_method": "partials/logging_method.tpl", - "request": "partials/request.tpl", - "endpoint": "partials/endpoint.tpl", - "response": "partials/response.tpl", - "grpc_encode_request": "partials/grpc/request_response/encode_request.tpl", - "grpc_encode_response": "partials/grpc/request_response/encode_response.tpl", - "grpc_decode_request": "partials/grpc/request_response/decode_request.tpl", - "grpc_decode_response": "partials/grpc/request_response/decode_response.tpl", - "grpc_request_decoder": "partials/grpc/encode_decode/request_decoder.tpl", - "grpc_request_encoder": "partials/grpc/encode_decode/request_encoder.tpl", - "grpc_response_decoder": "partials/grpc/encode_decode/response_decoder.tpl", - "grpc_response_encoder": "partials/grpc/encode_decode/response_encoder.tpl", - "amqp_publish_encode": "partials/amqp/encode_decode/publish_encode.tpl", + "service_method": "partials/service_method.tpl", + "logging_method": "partials/logging_method.tpl", + "request": "partials/request.tpl", + "endpoint": "partials/endpoint.tpl", + "response": "partials/response.tpl", + "grpc_encode_request": "partials/grpc/request_response/encode_request.tpl", + "grpc_encode_response": "partials/grpc/request_response/encode_response.tpl", + "grpc_decode_request": "partials/grpc/request_response/decode_request.tpl", + "grpc_decode_response": "partials/grpc/request_response/decode_response.tpl", + "grpc_request_decoder": "partials/grpc/encode_decode/request_decoder.tpl", + "grpc_request_encoder": "partials/grpc/encode_decode/request_encoder.tpl", + "grpc_response_decoder": "partials/grpc/encode_decode/response_decoder.tpl", + "grpc_response_encoder": "partials/grpc/encode_decode/response_encoder.tpl", + "amqp_publish_encode": "partials/amqp/encode_decode/publish_encode.tpl", + "amqp_subscribe_decoder_interfaces": "partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl", } type Partial struct { diff --git a/templates/amqp_encode_decode.tpl b/templates/amqp_encode_decode.tpl index 3a737ae..a2eb123 100644 --- a/templates/amqp_encode_decode.tpl +++ b/templates/amqp_encode_decode.tpl @@ -1,12 +1,17 @@ package amqp import ( + "github.com/go-godin/rabbitmq" pb "{{ .Protobuf.Package }}" ) +{{- if gt (len .Service.Subscriber) 0 }} +type SubcriptionDecoder func(delivery *rabbitmq.Delivery) (decoded interface{}, err error) +{{- end }} {{- if gt (len .Service.Publisher) 0 }} {{- range .Service.Publisher }} {{- template "amqp_publish_encode" . }} {{- end }} {{- end }} + diff --git a/templates/amqp_subscriber_handler.tpl b/templates/amqp_subscriber_handler.tpl index ce3c7dc..01eb129 100644 --- a/templates/amqp_subscriber_handler.tpl +++ b/templates/amqp_subscriber_handler.tpl @@ -7,6 +7,9 @@ import ( grpc_metadata "github.com/go-godin/grpc-metadata" "{{ .Service.Module }}/internal/service" + {{- range .Service.Subscriber }} + {{ untitle .Handler }}Proto "{{ .Protobuf.Import }}" + {{- end }} ) {{- $serviceName := title .Service.Name -}} @@ -17,11 +20,20 @@ subscriber only, so we can safely assume that there is only one element in the s */}} {{ range .Service.Subscriber }} // {{ .Handler }} is responsible of handling all incoming AMQP messages with routing key '{{ .Subscription.Topic }}' -func {{ .Handler }}(logger log.Logger, usecase service.{{ title $serviceName }}) rabbitmq.SubscriptionHandler { +func {{ .Handler }}Subscriber(logger log.Logger, usecase service.{{ title $serviceName }}, decoder rabbitmq.SubscriberDecoder) rabbitmq.SubscriptionHandler { return func(ctx context.Context, delivery *rabbitmq.Delivery) { // the requestId is injected into the context and should be attached on every log logger = logger.With(string(grpc_metadata.RequestID), ctx.Value(string(grpc_metadata.RequestID))) + event, err := decoder(delivery) + event = event.({{ untitle .Handler }}Proto.{{ .Protobuf.Message }}) + if err != nil { + logger.Error("failed to decode '{{ .Subscription.Topic }}' event", "err", err) + delivery.NackDelivery(false, false, "{{ .Subscription.Topic }}") + delivery.IncrementTransportErrorCounter("{{ .Subscription.Topic }}") + return + } + // TODO: Handle {{ .Subscription.Topic }} subscription /* If you want to NACK the delivery, use `delivery.NackDelivery()` instead of Nack(). diff --git a/templates/amqp_subscriber_init.tpl b/templates/amqp_subscriber_init.tpl index ea20b4b..eed3c2c 100644 --- a/templates/amqp_subscriber_init.tpl +++ b/templates/amqp_subscriber_init.tpl @@ -51,7 +51,7 @@ func Subscriptions(conn *rabbitmq.RabbitMQ) SubscriberSet { // The RequestID middlware will extract the requestId from the delivery header or generate a new one. The requestId is // then mad available through the context. func (ss SubscriberSet) {{ .Handler }}(logger log.Logger, usecase service.{{ $serviceName }}) error { - handler := subscriber.{{ .Handler }}(logger, usecase) + handler := subscriber.{{ .Handler }}Subscriber(logger, usecase) handler = middleware.Logging(logger, "{{ .Subscription.Topic }}", handler) handler = middleware.PrometheusInstrumentation("{{ .Subscription.Topic }}", handler) handler = middleware.RequestID(handler) diff --git a/templates/partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl b/templates/partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl new file mode 100644 index 0000000..e80311a --- /dev/null +++ b/templates/partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl @@ -0,0 +1,2 @@ +{{- define "amqp_subscribe_decoder_interface" }} +{{- end }}