From d120721f7491d94ba204aef45b3dd27ef1e9bec2 Mon Sep 17 00:00:00 2001 From: Piwriw Date: Fri, 10 Mar 2023 01:37:02 +0800 Subject: [PATCH] Course Certification Task demo of rule Signed-off-by: Piwriw --- rule-demo/README.md | 79 +++++++++++ rule-demo/crds/rule-eventbus-to-rest.yaml | 11 ++ rule-demo/crds/rule-rest-to-servicebus.yaml | 11 ++ rule-demo/crds/ruleEndpoint-eventbus.yaml | 9 ++ rule-demo/crds/ruleEndpoint-rest.yaml | 9 ++ rule-demo/crds/ruleEndpoint-servicebus.yaml | 9 ++ rule-demo/images/eventbus-to-rest-success.png | Bin 0 -> 25100 bytes .../images/rest-to-servicebus-success.png | Bin 0 -> 22560 bytes .../web_for_eventbus_to_rest_rule/go.mod | 31 +++++ .../web_for_eventbus_to_rest_rule/go.sum | 124 ++++++++++++++++++ .../web_for_eventbus_to_rest_rule/main.go | 16 +++ .../go.mod | 31 +++++ .../main.go | 15 +++ 13 files changed, 345 insertions(+) create mode 100644 rule-demo/README.md create mode 100644 rule-demo/crds/rule-eventbus-to-rest.yaml create mode 100644 rule-demo/crds/rule-rest-to-servicebus.yaml create mode 100644 rule-demo/crds/ruleEndpoint-eventbus.yaml create mode 100644 rule-demo/crds/ruleEndpoint-rest.yaml create mode 100644 rule-demo/crds/ruleEndpoint-servicebus.yaml create mode 100644 rule-demo/images/eventbus-to-rest-success.png create mode 100644 rule-demo/images/rest-to-servicebus-success.png create mode 100644 rule-demo/web_for_eventbus_to_rest_rule/go.mod create mode 100644 rule-demo/web_for_eventbus_to_rest_rule/go.sum create mode 100644 rule-demo/web_for_eventbus_to_rest_rule/main.go create mode 100644 rule-demo/web_for_rest_to_servicebus_servicebus/go.mod create mode 100644 rule-demo/web_for_rest_to_servicebus_servicebus/main.go diff --git a/rule-demo/README.md b/rule-demo/README.md new file mode 100644 index 00000000..df78f1a2 --- /dev/null +++ b/rule-demo/README.md @@ -0,0 +1,79 @@ +# Kubeedge-Rule + +## Environment prepare + +- KubeEdge、k8s 、node、cloud and so on +- In cloud and edge,you should prepare for go version = 1.17 and open Go Modules maybe also goproxy +- In edge,you should open `servicebus` and `eventbus`,check with `/etc/kubeedge/config/edgecore.yaml` + +## eventbus->rest + +1. prepare for ruleendpoint + + ```sh + kubectl apply -f ruleEndpoint-eventbus.yaml + kubectl apply -f ruleEndpoint-rest.yaml + ``` + +2. prepare for rule + - You should change yaml of `node_name` and targetResource of `resource`.`node_name` is your edge name,`resource` please use your cloud ip. + + ```sh + vi rule-eventbus-to-rest.yaml + ``` + - apply for rule yaml + + ```sh + kubectl apply -f rule-eventbus-to-rest.yaml + ``` + +3. prepare for app,copy `web_for_eventbus_to_rest_rule` for cloud + + ```sh + cd web_for_eventbus_to_rest_rule + go mod tidy + go run main.go + ``` + +4. send msg with mosquitto + + ```sh + mosquitto_pub -t 'default/test' -d -m '{"edgemsg":"edge send msg to cloud by eventbus"}' + ``` + +5. Now, you can get message in cloud , just like this + + +## rest->servicebus + +1. prepare for ruleendpoint + + ```sh + kubectl apply -f ruleEndpoint-rest.yaml + kubectl apply -f ruleEndpoint-servicebus.yaml + ``` + +2. prepare for rule + + ```sh + kubectl apply -f rule-rest-to-servicebus.yaml + ``` + +3. prepare app in egde. copy `web_for_rest_to_servicebus_servicebus` to edge + + ```sh + cd web_for_rest_to_servicebus_servicebus + go mod tidy + go run main.go + ``` + +4. In cloud, send message to test , you should change `edge-02` which should be your node_name + + ```sh + curl -H "Content-type: application/json" -X POST -d '{"msg":"cloud send"}' http://127.0.0.1:9443/edge-02/default/rest + ``` + +5. Now , you can get message in edge , just like this + + + diff --git a/rule-demo/crds/rule-eventbus-to-rest.yaml b/rule-demo/crds/rule-eventbus-to-rest.yaml new file mode 100644 index 00000000..1b94e00b --- /dev/null +++ b/rule-demo/crds/rule-eventbus-to-rest.yaml @@ -0,0 +1,11 @@ +apiVersion: rules.kubeedge.io/v1 +kind: Rule +metadata: + name: my-rule-eventbus-rest + labels: + description: test +spec: + source: "my-eventbus" + sourceResource: {"topic": "test","node_name": "edge-02"} + target: "my-rest" + targetResource: {"resource":"http://yourip/myevents"} diff --git a/rule-demo/crds/rule-rest-to-servicebus.yaml b/rule-demo/crds/rule-rest-to-servicebus.yaml new file mode 100644 index 00000000..b54b34ff --- /dev/null +++ b/rule-demo/crds/rule-rest-to-servicebus.yaml @@ -0,0 +1,11 @@ +apiVersion: rules.kubeedge.io/v1 +kind: Rule +metadata: + name: my-rule-rest-servicebus + labels: + description: test +spec: + source: "my-rest" + sourceResource: { "path": "/rest" } + target: "my-servicebus" + targetResource: { "path": "/servicebus" } diff --git a/rule-demo/crds/ruleEndpoint-eventbus.yaml b/rule-demo/crds/ruleEndpoint-eventbus.yaml new file mode 100644 index 00000000..0732a47e --- /dev/null +++ b/rule-demo/crds/ruleEndpoint-eventbus.yaml @@ -0,0 +1,9 @@ +apiVersion: rules.kubeedge.io/v1 +kind: RuleEndpoint +metadata: + name: my-eventbus + labels: + description: test +spec: + ruleEndpointType: "eventbus" + properties: {} diff --git a/rule-demo/crds/ruleEndpoint-rest.yaml b/rule-demo/crds/ruleEndpoint-rest.yaml new file mode 100644 index 00000000..65cca6cd --- /dev/null +++ b/rule-demo/crds/ruleEndpoint-rest.yaml @@ -0,0 +1,9 @@ +apiVersion: rules.kubeedge.io/v1 +kind: RuleEndpoint +metadata: + name: my-rest + labels: + description: test +spec: + ruleEndpointType: "rest" + properties: {} diff --git a/rule-demo/crds/ruleEndpoint-servicebus.yaml b/rule-demo/crds/ruleEndpoint-servicebus.yaml new file mode 100644 index 00000000..58b6d5f7 --- /dev/null +++ b/rule-demo/crds/ruleEndpoint-servicebus.yaml @@ -0,0 +1,9 @@ +apiVersion: rules.kubeedge.io/v1 +kind: RuleEndpoint +metadata: + name: my-servicebus + labels: + description: test +spec: + ruleEndpointType: "servicebus" + properties: { "service_port": "8888" } diff --git a/rule-demo/images/eventbus-to-rest-success.png b/rule-demo/images/eventbus-to-rest-success.png new file mode 100644 index 0000000000000000000000000000000000000000..827977f5017b1d7992b8bfed9eb9804dc109008a GIT binary patch literal 25100 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 Ee-NAwk^lez literal 0 HcmV?d00001 diff --git a/rule-demo/images/rest-to-servicebus-success.png b/rule-demo/images/rest-to-servicebus-success.png new file mode 100644 index 0000000000000000000000000000000000000000..b20b9da18916e659d120d886521a5ac5eb4cb93e GIT binary patch literal 22560 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

#d#qzO@nkk~#I*-@b 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 literal 0 HcmV?d00001 diff --git a/rule-demo/web_for_eventbus_to_rest_rule/go.mod b/rule-demo/web_for_eventbus_to_rest_rule/go.mod new file mode 100644 index 00000000..8ceeae9d --- /dev/null +++ b/rule-demo/web_for_eventbus_to_rest_rule/go.mod @@ -0,0 +1,31 @@ +module web_for_eventbus_to_rest_rule + +go 1.17 + +require github.com/gin-gonic/gin v1.9.0 + +require ( + github.com/bytedance/sonic v1.8.0 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.11.2 // indirect + github.com/goccy/go-json v0.10.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.9 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/net v0.7.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/rule-demo/web_for_eventbus_to_rest_rule/go.sum b/rule-demo/web_for_eventbus_to_rest_rule/go.sum new file mode 100644 index 00000000..c84fb8c5 --- /dev/null +++ b/rule-demo/web_for_eventbus_to_rest_rule/go.sum @@ -0,0 +1,124 @@ +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.8.0 h1:ea0Xadu+sHlu7x5O3gKhRpQ1IKiMrSiHttPF0ybECuA= +github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8= +github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA= +github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/rule-demo/web_for_eventbus_to_rest_rule/main.go b/rule-demo/web_for_eventbus_to_rest_rule/main.go new file mode 100644 index 00000000..54a96d36 --- /dev/null +++ b/rule-demo/web_for_eventbus_to_rest_rule/main.go @@ -0,0 +1,16 @@ +package main + +import ( + "fmt" + "github.com/gin-gonic/gin" + "io/ioutil" +) + +func main() { + r := gin.Default() + r.POST("/myevents", func(c *gin.Context) { + s, _ := ioutil.ReadAll(c.Request.Body) + fmt.Printf("edge say '%s' ", s) + }) + r.Run() +} diff --git a/rule-demo/web_for_rest_to_servicebus_servicebus/go.mod b/rule-demo/web_for_rest_to_servicebus_servicebus/go.mod new file mode 100644 index 00000000..bfec73b0 --- /dev/null +++ b/rule-demo/web_for_rest_to_servicebus_servicebus/go.mod @@ -0,0 +1,31 @@ +module web_for_rest_to_servicebus_servicebus + +go 1.17 + +require github.com/gin-gonic/gin v1.9.0 + +require ( + github.com/bytedance/sonic v1.8.0 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.11.2 // indirect + github.com/goccy/go-json v0.10.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.9 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/net v0.7.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/rule-demo/web_for_rest_to_servicebus_servicebus/main.go b/rule-demo/web_for_rest_to_servicebus_servicebus/main.go new file mode 100644 index 00000000..a76bc54a --- /dev/null +++ b/rule-demo/web_for_rest_to_servicebus_servicebus/main.go @@ -0,0 +1,15 @@ +package main + +import ( + "github.com/gin-gonic/gin" + "net/http" +) + +func main() { + r := gin.Default() + r.POST("/servicebus", func(c *gin.Context) { + s, _ := ioutil.ReadAll(c.Request.Body) + fmt.Printf("edge say '%s' ", s) + }) + r.Run(":8888") +}