From 4c9eeda25a9212f6021d015a077a6c82bf1727e0 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 11:41:40 -0700 Subject: [PATCH 01/57] Initial commit for ping trigger --- trigger/ping/examples/ping/README.md | 27 ++++++ trigger/ping/examples/ping/flogo.json | 21 +++++ trigger/ping/metadata.go | 12 +++ trigger/ping/trigger.go | 116 ++++++++++++++++++++++++++ trigger/ping/trigger.json | 35 ++++++++ 5 files changed, 211 insertions(+) create mode 100644 trigger/ping/examples/ping/README.md create mode 100644 trigger/ping/examples/ping/flogo.json create mode 100644 trigger/ping/metadata.go create mode 100644 trigger/ping/trigger.go create mode 100644 trigger/ping/trigger.json diff --git a/trigger/ping/examples/ping/README.md b/trigger/ping/examples/ping/README.md new file mode 100644 index 00000000..6be103df --- /dev/null +++ b/trigger/ping/examples/ping/README.md @@ -0,0 +1,27 @@ +# Flogo Ping Example + +## Install + +To install run the following commands: +``` +flogo create -f flogo.json +cd Ping +flogo build +``` + +## Testing + +Run: +``` +bin/Ping +``` + +Then open another terminal and run: +``` +curl http://localhost:9096/ping/details +``` + +You should then see something like: +``` +{"Version":"1.1","Appversion":"","Appdescription":""} +``` diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json new file mode 100644 index 00000000..a7d774b4 --- /dev/null +++ b/trigger/ping/examples/ping/flogo.json @@ -0,0 +1,21 @@ +{ + "name": "Ping", + "type": "flogo:app", + "version": "1.0.0", + "description": "This is a simple ping example.", + "triggers": [ + { + "name": "ping", + "id": "ping", + "ref": "https://github.com/AkshayGadikar/contrib/tree/master/trigger/ping", + "description": "Ping Example", + "settings": { + "port": 9096, + "version": "1.1" + }, + "handlers": [] + } + ], + "actions": [], + "resources": [] +} diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go new file mode 100644 index 00000000..23093e66 --- /dev/null +++ b/trigger/ping/metadata.go @@ -0,0 +1,12 @@ +package ping + + +type Settings struct { + Port int `md:"port,required"` +} + +type PingResponse struct { + Version string + Appversion string + Appdescription string +} \ No newline at end of file diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go new file mode 100644 index 00000000..d3b7b841 --- /dev/null +++ b/trigger/ping/trigger.go @@ -0,0 +1,116 @@ +package ping + +import ( + "encoding/json" + "io" + "net/http" + "github.com/project-flogo/core/data/metadata" + "github.com/project-flogo/core/support/log" + "github.com/project-flogo/core/trigger" + "github.com/AkshayGadikar/contrib/tree/master/trigger/ping" +) + +const ( + // DefaultPort is the default port for Ping service + DefaultPort = "9090" +) + +var pingTriggerMd = trigger.NewMetadata(&Settings{}) + +func init() { + trigger.Register(&Trigger{}, &Factory{}) +} + +// Trigger is the ping trigger +type Trigger struct { + metadata *trigger.Metadata + config *trigger.Config + response string + *http.Server +} + +// Factory Ping Trigger factory +type Factory struct {} + +// Metadata implements trigger.Factory.Metadata +func (*Factory) Metadata() *trigger.Metadata { + return pingTriggerMd +} + +// New implements trigger.Factory.New +func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { + s := &Settings{} + err := metadata.MapToStruct(config.Settings, s, true) + if err != nil { + return nil, err + } + + response := metadata.PingResponse{ + Version: config.GetSetting("version"), + Appversion: config.GetSetting("appversion"), + Appdescription: config.GetSetting("appdescription"), + } + + data, err := json.Marshal(response) + if err != nil { + log.Error("Ping service data formation error") + } + + port := config.GetSetting("port") + if len(port) == 0 { + port = DefaultPort + } + + mux := http.NewServeMux() + trigger := &Trigger{ + metadata: f.metadata, + config: config, + response: string(data), + Server: &http.Server{ + Addr: ":" + port, + Handler: mux, + }, + } + + mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) + mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) + return trigger,nil +} + + +// Initialize start the Ping service +func (t *Trigger) Initialize(context trigger.InitContext) error { + return nil +} + +func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Request) { + io.WriteString(w, "{\"response\":\"Ping successful\"}\n") +} + +//PingResponseHandlerDetail handles simple response +func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { + io.WriteString(w, t.response+"\n") +} + +// Start implements util.Managed.Start +func (t *Trigger) Start() error { + log.Info("Ping service starting...") + + go func() { + if err := t.ListenAndServe(); err != http.ErrServerClosed { + log.Errorf("Ping service err:", err) + } + }() + log.Info("Ping service started") + return nil +} + +// Stop implements util.Managed.Stop +func (t *Trigger) Stop() error { + if err := t.Shutdown(nil); err != nil { + log.Errorf("[mashling-ping-service] Ping service error when stopping:", err) + return err + } + log.Info("[mashling-ping-service] Ping service stopped") + return nil +} diff --git a/trigger/ping/trigger.json b/trigger/ping/trigger.json new file mode 100644 index 00000000..6a6736e0 --- /dev/null +++ b/trigger/ping/trigger.json @@ -0,0 +1,35 @@ +{ + "name": "tibco-mashling-ping", + "type": "flogo:trigger", + "ref": "https://github.com/AkshayGadikar/contrib/tree/master/trigger/ping", + "version": "0.0.1", + "title": "Ping Service", + "author": "Andrew Snodgrass ", + "description": "Simple Ping service for mashling gateway", + "settings": [ + { + "name": "port", + "type": "integer", + "required": true + }, + { + "name": "version", + "type": "string", + "required": false + }, + { + "name": "appversion", + "type": "string", + "required": false + }, + { + "name": "appdescription", + "type": "string", + "required": false + } + ], + "outputs": [], + "handler": { + "settings": [] + } +} \ No newline at end of file From 9869ed691cd1e9c621552eda256fe9835eff8fe0 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 12:14:12 -0700 Subject: [PATCH 02/57] changes ping --- trigger/ping/examples/ping/Ping/flogo.json | 21 +++++++++++++++++++++ trigger/ping/trigger.go | 2 +- trigger/ping/trigger.json | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 trigger/ping/examples/ping/Ping/flogo.json diff --git a/trigger/ping/examples/ping/Ping/flogo.json b/trigger/ping/examples/ping/Ping/flogo.json new file mode 100644 index 00000000..a7d774b4 --- /dev/null +++ b/trigger/ping/examples/ping/Ping/flogo.json @@ -0,0 +1,21 @@ +{ + "name": "Ping", + "type": "flogo:app", + "version": "1.0.0", + "description": "This is a simple ping example.", + "triggers": [ + { + "name": "ping", + "id": "ping", + "ref": "https://github.com/AkshayGadikar/contrib/tree/master/trigger/ping", + "description": "Ping Example", + "settings": { + "port": 9096, + "version": "1.1" + }, + "handlers": [] + } + ], + "actions": [], + "resources": [] +} diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index d3b7b841..99ead4d9 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -7,7 +7,7 @@ import ( "github.com/project-flogo/core/data/metadata" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" - "github.com/AkshayGadikar/contrib/tree/master/trigger/ping" + "github.com/project-flogo/contrib/tree/master/trigger/ping" ) const ( diff --git a/trigger/ping/trigger.json b/trigger/ping/trigger.json index 6a6736e0..3bc1f2bd 100644 --- a/trigger/ping/trigger.json +++ b/trigger/ping/trigger.json @@ -1,7 +1,7 @@ { "name": "tibco-mashling-ping", "type": "flogo:trigger", - "ref": "https://github.com/AkshayGadikar/contrib/tree/master/trigger/ping", + "ref": "https://github.com/project-flogo/contrib/tree/master/trigger/ping", "version": "0.0.1", "title": "Ping Service", "author": "Andrew Snodgrass ", From cbdb98c551e0481b48555e2f6512dcb5b0fefdca Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 12:18:36 -0700 Subject: [PATCH 03/57] mod.go change --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bbab21ef..bbfc8216 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/project-flogo/contrib +module github.com/AkshayGadikar/contrib require ( github.com/carlescere/scheduler v0.0.0-20170109141437-ee74d2f83d82 From 6d5a8b71c6547cdae255147fb980ad71b7a203ba Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 12:22:20 -0700 Subject: [PATCH 04/57] change --- trigger/ping/examples/ping/flogo.json | 2 +- trigger/ping/trigger.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index a7d774b4..df50ac15 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -7,7 +7,7 @@ { "name": "ping", "id": "ping", - "ref": "https://github.com/AkshayGadikar/contrib/tree/master/trigger/ping", + "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", "description": "Ping Example", "settings": { "port": 9096, diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 99ead4d9..1d107aa5 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -7,7 +7,7 @@ import ( "github.com/project-flogo/core/data/metadata" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" - "github.com/project-flogo/contrib/tree/master/trigger/ping" + "github.com/project-flogo/contrib/trigger/ping" ) const ( From f1ea66e6d045f7889722662b6399d2d174410a21 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 12:24:37 -0700 Subject: [PATCH 05/57] removed trigger.json --- trigger/ping/trigger.json | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 trigger/ping/trigger.json diff --git a/trigger/ping/trigger.json b/trigger/ping/trigger.json deleted file mode 100644 index 3bc1f2bd..00000000 --- a/trigger/ping/trigger.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "tibco-mashling-ping", - "type": "flogo:trigger", - "ref": "https://github.com/project-flogo/contrib/tree/master/trigger/ping", - "version": "0.0.1", - "title": "Ping Service", - "author": "Andrew Snodgrass ", - "description": "Simple Ping service for mashling gateway", - "settings": [ - { - "name": "port", - "type": "integer", - "required": true - }, - { - "name": "version", - "type": "string", - "required": false - }, - { - "name": "appversion", - "type": "string", - "required": false - }, - { - "name": "appdescription", - "type": "string", - "required": false - } - ], - "outputs": [], - "handler": { - "settings": [] - } -} \ No newline at end of file From 8539b354d3ad23f911601b7ef268a744158762a5 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 12:25:48 -0700 Subject: [PATCH 06/57] change-1 --- trigger/ping/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 1d107aa5..be8f8aea 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -7,7 +7,7 @@ import ( "github.com/project-flogo/core/data/metadata" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" - "github.com/project-flogo/contrib/trigger/ping" + //"github.com/project-flogo/contrib/trigger/ping" ) const ( From 15d8682274aa620006c7600d817c87994d0503ed Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 13:55:43 -0700 Subject: [PATCH 07/57] trigger.go changes to interface --- trigger/ping/trigger.go | 43 ++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index be8f8aea..a4b2c316 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -7,7 +7,6 @@ import ( "github.com/project-flogo/core/data/metadata" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" - //"github.com/project-flogo/contrib/trigger/ping" ) const ( @@ -27,10 +26,13 @@ type Trigger struct { config *trigger.Config response string *http.Server + logger log.Logger } // Factory Ping Trigger factory -type Factory struct {} +type Factory struct { + metadata *trigger.Metadata +} // Metadata implements trigger.Factory.Metadata func (*Factory) Metadata() *trigger.Metadata { @@ -44,8 +46,14 @@ func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { if err != nil { return nil, err } + return &Trigger{metadata: (*Factory).metadata, config: config}, nil +} - response := metadata.PingResponse{ + +// Initialize start the Ping service +func (t *Trigger) Initialize(context trigger.InitContext) error { + t.logger = context.Logger() + response := PingResponse{ Version: config.GetSetting("version"), Appversion: config.GetSetting("appversion"), Appdescription: config.GetSetting("appdescription"), @@ -53,7 +61,7 @@ func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { data, err := json.Marshal(response) if err != nil { - log.Error("Ping service data formation error") + t.logger.Errorf("Ping service data formation error") } port := config.GetSetting("port") @@ -62,24 +70,11 @@ func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { } mux := http.NewServeMux() - trigger := &Trigger{ - metadata: f.metadata, - config: config, - response: string(data), - Server: &http.Server{ - Addr: ":" + port, - Handler: mux, - }, - } + t.response = string(data) + t.Server = &http.Server{Addr: ":" + port, Handler: mux, } mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) - return trigger,nil -} - - -// Initialize start the Ping service -func (t *Trigger) Initialize(context trigger.InitContext) error { return nil } @@ -94,23 +89,23 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req // Start implements util.Managed.Start func (t *Trigger) Start() error { - log.Info("Ping service starting...") + t.logger.Infof("Ping service starting...") go func() { if err := t.ListenAndServe(); err != http.ErrServerClosed { - log.Errorf("Ping service err:", err) + t.logger.Errorf("Ping service err:", err) } }() - log.Info("Ping service started") + t.logger.Infof("Ping service started") return nil } // Stop implements util.Managed.Stop func (t *Trigger) Stop() error { if err := t.Shutdown(nil); err != nil { - log.Errorf("[mashling-ping-service] Ping service error when stopping:", err) + t.logger.Errorf("[mashling-ping-service] Ping service error when stopping:", err) return err } - log.Info("[mashling-ping-service] Ping service stopped") + t.logger.Infof("[mashling-ping-service] Ping service stopped") return nil } From 8673847b0bae51e659c409e81852af31efc433d4 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 14:14:11 -0700 Subject: [PATCH 08/57] changes to interface --- trigger/ping/trigger.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index a4b2c316..d20882e2 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -31,22 +31,21 @@ type Trigger struct { // Factory Ping Trigger factory type Factory struct { - metadata *trigger.Metadata } // Metadata implements trigger.Factory.Metadata -func (*Factory) Metadata() *trigger.Metadata { +func (f *Factory) Metadata() *trigger.Metadata { return pingTriggerMd } // New implements trigger.Factory.New -func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { +func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { s := &Settings{} err := metadata.MapToStruct(config.Settings, s, true) if err != nil { return nil, err } - return &Trigger{metadata: (*Factory).metadata, config: config}, nil + return &Trigger{metadata: f.Metadata(), config:config}, nil } @@ -54,9 +53,9 @@ func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { func (t *Trigger) Initialize(context trigger.InitContext) error { t.logger = context.Logger() response := PingResponse{ - Version: config.GetSetting("version"), - Appversion: config.GetSetting("appversion"), - Appdescription: config.GetSetting("appdescription"), + Version: t.config.GetSetting("version"), + Appversion: t.config.GetSetting("appversion"), + Appdescription: t.config.GetSetting("appdescription"), } data, err := json.Marshal(response) @@ -64,7 +63,7 @@ func (t *Trigger) Initialize(context trigger.InitContext) error { t.logger.Errorf("Ping service data formation error") } - port := config.GetSetting("port") + port := t.config.GetSetting("port") if len(port) == 0 { port = DefaultPort } From ca893580f96df6cb32ea2668e3d650b36bf1aa7b Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 14:29:28 -0700 Subject: [PATCH 09/57] changes to interface --- trigger/ping/trigger.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index d20882e2..fd7c4d01 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -45,6 +45,8 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { if err != nil { return nil, err } + fmt.Println("settings :", s) + fmt.Println("config :", config) return &Trigger{metadata: f.Metadata(), config:config}, nil } @@ -53,8 +55,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { func (t *Trigger) Initialize(context trigger.InitContext) error { t.logger = context.Logger() response := PingResponse{ - Version: t.config.GetSetting("version"), - Appversion: t.config.GetSetting("appversion"), + Version: "version", + Appversion: "appversion", + Appdescription: "appdescription", Appdescription: t.config.GetSetting("appdescription"), } @@ -72,8 +75,8 @@ func (t *Trigger) Initialize(context trigger.InitContext) error { t.response = string(data) t.Server = &http.Server{Addr: ":" + port, Handler: mux, } - mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) - mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) + mux.HandleFunc("/ping", t.PingResponseHandlerShort) + mux.HandleFunc("/ping/details", t.PingResponseHandlerDetail) return nil } From 33883aff99ffb902421b6f8e8ed61588ae0813fa Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 14:32:53 -0700 Subject: [PATCH 10/57] fixes - 1 --- trigger/ping/trigger.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index fd7c4d01..db9635bd 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -1,6 +1,7 @@ package ping import ( + "fmt" "encoding/json" "io" "net/http" @@ -58,7 +59,7 @@ func (t *Trigger) Initialize(context trigger.InitContext) error { Version: "version", Appversion: "appversion", Appdescription: "appdescription", - Appdescription: t.config.GetSetting("appdescription"), + //Appdescription: t.config.GetSetting("appdescription"), } data, err := json.Marshal(response) @@ -66,7 +67,7 @@ func (t *Trigger) Initialize(context trigger.InitContext) error { t.logger.Errorf("Ping service data formation error") } - port := t.config.GetSetting("port") + port := DefaultPort//t.config.GetSetting("port") if len(port) == 0 { port = DefaultPort } From 75a5e7c186c8c0392fab2239ad4d01e6447e6f6b Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 14:53:44 -0700 Subject: [PATCH 11/57] changes to metadata --- trigger/ping/examples/ping/Ping/flogo.json | 2 +- trigger/ping/metadata.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/trigger/ping/examples/ping/Ping/flogo.json b/trigger/ping/examples/ping/Ping/flogo.json index a7d774b4..df50ac15 100644 --- a/trigger/ping/examples/ping/Ping/flogo.json +++ b/trigger/ping/examples/ping/Ping/flogo.json @@ -7,7 +7,7 @@ { "name": "ping", "id": "ping", - "ref": "https://github.com/AkshayGadikar/contrib/tree/master/trigger/ping", + "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", "description": "Ping Example", "settings": { "port": 9096, diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go index 23093e66..9642e0ab 100644 --- a/trigger/ping/metadata.go +++ b/trigger/ping/metadata.go @@ -3,6 +3,7 @@ package ping type Settings struct { Port int `md:"port,required"` + Version string `md:"version"` } type PingResponse struct { From f1d73eadfbd2068fe302bd0005863d083aa0ea8b Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 15:43:30 -0700 Subject: [PATCH 12/57] flogo json update --- trigger/ping/examples/ping/flogo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index df50ac15..1967f807 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -7,7 +7,7 @@ { "name": "ping", "id": "ping", - "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", + "ref": "https://github.com/project-flogo/contrib/trigger/ping", "description": "Ping Example", "settings": { "port": 9096, @@ -18,4 +18,4 @@ ], "actions": [], "resources": [] -} +} \ No newline at end of file From 02729cbc6d65279426349d3724bdf7cc619916a5 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 22:50:35 -0700 Subject: [PATCH 13/57] update trigger code --- trigger/ping/examples/ping/Ping/flogo.json | 21 ------ trigger/ping/examples/ping/flogo.json | 2 +- trigger/ping/metadata.go | 13 ---- trigger/ping/trigger.go | 81 ++++++++++++---------- 4 files changed, 45 insertions(+), 72 deletions(-) delete mode 100644 trigger/ping/examples/ping/Ping/flogo.json delete mode 100644 trigger/ping/metadata.go diff --git a/trigger/ping/examples/ping/Ping/flogo.json b/trigger/ping/examples/ping/Ping/flogo.json deleted file mode 100644 index df50ac15..00000000 --- a/trigger/ping/examples/ping/Ping/flogo.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "Ping", - "type": "flogo:app", - "version": "1.0.0", - "description": "This is a simple ping example.", - "triggers": [ - { - "name": "ping", - "id": "ping", - "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", - "description": "Ping Example", - "settings": { - "port": 9096, - "version": "1.1" - }, - "handlers": [] - } - ], - "actions": [], - "resources": [] -} diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 1967f807..50ff0b2a 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -7,7 +7,7 @@ { "name": "ping", "id": "ping", - "ref": "https://github.com/project-flogo/contrib/trigger/ping", + "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", "description": "Ping Example", "settings": { "port": 9096, diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go deleted file mode 100644 index 9642e0ab..00000000 --- a/trigger/ping/metadata.go +++ /dev/null @@ -1,13 +0,0 @@ -package ping - - -type Settings struct { - Port int `md:"port,required"` - Version string `md:"version"` -} - -type PingResponse struct { - Version string - Appversion string - Appdescription string -} \ No newline at end of file diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index db9635bd..47571439 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -10,17 +10,30 @@ import ( "github.com/project-flogo/core/trigger" ) -const ( - // DefaultPort is the default port for Ping service - DefaultPort = "9090" -) +// DefaultPort is the default port for Ping service +const DefaultPort = "9090" + +type Settings struct { + Port int `md:"port,required"` + Version string `md:"version"` + AppVersion string `md:"appversion"` + AppDescription string `md:"appdescription"` +} -var pingTriggerMd = trigger.NewMetadata(&Settings{}) +var triggerMd = trigger.NewMetadata(&Settings{}) func init() { trigger.Register(&Trigger{}, &Factory{}) } +type Factory struct { +} + +// Metadata implements trigger.Factory.Metadata +func (*Factory) Metadata() *trigger.Metadata { + return triggerMd +} + // Trigger is the ping trigger type Trigger struct { metadata *trigger.Metadata @@ -30,54 +43,48 @@ type Trigger struct { logger log.Logger } -// Factory Ping Trigger factory -type Factory struct { -} - -// Metadata implements trigger.Factory.Metadata -func (f *Factory) Metadata() *trigger.Metadata { - return pingTriggerMd -} - // New implements trigger.Factory.New -func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { - s := &Settings{} - err := metadata.MapToStruct(config.Settings, s, true) - if err != nil { - return nil, err +func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { + type PingResponse struct { + Version string + Appversion string + Appdescription string } - fmt.Println("settings :", s) - fmt.Println("config :", config) - return &Trigger{metadata: f.Metadata(), config:config}, nil -} - -// Initialize start the Ping service -func (t *Trigger) Initialize(context trigger.InitContext) error { - t.logger = context.Logger() response := PingResponse{ - Version: "version", - Appversion: "appversion", - Appdescription: "appdescription", - //Appdescription: t.config.GetSetting("appdescription"), + Version: config.Settings.Version, + Appversion: config.Settings.AppVersion, + Appdescription: config.Settings.AppDescription, } data, err := json.Marshal(response) if err != nil { - t.logger.Errorf("Ping service data formation error") + *Trigger.logger.Errorf("Ping service data formation error") } - port := DefaultPort//t.config.GetSetting("port") + port := config.Settings.Port if len(port) == 0 { port = DefaultPort } mux := http.NewServeMux() - t.response = string(data) - t.Server = &http.Server{Addr: ":" + port, Handler: mux, } + trigger := &Trigger{ + metadata: (*Factory).Metadata(), + config: config, + response: string(data), + Server: &http.Server{ + Addr: ":" + port, + Handler: mux, + }, + } + + mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) + mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) + return trigger, nil +} - mux.HandleFunc("/ping", t.PingResponseHandlerShort) - mux.HandleFunc("/ping/details", t.PingResponseHandlerDetail) +// Init implements trigger.Init +func (t *Trigger) Initialize(ctx trigger.InitContext) error { return nil } From 773b9014c17d284995b4a2db8cf841cc2081a9f3 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 22:58:01 -0700 Subject: [PATCH 14/57] update trigger code --- trigger/ping/trigger.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 47571439..8f3ff2f0 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -1,17 +1,17 @@ package ping import ( - "fmt" + //"fmt" "encoding/json" "io" "net/http" - "github.com/project-flogo/core/data/metadata" + //"github.com/project-flogo/core/data/metadata" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" ) // DefaultPort is the default port for Ping service -const DefaultPort = "9090" +const DefaultPort = "9096" type Settings struct { Port int `md:"port,required"` @@ -44,7 +44,7 @@ type Trigger struct { } // New implements trigger.Factory.New -func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { +func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { type PingResponse struct { Version string Appversion string @@ -52,9 +52,9 @@ func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { } response := PingResponse{ - Version: config.Settings.Version, - Appversion: config.Settings.AppVersion, - Appdescription: config.Settings.AppDescription, + //Version: config.Settings.Version, + //Appversion: config.Settings.AppVersion, + //Appdescription: config.Settings.AppDescription, } data, err := json.Marshal(response) @@ -62,14 +62,14 @@ func (*Factory) New(config *trigger.Config) (trigger.Trigger, error) { *Trigger.logger.Errorf("Ping service data formation error") } - port := config.Settings.Port + port := DefaultPort //config.Settings.Port if len(port) == 0 { port = DefaultPort } mux := http.NewServeMux() trigger := &Trigger{ - metadata: (*Factory).Metadata(), + metadata: f.Metadata(), config: config, response: string(data), Server: &http.Server{ From 916bea0cbc78acdc233456c03b1ce6edcc3b6611 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 23:01:27 -0700 Subject: [PATCH 15/57] update trigger code --- trigger/ping/trigger.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 8f3ff2f0..41a2437c 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -1,7 +1,7 @@ package ping import ( - //"fmt" + "fmt" "encoding/json" "io" "net/http" @@ -59,7 +59,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { data, err := json.Marshal(response) if err != nil { - *Trigger.logger.Errorf("Ping service data formation error") + fmt.Println("Ping service data formation error") } port := DefaultPort //config.Settings.Port From b3c73f9b9d580af350c11445eeed44fc80021651 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Wed, 31 Oct 2018 23:05:43 -0700 Subject: [PATCH 16/57] change -1 : go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bbfc8216..bbab21ef 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/AkshayGadikar/contrib +module github.com/project-flogo/contrib require ( github.com/carlescere/scheduler v0.0.0-20170109141437-ee74d2f83d82 From 83696bd86d380194a25b3256f344b0985b22330a Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 09:50:04 -0700 Subject: [PATCH 17/57] change -1 : go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bbab21ef..bbfc8216 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/project-flogo/contrib +module github.com/AkshayGadikar/contrib require ( github.com/carlescere/scheduler v0.0.0-20170109141437-ee74d2f83d82 From 2256c8533c010762e48cd236efcd30508308e13c Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 09:53:45 -0700 Subject: [PATCH 18/57] change : flogo.json --- trigger/ping/examples/ping/flogo.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 50ff0b2a..3265b832 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -1,7 +1,8 @@ { "name": "Ping", - "type": "flogo:app", + "type": "flogo:trigger", "version": "1.0.0", + "title": "Ping Trigger", "description": "This is a simple ping example.", "triggers": [ { From 042ca7d621c1a690d380dc363c2c92bffcac6461 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 10:09:16 -0700 Subject: [PATCH 19/57] fixes --- trigger/ping/examples/ping/flogo.json | 4 ++-- trigger/ping/trigger.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 3265b832..b3ffde9b 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -1,5 +1,5 @@ { - "name": "Ping", + "name": "flogo-Ping", "type": "flogo:trigger", "version": "1.0.0", "title": "Ping Trigger", @@ -7,7 +7,7 @@ "triggers": [ { "name": "ping", - "id": "ping", + "id": "flogo-ping", "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", "description": "Ping Example", "settings": { diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 41a2437c..32e759e8 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -52,9 +52,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } response := PingResponse{ - //Version: config.Settings.Version, - //Appversion: config.Settings.AppVersion, - //Appdescription: config.Settings.AppDescription, + //Version: config.settings.version, + //Appversion: config.settings.appversion, + //Appdescription: config.settings.appdescription, } data, err := json.Marshal(response) @@ -62,7 +62,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := DefaultPort //config.Settings.Port + port := DefaultPort //config.settings.port if len(port) == 0 { port = DefaultPort } From f6789c564fbe936e646b09f05905d8de0a0d2e77 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 10:24:56 -0700 Subject: [PATCH 20/57] fixes --- trigger/ping/examples/ping/flogo.json | 4 ++-- trigger/ping/trigger.go | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index b3ffde9b..777d51c8 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -1,5 +1,5 @@ { - "name": "flogo-Ping", + "name": "Ping", "type": "flogo:trigger", "version": "1.0.0", "title": "Ping Trigger", @@ -8,7 +8,7 @@ { "name": "ping", "id": "flogo-ping", - "ref": "https://github.com/AkshayGadikar/contrib/trigger/ping", + "ref": "github.com/project-flogo/contrib/trigger/ping", "description": "Ping Example", "settings": { "port": 9096, diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 32e759e8..ed6de1ce 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -5,7 +5,6 @@ import ( "encoding/json" "io" "net/http" - //"github.com/project-flogo/core/data/metadata" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" ) @@ -52,9 +51,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } response := PingResponse{ - //Version: config.settings.version, - //Appversion: config.settings.appversion, - //Appdescription: config.settings.appdescription, + Version: config.settings.version, + Appversion: config.settings.appversion, + Appdescription: config.settings.appdescription, } data, err := json.Marshal(response) @@ -62,7 +61,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := DefaultPort //config.settings.port + port := config.settings.port if len(port) == 0 { port = DefaultPort } From 4fcfde3aa7c7a84d5d241545f1bf48f08e130298 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 10:27:39 -0700 Subject: [PATCH 21/57] fixes --- trigger/ping/trigger.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index ed6de1ce..ebbc91ff 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -51,9 +51,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } response := PingResponse{ - Version: config.settings.version, - Appversion: config.settings.appversion, - Appdescription: config.settings.appdescription, + Version: config.Settings.version, + Appversion: config.Settings.appversion, + Appdescription: config.Settings.appdescription, } data, err := json.Marshal(response) @@ -61,7 +61,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := config.settings.port + port := config.Settings.port if len(port) == 0 { port = DefaultPort } From 73b13a50999b38cbf0d0e5e21ad8179136df39dd Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 10:35:06 -0700 Subject: [PATCH 22/57] fixes --- trigger/ping/trigger.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index ebbc91ff..f9f6b096 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -49,11 +49,11 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { Appversion string Appdescription string } - + fmt.Println("config:", config) response := PingResponse{ - Version: config.Settings.version, - Appversion: config.Settings.appversion, - Appdescription: config.Settings.appdescription, + Version: config.Settings.Version, + Appversion: config.Settings.AppVersion, + Appdescription: config.Settings.AppDescription, } data, err := json.Marshal(response) @@ -61,7 +61,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := config.Settings.port + port := config.Settings.Port if len(port) == 0 { port = DefaultPort } From ff234395543fbce71104aa04f5310fd103d5524d Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 10:37:48 -0700 Subject: [PATCH 23/57] fixes --- trigger/ping/trigger.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index f9f6b096..54555f64 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -51,9 +51,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } fmt.Println("config:", config) response := PingResponse{ - Version: config.Settings.Version, - Appversion: config.Settings.AppVersion, - Appdescription: config.Settings.AppDescription, + Version: "version",//config.Settings.Version, + Appversion: "appversion",//config.Settings.AppVersion, + Appdescription: "appdescr",//config.Settings.AppDescription, } data, err := json.Marshal(response) @@ -61,7 +61,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := config.Settings.Port + port := DefaultPort//config.Settings.Port if len(port) == 0 { port = DefaultPort } From 429d75c0f8f50b09d0773cb0d6cb3788d2e9e357 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 10:58:34 -0700 Subject: [PATCH 24/57] fixes - port --- trigger/ping/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 54555f64..556f5477 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -10,7 +10,7 @@ import ( ) // DefaultPort is the default port for Ping service -const DefaultPort = "9096" +const DefaultPort = 9096 type Settings struct { Port int `md:"port,required"` From a21a2f0f01c46986fb521ce3f6cb376ff4151c1d Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 11:21:20 -0700 Subject: [PATCH 25/57] fixes --- trigger/ping/examples/ping/flogo.json | 2 +- trigger/ping/trigger.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 777d51c8..3cc5d849 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -1,6 +1,6 @@ { "name": "Ping", - "type": "flogo:trigger", + "type": "flogo:app", "version": "1.0.0", "title": "Ping Trigger", "description": "This is a simple ping example.", diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 556f5477..3b011a0d 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -10,7 +10,7 @@ import ( ) // DefaultPort is the default port for Ping service -const DefaultPort = 9096 +const DefaultPort = "9096" type Settings struct { Port int `md:"port,required"` @@ -76,7 +76,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { Handler: mux, }, } - + fmt.Println("trigger is :", trigger) mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) return trigger, nil From d0abeb7a710943b37fe5a9a939d7dc60684ccbad Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 11:49:17 -0700 Subject: [PATCH 26/57] fixes --- trigger/ping/trigger.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 3b011a0d..b121c436 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -76,7 +76,10 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { Handler: mux, }, } - fmt.Println("trigger is :", trigger) + fmt.Println("trigger metadata is :", trigger.metadata) + fmt.Println("trigger config is :", trigger.config) + fmt.Println("trigger response is :", trigger.response) + fmt.Println("trigger server is :", trigger.Server) mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) return trigger, nil @@ -84,6 +87,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { // Init implements trigger.Init func (t *Trigger) Initialize(ctx trigger.InitContext) error { + t.Start() return nil } From 847a6a380b9b3b13745a4d5a3c6531aefa28f825 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 12:03:10 -0700 Subject: [PATCH 27/57] fixes --- trigger/ping/examples/ping/flogo.json | 2 +- trigger/ping/trigger.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 3cc5d849..837810af 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -11,7 +11,7 @@ "ref": "github.com/project-flogo/contrib/trigger/ping", "description": "Ping Example", "settings": { - "port": 9096, + "port": "9096", "version": "1.1" }, "handlers": [] diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index b121c436..f9e94bf6 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -87,7 +87,6 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { // Init implements trigger.Init func (t *Trigger) Initialize(ctx trigger.InitContext) error { - t.Start() return nil } @@ -102,9 +101,11 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req // Start implements util.Managed.Start func (t *Trigger) Start() error { + fmt.Println("Inside trigger start") t.logger.Infof("Ping service starting...") go func() { + fmt.Println("inside go routine") if err := t.ListenAndServe(); err != http.ErrServerClosed { t.logger.Errorf("Ping service err:", err) } From 994c13bfb406a3fea408fbf29290fc284dcba439 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 12:50:02 -0700 Subject: [PATCH 28/57] fixes --- trigger/ping/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index f9e94bf6..22cd2772 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -38,7 +38,7 @@ type Trigger struct { metadata *trigger.Metadata config *trigger.Config response string - *http.Server + Server *http.Server logger log.Logger } From 66494771423d714573c35220a5bdb2c37ba59c37 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 12:54:39 -0700 Subject: [PATCH 29/57] fixes --- trigger/ping/trigger.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 22cd2772..350b829f 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -106,7 +106,7 @@ func (t *Trigger) Start() error { go func() { fmt.Println("inside go routine") - if err := t.ListenAndServe(); err != http.ErrServerClosed { + if err := t.Server.ListenAndServe(); err != http.ErrServerClosed { t.logger.Errorf("Ping service err:", err) } }() @@ -116,7 +116,7 @@ func (t *Trigger) Start() error { // Stop implements util.Managed.Stop func (t *Trigger) Stop() error { - if err := t.Shutdown(nil); err != nil { + if err := t.Server.Shutdown(nil); err != nil { t.logger.Errorf("[mashling-ping-service] Ping service error when stopping:", err) return err } From ef5e53158ff15b66ed6e5a54dfb39e5fdbb33a15 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 13:15:17 -0700 Subject: [PATCH 30/57] fixes --- trigger/ping/trigger.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 350b829f..ae772059 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -49,7 +49,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { Appversion string Appdescription string } - fmt.Println("config:", config) + fmt.Println("config:", config.Settings) response := PingResponse{ Version: "version",//config.Settings.Version, Appversion: "appversion",//config.Settings.AppVersion, @@ -67,14 +67,15 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } mux := http.NewServeMux() + server := &http.Server{ + Addr: ":" + port, + Handler: mux, + } trigger := &Trigger{ metadata: f.Metadata(), config: config, response: string(data), - Server: &http.Server{ - Addr: ":" + port, - Handler: mux, - }, + Server: server, } fmt.Println("trigger metadata is :", trigger.metadata) fmt.Println("trigger config is :", trigger.config) @@ -102,24 +103,26 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req // Start implements util.Managed.Start func (t *Trigger) Start() error { fmt.Println("Inside trigger start") - t.logger.Infof("Ping service starting...") + fmt.Println("Server:", t.Server) + + fmt.Infof("Ping service starting...") go func() { fmt.Println("inside go routine") if err := t.Server.ListenAndServe(); err != http.ErrServerClosed { - t.logger.Errorf("Ping service err:", err) + fmt.Errorf("Ping service err:", err) } }() - t.logger.Infof("Ping service started") + fmt.Infof("Ping service started") return nil } // Stop implements util.Managed.Stop func (t *Trigger) Stop() error { if err := t.Server.Shutdown(nil); err != nil { - t.logger.Errorf("[mashling-ping-service] Ping service error when stopping:", err) + fmt.Errorf("[mashling-ping-service] Ping service error when stopping:", err) return err } - t.logger.Infof("[mashling-ping-service] Ping service stopped") + fmt.Infof("[mashling-ping-service] Ping service stopped") return nil } From aa66d29ffacc2168ee86922c5079539ecab8d485 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 13:22:16 -0700 Subject: [PATCH 31/57] fixes --- trigger/ping/trigger.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index ae772059..ffac79f9 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -105,7 +105,7 @@ func (t *Trigger) Start() error { fmt.Println("Inside trigger start") fmt.Println("Server:", t.Server) - fmt.Infof("Ping service starting...") + fmt.Println("Ping service starting...") go func() { fmt.Println("inside go routine") @@ -113,7 +113,7 @@ func (t *Trigger) Start() error { fmt.Errorf("Ping service err:", err) } }() - fmt.Infof("Ping service started") + fmt.Println("Ping service started") return nil } @@ -123,6 +123,6 @@ func (t *Trigger) Stop() error { fmt.Errorf("[mashling-ping-service] Ping service error when stopping:", err) return err } - fmt.Infof("[mashling-ping-service] Ping service stopped") + fmt.Println("[mashling-ping-service] Ping service stopped") return nil } From 06cfcb37d4eccc662269ed0859b8a760f3308c49 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 14:16:50 -0700 Subject: [PATCH 32/57] ping details --- trigger/ping/trigger.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index ffac79f9..d817e1d6 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -7,6 +7,7 @@ import ( "net/http" "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" + "runtime" ) // DefaultPort is the default port for Ping service @@ -51,9 +52,10 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } fmt.Println("config:", config.Settings) response := PingResponse{ - Version: "version",//config.Settings.Version, - Appversion: "appversion",//config.Settings.AppVersion, - Appdescription: "appdescr",//config.Settings.AppDescription, + Version: config.Settings.version, + Appversion: "",//config.Settings.AppVersion, + Appdescription: "",//config.Settings.AppDescription, + "No of GoRoutines active": runtime.NumGoroutine(), } data, err := json.Marshal(response) @@ -61,7 +63,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := DefaultPort//config.Settings.Port + port := config.Settings.port if len(port) == 0 { port = DefaultPort } @@ -97,6 +99,7 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { + PrintMemUsage() io.WriteString(w, t.response+"\n") } @@ -126,3 +129,16 @@ func (t *Trigger) Stop() error { fmt.Println("[mashling-ping-service] Ping service stopped") return nil } + +func PrintMemUsage() { + var m runtime.MemStats + runtime.ReadMemStats(&m) + fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc)) + fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc)) + fmt.Printf("\tSys = %v MiB", bToMb(m.Sys)) + fmt.Printf("\tNumGC = %v\n", m.NumGC) +} + +func bToMb(b uint64) uint64 { + return b / 1024 / 1024 +} From c529630c472ab94085bb6a01d184925984577b8a Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 14:24:11 -0700 Subject: [PATCH 33/57] ping details --- trigger/ping/trigger.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index d817e1d6..921d14e3 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -52,10 +52,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } fmt.Println("config:", config.Settings) response := PingResponse{ - Version: config.Settings.version, + Version: config.Settings["version"], Appversion: "",//config.Settings.AppVersion, Appdescription: "",//config.Settings.AppDescription, - "No of GoRoutines active": runtime.NumGoroutine(), } data, err := json.Marshal(response) @@ -63,7 +62,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := config.Settings.port + port := config.Settings["port"] if len(port) == 0 { port = DefaultPort } @@ -137,8 +136,10 @@ func PrintMemUsage() { fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc)) fmt.Printf("\tSys = %v MiB", bToMb(m.Sys)) fmt.Printf("\tNumGC = %v\n", m.NumGC) + fmt.Printf("No of GoRoutines active", m.NumGoroutine()) } + func bToMb(b uint64) uint64 { return b / 1024 / 1024 } From 061719a5ff00a1832d47c4b827df70e6b725dcef Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 14:27:43 -0700 Subject: [PATCH 34/57] ping details --- trigger/ping/trigger.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 921d14e3..e2400313 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -62,7 +62,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := config.Settings["port"] + port := config.Settings["port"].(string) if len(port) == 0 { port = DefaultPort } @@ -136,7 +136,7 @@ func PrintMemUsage() { fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc)) fmt.Printf("\tSys = %v MiB", bToMb(m.Sys)) fmt.Printf("\tNumGC = %v\n", m.NumGC) - fmt.Printf("No of GoRoutines active", m.NumGoroutine()) + fmt.Printf("No of GoRoutines active", runtime.NumGoroutine()) } From d9bb1150e2c6a98989b47ef21e4858d51f88e80f Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 14:30:20 -0700 Subject: [PATCH 35/57] ping details --- trigger/ping/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index e2400313..9b5bfa0b 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -52,7 +52,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } fmt.Println("config:", config.Settings) response := PingResponse{ - Version: config.Settings["version"], + Version: config.Settings["version"].(string), Appversion: "",//config.Settings.AppVersion, Appdescription: "",//config.Settings.AppDescription, } From a49d33f90f1340e7910cf496207d3f59cb4c5b17 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 14:37:14 -0700 Subject: [PATCH 36/57] fixes -1 --- trigger/ping/trigger.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 9b5bfa0b..ef18b494 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -2,6 +2,7 @@ package ping import ( "fmt" + "strconv" "encoding/json" "io" "net/http" @@ -62,7 +63,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("Ping service data formation error") } - port := config.Settings["port"].(string) + port := strconv.Itoa(config.Settings["port"].(int)) if len(port) == 0 { port = DefaultPort } From 255367c39dbda7224549b176048dbfd48f0cf25f Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 14:52:32 -0700 Subject: [PATCH 37/57] Added ping message details --- trigger/ping/trigger.go | 46 ++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index ef18b494..8f48261a 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -85,6 +85,8 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { fmt.Println("trigger server is :", trigger.Server) mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) + fmt.Println("After init :") + PrintMemUsage() return trigger, nil } @@ -131,16 +133,46 @@ func (t *Trigger) Stop() error { } func PrintMemUsage() { - var m runtime.MemStats - runtime.ReadMemStats(&m) - fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc)) - fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc)) - fmt.Printf("\tSys = %v MiB", bToMb(m.Sys)) - fmt.Printf("\tNumGC = %v\n", m.NumGC) - fmt.Printf("No of GoRoutines active", runtime.NumGoroutine()) + var rtm runtime.MemStats + var m Monitor + runtime.ReadMemStats(&rtm) + + // Number of goroutines + m.NumGoroutine = runtime.NumGoroutine() + + // Misc memory stats + m.Alloc = rtm.Alloc + m.TotalAlloc = rtm.TotalAlloc + m.Sys = rtm.Sys + m.Mallocs = rtm.Mallocs + m.Frees = rtm.Frees + + // Live objects = Mallocs - Frees + m.LiveObjects = m.Mallocs - m.Frees + + // GC Stats + m.PauseTotalNs = rtm.PauseTotalNs + m.NumGC = rtm.NumGC + + // Just encode to json and print + b, _ := json.Marshal(m) + fmt.Println(string(b)) } func bToMb(b uint64) uint64 { return b / 1024 / 1024 } + +type Monitor struct { + Alloc, + TotalAlloc, + Sys, + Mallocs, + Frees, + LiveObjects, + PauseTotalNs uint64 + + NumGC uint32 + NumGoroutine int +} \ No newline at end of file From 26701be2bdf24e28b6febab82581423ecf1a6097 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 16:41:37 -0700 Subject: [PATCH 38/57] Added tracing details --- trigger/ping/trigger.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 8f48261a..0f2852b2 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -9,6 +9,7 @@ import ( "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" "runtime" + "net/trace" ) // DefaultPort is the default port for Ping service @@ -101,8 +102,11 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { + tr := trace.New("TraceTest", req.URL.Path) + defer tr.Finish() PrintMemUsage() io.WriteString(w, t.response+"\n") + tr.LazyPrintf("Details through trace") } // Start implements util.Managed.Start From f863a1bc95878edec0c028526fa8aa7023f31834 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 16:43:31 -0700 Subject: [PATCH 39/57] Added tracing details - fix --- trigger/ping/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 0f2852b2..17df9646 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -9,7 +9,7 @@ import ( "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" "runtime" - "net/trace" + "golang.org/x/net/trace" ) // DefaultPort is the default port for Ping service From ff86b3e0fe327ce37b3f8c4f68dc1dd9fac556e8 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 16:51:03 -0700 Subject: [PATCH 40/57] Added tracing details - fix --- trigger/ping/trigger.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 17df9646..61cb5978 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -103,10 +103,11 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { tr := trace.New("TraceTest", req.URL.Path) - defer tr.Finish() + defer fmt.Println("Trace:",tr.Finish()) PrintMemUsage() io.WriteString(w, t.response+"\n") tr.LazyPrintf("Details through trace") + } // Start implements util.Managed.Start From c02901d72baf6dae0a178d1e064d125abb47608e Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 16:54:40 -0700 Subject: [PATCH 41/57] Added tracing details - fix --- trigger/ping/trigger.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 61cb5978..a4ffeb69 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -103,10 +103,11 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { tr := trace.New("TraceTest", req.URL.Path) - defer fmt.Println("Trace:",tr.Finish()) + defer tr.Finish() PrintMemUsage() io.WriteString(w, t.response+"\n") tr.LazyPrintf("Details through trace") + fmt.Println("Trace:", tr) } From a2bab01c63896aabd108bbb12d535660c20b4a7a Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 23:26:30 -0700 Subject: [PATCH 42/57] Added tracing details - fix --- trigger/ping/trigger.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index a4ffeb69..c18aaa57 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -10,6 +10,7 @@ import ( "github.com/project-flogo/core/trigger" "runtime" "golang.org/x/net/trace" + "reflect" ) // DefaultPort is the default port for Ping service @@ -107,7 +108,12 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req PrintMemUsage() io.WriteString(w, t.response+"\n") tr.LazyPrintf("Details through trace") - fmt.Println("Trace:", tr) + fmt.Println(reflect.TypeOf(tr).String()) + fmt.Println("Trace:") + for k, v := range tr { + fmt.Print(k) + fmt.Println(":", v) + } } From fc8f84caa3a0583e222aa4d66e6091571e369016 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 23:39:01 -0700 Subject: [PATCH 43/57] Added tracing details - fix --- trigger/ping/trigger.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index c18aaa57..5f834370 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -110,11 +110,14 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req tr.LazyPrintf("Details through trace") fmt.Println(reflect.TypeOf(tr).String()) fmt.Println("Trace:") - for k, v := range tr { - fmt.Print(k) - fmt.Println(":", v) + e := reflect.ValueOf(&tr).Elem() + + for i := 0; i < e.NumField(); i++ { + fieldName := e.Type().Field(i).Name + fmt.Printf("%v\n", fieldName) } + fmt.Println(tr) } // Start implements util.Managed.Start From 5d5768bbc1e1663cf1327e243d0e00d2ccbb3940 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Thu, 1 Nov 2018 23:45:07 -0700 Subject: [PATCH 44/57] Added tracing details - fix --- trigger/ping/trigger.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 5f834370..d4c667f1 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -110,13 +110,13 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req tr.LazyPrintf("Details through trace") fmt.Println(reflect.TypeOf(tr).String()) fmt.Println("Trace:") - e := reflect.ValueOf(&tr).Elem() - - for i := 0; i < e.NumField(); i++ { - fieldName := e.Type().Field(i).Name - fmt.Printf("%v\n", fieldName) - } + //e := reflect.ValueOf(&tr).Elem() + //for i := 0; i < e.NumField(); i++ { + // fieldName := e.Type().Field(i).Name + // fmt.Printf("%v\n", fieldName) + //} + fmt.Printf("%+v\n", tr) fmt.Println(tr) } From f79c0871a58c916f59e834c2d33103a97792b1f5 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 11:08:17 -0700 Subject: [PATCH 45/57] Added Authorization token --- trigger/ping/examples/ping/flogo.json | 4 +- trigger/ping/trigger.go | 98 ++++++++++++--------------- 2 files changed, 45 insertions(+), 57 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 837810af..3d8b4c11 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -12,7 +12,9 @@ "description": "Ping Example", "settings": { "port": "9096", - "version": "1.1" + "version": "1.1", + "appversion":"", + "appdescription":"" }, "handlers": [] } diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index d4c667f1..d59d6944 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -9,8 +9,6 @@ import ( "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" "runtime" - "golang.org/x/net/trace" - "reflect" ) // DefaultPort is the default port for Ping service @@ -49,15 +47,24 @@ type Trigger struct { // New implements trigger.Factory.New func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { type PingResponse struct { - Version string - Appversion string - Appdescription string + Version string + Appversion string + Appdescription string + Endpoint string + NumGoroutine int + Alloc, + TotalAlloc, + Sys, + Mallocs, + Frees, + LiveObjects uint64 + NumGC uint32 } fmt.Println("config:", config.Settings) response := PingResponse{ Version: config.Settings["version"].(string), - Appversion: "",//config.Settings.AppVersion, - Appdescription: "",//config.Settings.AppDescription, + Appversion: config.Settings["appversion"].(string), + Appdescription: config.Settings["appdescription"].(string), } data, err := json.Marshal(response) @@ -81,14 +88,9 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { response: string(data), Server: server, } - fmt.Println("trigger metadata is :", trigger.metadata) - fmt.Println("trigger config is :", trigger.config) - fmt.Println("trigger response is :", trigger.response) - fmt.Println("trigger server is :", trigger.Server) mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) - fmt.Println("After init :") - PrintMemUsage() + trigger.PrintMemUsage() return trigger, nil } @@ -103,21 +105,28 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { + token := req.Header.Get("Authorization") + fmt.Println(token) + if(valid(token)) { + t.response.Endpoint = req.URL.Path + io.WriteString(w, t.response + "\n") + }else{ + fmt.Errorf("Invalid token!!!") + } + + //Another way to get trace : more details + /* tr := trace.New("TraceTest", req.URL.Path) defer tr.Finish() - PrintMemUsage() - io.WriteString(w, t.response+"\n") - tr.LazyPrintf("Details through trace") fmt.Println(reflect.TypeOf(tr).String()) fmt.Println("Trace:") - //e := reflect.ValueOf(&tr).Elem() - - //for i := 0; i < e.NumField(); i++ { - // fieldName := e.Type().Field(i).Name - // fmt.Printf("%v\n", fieldName) - //} fmt.Printf("%+v\n", tr) - fmt.Println(tr) + fmt.Println(tr)*/ +} + +func valid(token string) bool{ + matched, _ := regexp.MatchString("^Bearer (.*)", token) + return matched } // Start implements util.Managed.Start @@ -147,47 +156,24 @@ func (t *Trigger) Stop() error { return nil } -func PrintMemUsage() { +func (t *Trigger) PrintMemUsage() { var rtm runtime.MemStats - var m Monitor runtime.ReadMemStats(&rtm) // Number of goroutines - m.NumGoroutine = runtime.NumGoroutine() + t.NumGoroutine = runtime.NumGoroutine() // Misc memory stats - m.Alloc = rtm.Alloc - m.TotalAlloc = rtm.TotalAlloc - m.Sys = rtm.Sys - m.Mallocs = rtm.Mallocs - m.Frees = rtm.Frees + t.Alloc = rtm.Alloc + t.TotalAlloc = rtm.TotalAlloc + t.Sys = rtm.Sys + t.Mallocs = rtm.Mallocs + t.Frees = rtm.Frees // Live objects = Mallocs - Frees - m.LiveObjects = m.Mallocs - m.Frees + t.LiveObjects = t.Mallocs - t.Frees - // GC Stats - m.PauseTotalNs = rtm.PauseTotalNs - m.NumGC = rtm.NumGC + //GC stats + t.NumGC = rtm.NumGC - // Just encode to json and print - b, _ := json.Marshal(m) - fmt.Println(string(b)) } - - -func bToMb(b uint64) uint64 { - return b / 1024 / 1024 -} - -type Monitor struct { - Alloc, - TotalAlloc, - Sys, - Mallocs, - Frees, - LiveObjects, - PauseTotalNs uint64 - - NumGC uint32 - NumGoroutine int -} \ No newline at end of file From e94b8835fa4ee1e042fd86bbf799352bfc82542c Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 11:33:39 -0700 Subject: [PATCH 46/57] Added Authorization token - Fixes --- trigger/ping/trigger.go | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index d59d6944..a5d56f9e 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -9,6 +9,7 @@ import ( "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" "runtime" + "regexp" ) // DefaultPort is the default port for Ping service @@ -51,20 +52,14 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { Appversion string Appdescription string Endpoint string - NumGoroutine int - Alloc, - TotalAlloc, - Sys, - Mallocs, - Frees, - LiveObjects uint64 - NumGC uint32 + StatsDetails MemoryStats } - fmt.Println("config:", config.Settings) response := PingResponse{ Version: config.Settings["version"].(string), Appversion: config.Settings["appversion"].(string), Appdescription: config.Settings["appdescription"].(string), + Endpoint: "", + StatsDetails: MemoryStats{}, } data, err := json.Marshal(response) @@ -156,15 +151,17 @@ func (t *Trigger) Stop() error { return nil } -func (t *Trigger) PrintMemUsage() { +func (t *Trigger)PrintMemUsage() { var rtm runtime.MemStats + //var t MemoryStats runtime.ReadMemStats(&rtm) // Number of goroutines - t.NumGoroutine = runtime.NumGoroutine() + t.response.StatsDetails.NumGoroutine = runtime.NumGoroutine() + //t.NumGoroutine = runtime.NumGoroutine() // Misc memory stats - t.Alloc = rtm.Alloc + /*t.Alloc = rtm.Alloc t.TotalAlloc = rtm.TotalAlloc t.Sys = rtm.Sys t.Mallocs = rtm.Mallocs @@ -174,6 +171,17 @@ func (t *Trigger) PrintMemUsage() { t.LiveObjects = t.Mallocs - t.Frees //GC stats - t.NumGC = rtm.NumGC + t.NumGC = rtm.NumGC*/ } + +type MemoryStats struct{ + NumGoroutine int + /*Alloc, + TotalAlloc, + Sys, + Mallocs, + Frees, + LiveObjects uint64 + NumGC uint32*/ +} From 6f5748c8acec8cd883a5b40e1417f80489895540 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 11:47:02 -0700 Subject: [PATCH 47/57] Added Authorization token - Fixes --- trigger/ping/trigger.go | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index a5d56f9e..f83b9285 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -23,6 +23,7 @@ type Settings struct { } var triggerMd = trigger.NewMetadata(&Settings{}) +var statsResult string func init() { trigger.Register(&Trigger{}, &Factory{}) @@ -51,15 +52,11 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { Version string Appversion string Appdescription string - Endpoint string - StatsDetails MemoryStats } response := PingResponse{ Version: config.Settings["version"].(string), Appversion: config.Settings["appversion"].(string), Appdescription: config.Settings["appdescription"].(string), - Endpoint: "", - StatsDetails: MemoryStats{}, } data, err := json.Marshal(response) @@ -85,7 +82,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { } mux.HandleFunc("/ping", trigger.PingResponseHandlerShort) mux.HandleFunc("/ping/details", trigger.PingResponseHandlerDetail) - trigger.PrintMemUsage() + statsResult = PrintMemUsage() return trigger, nil } @@ -103,8 +100,9 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req token := req.Header.Get("Authorization") fmt.Println(token) if(valid(token)) { - t.response.Endpoint = req.URL.Path io.WriteString(w, t.response + "\n") + io.WriteString(w, "Details :\n") + io.WriteString(w, statsResult + "\n") }else{ fmt.Errorf("Invalid token!!!") } @@ -151,17 +149,15 @@ func (t *Trigger) Stop() error { return nil } -func (t *Trigger)PrintMemUsage() { +func PrintMemUsage() string{ var rtm runtime.MemStats - //var t MemoryStats runtime.ReadMemStats(&rtm) + var t MemoryStats - // Number of goroutines - t.response.StatsDetails.NumGoroutine = runtime.NumGoroutine() - //t.NumGoroutine = runtime.NumGoroutine() + t.NumGoroutine = runtime.NumGoroutine() // Misc memory stats - /*t.Alloc = rtm.Alloc + t.Alloc = rtm.Alloc t.TotalAlloc = rtm.TotalAlloc t.Sys = rtm.Sys t.Mallocs = rtm.Mallocs @@ -171,17 +167,19 @@ func (t *Trigger)PrintMemUsage() { t.LiveObjects = t.Mallocs - t.Frees //GC stats - t.NumGC = rtm.NumGC*/ + t.NumGC = rtm.NumGC + result, _ := json.Marshal(t) + return string(result) } type MemoryStats struct{ NumGoroutine int - /*Alloc, + Alloc, TotalAlloc, Sys, Mallocs, Frees, LiveObjects uint64 - NumGC uint32*/ + NumGC uint32 } From 74f6d1fac1996925319571ffaf7199870e1aca18 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 12:05:37 -0700 Subject: [PATCH 48/57] Code clean --- trigger/ping/examples/ping/README.md | 26 ++++++++++- trigger/ping/metadata.go | 49 ++++++++++++++++++++ trigger/ping/trigger.go | 69 ++++------------------------ 3 files changed, 82 insertions(+), 62 deletions(-) create mode 100644 trigger/ping/metadata.go diff --git a/trigger/ping/examples/ping/README.md b/trigger/ping/examples/ping/README.md index 6be103df..6dc2a218 100644 --- a/trigger/ping/examples/ping/README.md +++ b/trigger/ping/examples/ping/README.md @@ -18,10 +18,32 @@ bin/Ping Then open another terminal and run: ``` -curl http://localhost:9096/ping/details +curl --request GET http://localhost:9096/ping/details -H "Authorization: Bearer " ``` You should then see something like: ``` -{"Version":"1.1","Appversion":"","Appdescription":""} +{ + "Version":"1.1", + "Appversion":"", + "Appdescription":"" +}Details:{ + "NumGoroutine":2, + "Alloc":762472, + "TotalAlloc":762472, + "Sys":69926912, + "Mallocs":1078, + "Frees":101, + "LiveObjects":977, + "NumGC":0 +} +``` +##### +``` +curl --request GET http://localhost:9096/ping -H "Authorization: Bearer " +``` + +You should then see something like: +``` +{"response":"Ping successful"} ``` diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go new file mode 100644 index 00000000..72746b6e --- /dev/null +++ b/trigger/ping/metadata.go @@ -0,0 +1,49 @@ +package ping + + +type Settings struct { + Port int `md:"port,required"` + Version string `md:"version"` + AppVersion string `md:"appversion"` + AppDescription string `md:"appdescription"` +} + +type MemoryStats struct{ + NumGoroutine int + Alloc, + TotalAlloc, + Sys, + Mallocs, + Frees, + LiveObjects uint64 + NumGC uint32 +} + +func PrintMemUsage() string{ + var rtm runtime.MemStats + runtime.ReadMemStats(&rtm) + var t MemoryStats + + t.NumGoroutine = runtime.NumGoroutine() + + // Misc memory stats + t.Alloc = rtm.Alloc + t.TotalAlloc = rtm.TotalAlloc + t.Sys = rtm.Sys + t.Mallocs = rtm.Mallocs + t.Frees = rtm.Frees + + // Live objects = Mallocs - Frees + t.LiveObjects = t.Mallocs - t.Frees + + //GC stats + t.NumGC = rtm.NumGC + + result, _ := json.Marshal(t) + return string(result) +} + +func Valid(token string) bool{ + matched, _ := regexp.MatchString("^Bearer (.*)", token) + return matched +} diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index f83b9285..451567ae 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -15,13 +15,6 @@ import ( // DefaultPort is the default port for Ping service const DefaultPort = "9096" -type Settings struct { - Port int `md:"port,required"` - Version string `md:"version"` - AppVersion string `md:"appversion"` - AppDescription string `md:"appdescription"` -} - var triggerMd = trigger.NewMetadata(&Settings{}) var statsResult string @@ -43,7 +36,6 @@ type Trigger struct { config *trigger.Config response string Server *http.Server - logger log.Logger } // New implements trigger.Factory.New @@ -61,7 +53,7 @@ func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { data, err := json.Marshal(response) if err != nil { - fmt.Println("Ping service data formation error") + fmt.Errorf("Ping service data formation error",err) } port := strconv.Itoa(config.Settings["port"].(int)) @@ -92,19 +84,23 @@ func (t *Trigger) Initialize(ctx trigger.InitContext) error { } func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Request) { - io.WriteString(w, "{\"response\":\"Ping successful\"}\n") + token := req.Header.Get("Authorization") + if(Valid(token)) { + io.WriteString(w, "{\"response\":\"Ping successful\"}\n") + }else{ + io.WriteString(w, "Error : Invalid Token") + } } //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { token := req.Header.Get("Authorization") - fmt.Println(token) - if(valid(token)) { + if(Valid(token)) { io.WriteString(w, t.response + "\n") io.WriteString(w, "Details :\n") io.WriteString(w, statsResult + "\n") }else{ - fmt.Errorf("Invalid token!!!") + io.WriteString(w, "Error : Invalid Token") } //Another way to get trace : more details @@ -117,25 +113,13 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req fmt.Println(tr)*/ } -func valid(token string) bool{ - matched, _ := regexp.MatchString("^Bearer (.*)", token) - return matched -} - // Start implements util.Managed.Start func (t *Trigger) Start() error { - fmt.Println("Inside trigger start") - fmt.Println("Server:", t.Server) - - fmt.Println("Ping service starting...") - go func() { - fmt.Println("inside go routine") if err := t.Server.ListenAndServe(); err != http.ErrServerClosed { fmt.Errorf("Ping service err:", err) } }() - fmt.Println("Ping service started") return nil } @@ -145,41 +129,6 @@ func (t *Trigger) Stop() error { fmt.Errorf("[mashling-ping-service] Ping service error when stopping:", err) return err } - fmt.Println("[mashling-ping-service] Ping service stopped") return nil } -func PrintMemUsage() string{ - var rtm runtime.MemStats - runtime.ReadMemStats(&rtm) - var t MemoryStats - - t.NumGoroutine = runtime.NumGoroutine() - - // Misc memory stats - t.Alloc = rtm.Alloc - t.TotalAlloc = rtm.TotalAlloc - t.Sys = rtm.Sys - t.Mallocs = rtm.Mallocs - t.Frees = rtm.Frees - - // Live objects = Mallocs - Frees - t.LiveObjects = t.Mallocs - t.Frees - - //GC stats - t.NumGC = rtm.NumGC - - result, _ := json.Marshal(t) - return string(result) -} - -type MemoryStats struct{ - NumGoroutine int - Alloc, - TotalAlloc, - Sys, - Mallocs, - Frees, - LiveObjects uint64 - NumGC uint32 -} From d67b8d221376085128892a0c0f7a3f4271ec9f15 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 12:09:41 -0700 Subject: [PATCH 49/57] Code clean --- trigger/ping/metadata.go | 6 ++++++ trigger/ping/trigger.go | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go index 72746b6e..b9dd9e02 100644 --- a/trigger/ping/metadata.go +++ b/trigger/ping/metadata.go @@ -1,5 +1,11 @@ package ping +import( + "runtime" + "regexp" + "encoding/json" +) + type Settings struct { Port int `md:"port,required"` diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 451567ae..a317d647 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -6,10 +6,7 @@ import ( "encoding/json" "io" "net/http" - "github.com/project-flogo/core/support/log" "github.com/project-flogo/core/trigger" - "runtime" - "regexp" ) // DefaultPort is the default port for Ping service From 7ee0eb1d58ac82c87bb5b24411ce71ac583f2338 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 12:12:19 -0700 Subject: [PATCH 50/57] Code clean --- trigger/ping/trigger.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index a317d647..134285a3 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -85,7 +85,7 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ if(Valid(token)) { io.WriteString(w, "{\"response\":\"Ping successful\"}\n") }else{ - io.WriteString(w, "Error : Invalid Token") + io.WriteString(w, "Error : Invalid Token\n") } } @@ -97,7 +97,7 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req io.WriteString(w, "Details :\n") io.WriteString(w, statsResult + "\n") }else{ - io.WriteString(w, "Error : Invalid Token") + io.WriteString(w, "Error : Invalid Token\n") } //Another way to get trace : more details From afc2430729a347e11c52b7ca77b2f0f62d33d001 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 12:59:24 -0700 Subject: [PATCH 51/57] Added password --- trigger/ping/metadata.go | 8 ++++++-- trigger/ping/trigger.go | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go index b9dd9e02..3cd37cdb 100644 --- a/trigger/ping/metadata.go +++ b/trigger/ping/metadata.go @@ -4,8 +4,10 @@ import( "runtime" "regexp" "encoding/json" + "strings" ) +const password = "Test12345" type Settings struct { Port int `md:"port,required"` @@ -50,6 +52,8 @@ func PrintMemUsage() string{ } func Valid(token string) bool{ - matched, _ := regexp.MatchString("^Bearer (.*)", token) - return matched + if strings.Compare(token, password) == 0{ + return true + } + return false } diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 134285a3..86db74e1 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -85,7 +85,7 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ if(Valid(token)) { io.WriteString(w, "{\"response\":\"Ping successful\"}\n") }else{ - io.WriteString(w, "Error : Invalid Token\n") + io.WriteString(w, "Error : Invalid User !! \n") } } @@ -97,7 +97,7 @@ func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Req io.WriteString(w, "Details :\n") io.WriteString(w, statsResult + "\n") }else{ - io.WriteString(w, "Error : Invalid Token\n") + io.WriteString(w, "Error : Invalid User !! \n") } //Another way to get trace : more details From 39033b6cda014177eb542ae0631e6aee9d6b47ce Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 13:01:43 -0700 Subject: [PATCH 52/57] Added password --- trigger/ping/metadata.go | 1 - 1 file changed, 1 deletion(-) diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go index 3cd37cdb..939ac361 100644 --- a/trigger/ping/metadata.go +++ b/trigger/ping/metadata.go @@ -2,7 +2,6 @@ package ping import( "runtime" - "regexp" "encoding/json" "strings" ) From c1a735cdecb3a5c6d2084a0394d82dbbe9042402 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 13:06:05 -0700 Subject: [PATCH 53/57] Added password validation --- trigger/ping/examples/ping/flogo.json | 3 ++- trigger/ping/metadata.go | 1 + trigger/ping/trigger.go | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/trigger/ping/examples/ping/flogo.json b/trigger/ping/examples/ping/flogo.json index 3d8b4c11..d3d4c77f 100644 --- a/trigger/ping/examples/ping/flogo.json +++ b/trigger/ping/examples/ping/flogo.json @@ -14,7 +14,8 @@ "port": "9096", "version": "1.1", "appversion":"", - "appdescription":"" + "appdescription":"", + "password":"Test12345" }, "handlers": [] } diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go index 939ac361..8e6e7c0b 100644 --- a/trigger/ping/metadata.go +++ b/trigger/ping/metadata.go @@ -13,6 +13,7 @@ type Settings struct { Version string `md:"version"` AppVersion string `md:"appversion"` AppDescription string `md:"appdescription"` + Password strings `md:"password"` } type MemoryStats struct{ diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 86db74e1..9ed26845 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -91,7 +91,7 @@ func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Requ //PingResponseHandlerDetail handles simple response func (t *Trigger) PingResponseHandlerDetail(w http.ResponseWriter, req *http.Request) { - token := req.Header.Get("Authorization") + token := t.config.Settings["password"].(string) if(Valid(token)) { io.WriteString(w, t.response + "\n") io.WriteString(w, "Details :\n") From 37e797c0274263f6cc2ffd28bb4e6ac7c0b56ffb Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 13:07:54 -0700 Subject: [PATCH 54/57] Added password validation --- trigger/ping/metadata.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/metadata.go b/trigger/ping/metadata.go index 8e6e7c0b..e1f23462 100644 --- a/trigger/ping/metadata.go +++ b/trigger/ping/metadata.go @@ -13,7 +13,7 @@ type Settings struct { Version string `md:"version"` AppVersion string `md:"appversion"` AppDescription string `md:"appdescription"` - Password strings `md:"password"` + Password string `md:"password"` } type MemoryStats struct{ From f07798362a726dcd7f63edf2194bc17a573d60b7 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 13:09:58 -0700 Subject: [PATCH 55/57] code clean --- trigger/ping/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/ping/trigger.go b/trigger/ping/trigger.go index 9ed26845..98227317 100644 --- a/trigger/ping/trigger.go +++ b/trigger/ping/trigger.go @@ -81,7 +81,7 @@ func (t *Trigger) Initialize(ctx trigger.InitContext) error { } func (t *Trigger) PingResponseHandlerShort(w http.ResponseWriter, req *http.Request) { - token := req.Header.Get("Authorization") + token := t.config.Settings["password"].(string) if(Valid(token)) { io.WriteString(w, "{\"response\":\"Ping successful\"}\n") }else{ From 710f40e460436d3f0cb603d9603747423ea9f294 Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 2 Nov 2018 13:11:31 -0700 Subject: [PATCH 56/57] Added Readme --- trigger/ping/examples/ping/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trigger/ping/examples/ping/README.md b/trigger/ping/examples/ping/README.md index 6dc2a218..cffab312 100644 --- a/trigger/ping/examples/ping/README.md +++ b/trigger/ping/examples/ping/README.md @@ -18,7 +18,7 @@ bin/Ping Then open another terminal and run: ``` -curl --request GET http://localhost:9096/ping/details -H "Authorization: Bearer " +curl http://localhost:9096/ping/details ``` You should then see something like: @@ -40,7 +40,7 @@ You should then see something like: ``` ##### ``` -curl --request GET http://localhost:9096/ping -H "Authorization: Bearer " +curl http://localhost:9096/ping ``` You should then see something like: From e838a2be80aa18900db507d27594900b8edcac5d Mon Sep 17 00:00:00 2001 From: Akshay Gadikar Date: Fri, 9 Nov 2018 14:46:58 -0800 Subject: [PATCH 57/57] Swagger Trigger --- trigger/swagger/activity.go | 148 ++++++++++++++++++++ trigger/swagger/examples/swagger/README.md | 92 ++++++++++++ trigger/swagger/examples/swagger/flogo.json | 101 +++++++++++++ trigger/swagger/metadata.go | 22 +++ trigger/swagger/swagger.go | 75 ++++++++++ 5 files changed, 438 insertions(+) create mode 100644 trigger/swagger/activity.go create mode 100644 trigger/swagger/examples/swagger/README.md create mode 100644 trigger/swagger/examples/swagger/flogo.json create mode 100644 trigger/swagger/metadata.go create mode 100644 trigger/swagger/swagger.go diff --git a/trigger/swagger/activity.go b/trigger/swagger/activity.go new file mode 100644 index 00000000..f80356e9 --- /dev/null +++ b/trigger/swagger/activity.go @@ -0,0 +1,148 @@ +package swagger + +import( + "fmt" + "io" + "net/http" + "strconv" + "strings" + "os" + "regexp" + "github.com/project-flogo/core/data/metadata" + "github.com/project-flogo/core/support/log" + "github.com/project-flogo/core/trigger" +) + +var triggerMd = trigger.NewMetadata(&Settings{}, &HandlerSettings{}) +const DefaultPort = "9096" + +func init() { + trigger.Register(&Trigger{}, &Factory{}) +} + +type Factory struct { +} + +// Metadata implements trigger.Factory.Metadata +func (*Factory) Metadata() *trigger.Metadata { + return triggerMd +} + +// Trigger is the swagger trigger +type Trigger struct { + metadata *trigger.Metadata + settings *Settings + config *trigger.Config + Server *http.Server + logger log.Logger + response string +} + +// New implements trigger.Factory.New +func (f *Factory) New(config *trigger.Config) (trigger.Trigger, error) { + s := &Settings{} + err := metadata.MapToStruct(config.Settings, s, true) + if err != nil { + return nil, err + } + port := strconv.Itoa(config.Settings["port"].(int)) + if len(port) == 0 { + port = DefaultPort + } + + mux := http.NewServeMux() + server := &http.Server{ + Addr: ":" + port, + Handler: mux, + } + trigger := &Trigger{ + metadata: f.Metadata(), + config: config, + response: "", + Server: server, + } + mux.HandleFunc("/swagger/", trigger.SwaggerHandler) + mux.HandleFunc("/swagger", trigger.DefaultSwaggerHandler) + return trigger, nil +} + +func (t *Trigger) DefaultSwaggerHandler(w http.ResponseWriter, req *http.Request) { + hostName, err := os.Hostname() + if err != nil { + fmt.Errorf("Error in getting hostname: ", err) + } + response, _ := Swagger(hostName, t.config, "") + io.WriteString(w, string(response)) +} + +func (t *Trigger) SwaggerHandler(w http.ResponseWriter, req *http.Request) { + var response []byte + match, _ := regexp.MatchString("/swagger/[A-Za-z0-9]+$", req.URL.Path) + if(match) { + vars := strings.Split(req.URL.Path, "/") + triggerName := vars[2] + hostName, err := os.Hostname() + if err != nil { + fmt.Errorf("Error in getting hostname: ", err) + } + response, _ = Swagger(hostName, t.config, triggerName) + }else{ + response = []byte("404 page not found\n") + } + io.WriteString(w, string(response)) +} + +// Start implements util.Managed.Start +func (t *Trigger) Start() error { + go func() { + if err := t.Server.ListenAndServe(); err != http.ErrServerClosed { + fmt.Errorf("Ping service err:", err) + } + }() + return nil +} + +// Stop implements util.Managed.Stop +func (t *Trigger) Stop() error { + if err := t.Server.Shutdown(nil); err != nil { + fmt.Errorf("[mashling-ping-service] Ping service error when stopping:", err) + return err + } + return nil +} + +func Swagger(hostname string, config *trigger.Config, triggerName string) ([]byte, error) { + var endpoints []Endpoint + for _, tConfig := range config.AppConfig["Trigger"].([]*trigger.Config) { + if tConfig.Id == "" || tConfig.Id == triggerName { + if tConfig.Ref == "github.com/project-flogo/contrib/trigger/rest" || tConfig.Ref == "github.com/project-flogo/core/swagger" { + for _, handler := range tConfig.Handlers { + var endpoint Endpoint + endpoint.Name = tConfig.Id + endpoint.Method = handler.Settings["method"].(string) + endpoint.Path = handler.Settings["path"].(string) + endpoint.Description = tConfig.Settings["description"].(string) + hostname = hostname + ": "+strconv.Itoa(tConfig.Settings["port"].(int)) + var beginDelim, endDelim rune + switch tConfig.Ref { + case "github.com/project-flogo/contrib/trigger/rest": + beginDelim = ':' + endDelim = '/' + default: + beginDelim = '{' + endDelim = '}' + } + endpoint.BeginDelim = beginDelim + endpoint.EndDelim = endDelim + endpoints = append(endpoints, endpoint) + } + } + } + } + return Generate(hostname, config.AppConfig["Name"].(string), config.AppConfig["Version"].(string), config.AppConfig["Description"].(string), endpoints) +} + + +func (t *Trigger) Initialize(ctx trigger.InitContext) error { + return nil +} \ No newline at end of file diff --git a/trigger/swagger/examples/swagger/README.md b/trigger/swagger/examples/swagger/README.md new file mode 100644 index 00000000..45b0f573 --- /dev/null +++ b/trigger/swagger/examples/swagger/README.md @@ -0,0 +1,92 @@ +# Swagger Feature Example + +## Install + +To install run the following commands: +``` +flogo create -f flogo.json +cd swagger +flogo build +``` + +## Testing + +Run: +``` +bin/swagger +``` + +Then open another terminal and run: +``` +### Format : curl http://localhost:1234/swagger/ ### + +curl http://localhost:1234/swagger/swagdocs +``` + +You should then see something like: +``` +{ + "host": "Temporarys-MacBook-Pro.local: 1234", + "info": { + "description": "1.0.0", + "title": "swagger", + "version": "This is a simple proxy." + }, + "paths": { + "/swagger": { + "get": { + "description": "Simple swagger doc Trigger", + "parameters": [], + "responses": { + "200": { + "description": "Simple swagger doc Trigger" + }, + "default": { + "description": "error" + } + }, + "tags": [ + "swagdocs" + ] + } + } + }, + "swagger": "2.0" +} +``` +##### +``` +curl http://localhost:1234/swagger/MyProxy +``` + +You should then see something like: +``` +{ + "host": "Temporarys-MacBook-Pro.local: 9096", + "info": { + "description": "1.0.0", + "title": "swagger", + "version": "This is a simple proxy." + }, + "paths": { + "/pets": { + "get": { + "description": "Simple REST Trigger", + "parameters": [], + "responses": { + "200": { + "description": "Simple REST Trigger" + }, + "default": { + "description": "error" + } + }, + "tags": [ + "MyProxy" + ] + } + } + }, + "swagger": "2.0" +} +``` diff --git a/trigger/swagger/examples/swagger/flogo.json b/trigger/swagger/examples/swagger/flogo.json new file mode 100644 index 00000000..6f3716db --- /dev/null +++ b/trigger/swagger/examples/swagger/flogo.json @@ -0,0 +1,101 @@ +{ + "name": "swagger", + "type": "flogo:app", + "version": "1.0.0", + "description": "This is a simple proxy.", + "properties": null, + "channels": null, + "triggers": [ + { + "name": "swagger", + "id": "swagdocs", + "ref": "github.com/project-flogo/core/swagger", + "settings": { + "port": "1234", + "description": "Simple swagger doc Trigger" + }, + "handlers": [ + { + "settings": { + "method": "GET", + "path": "/{triggerName}/swagger" + }, + "actions": [ + { + "id": "swaggertrigger" + } + ] + } + ] + }, + { + "name": "flogo-rest", + "id": "MyProxy", + "ref": "github.com/project-flogo/contrib/trigger/rest", + "settings": { + "port": "9096", + "description": "Simple REST Trigger" + }, + "handlers": [ + { + "settings": { + "method": "GET", + "path": "/pets" + }, + "actions": [ + { + "id": "microgateway:jwt" + } + ] + } + ] + } + ], + "resources": [ + { + "id": "microgateway:jwt", + "compressed": false, + "data": { + "name": "Pets", + "steps": [ + { + "service": "PetStorePets", + "input": { + "pathParams.petId": "1" + } + } + ], + "responses": [], + "services": [ + { + "name": "PetStorePets", + "description": "Get pets by ID from the petstore", + "ref": "github.com/project-flogo/contrib/activity/rest", + "settings": { + "uri": "https://petstore.swagger.io/v2/pet/:petId", + "method": "GET" + } + } + ] + } + } + ], + "actions": [ + { + "ref": "github.com/project-flogo/microgateway", + "settings": { + "uri": "microgateway:jwt" + }, + "id": "swaggertrigger", + "metadata": null + }, + { + "ref": "github.com/project-flogo/microgateway", + "settings": { + "uri": "microgateway:jwt" + }, + "id": "microgateway:jwt", + "metadata": null + } + ] +} \ No newline at end of file diff --git a/trigger/swagger/metadata.go b/trigger/swagger/metadata.go new file mode 100644 index 00000000..ae18dad5 --- /dev/null +++ b/trigger/swagger/metadata.go @@ -0,0 +1,22 @@ +package swagger + + +// Endpoint represents an endpoint in a Swagger 2.0 document. +type Endpoint struct { + Name string `md:"name"` + Description string `md:"description"` + Path string `md:"path"` + Method string `md:"method"` + BeginDelim rune `md:"begin_delim"` + EndDelim rune `md:"end_delim"` +} + + +type Settings struct { + Port int `md:"port,required"` +} + +type HandlerSettings struct { + Method string `md:"method,required,allowed(GET,POST,PUT,PATCH,DELETE)"` + Path string `md:"path,required"` +} diff --git a/trigger/swagger/swagger.go b/trigger/swagger/swagger.go new file mode 100644 index 00000000..dea49b42 --- /dev/null +++ b/trigger/swagger/swagger.go @@ -0,0 +1,75 @@ +package swagger + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// Generate generates a Swagger 2.0 document based off of the provided endpoints. +func Generate(host string, name string, description string, version string, endpoints []Endpoint) ([]byte, error) { + paths := map[string]interface{}{} + + for _, endpoint := range endpoints { + path := map[string]interface{}{} + parameters, scrubbedPath := swaggerParametersExtractor(endpoint.Path, endpoint.BeginDelim, endpoint.EndDelim) + ok := map[string]interface{}{ + "description": endpoint.Description, + } + path[strings.ToLower(endpoint.Method)] = map[string]interface{}{ + "description": endpoint.Description, + "tags": []interface{}{endpoint.Name}, + "parameters": parameters, + "responses": map[string]interface{}{ + "200": ok, + "default": map[string]interface{}{ + "description": "error", + }, + }, + } + paths[scrubbedPath] = path + } + + swagger := map[string]interface{}{ + "swagger": "2.0", + "info": map[string]interface{}{ + "version": version, + "title": name, + "description": description, + }, + "host": host, + "paths": paths, + } + docs, err := json.MarshalIndent(&swagger, "", " ") + if err != nil { + return nil, err + } + return docs, err +} + +func swaggerParametersExtractor(path string, beginDelim rune, endDelim rune) ([]interface{}, string) { + parameters := []interface{}{} + routePath := []rune(path) + for i := 0; i < len(routePath); i++ { + if routePath[i] == beginDelim { + key := bytes.Buffer{} + for i++; i < len(routePath) && routePath[i] != endDelim; i++ { + if routePath[i] != ' ' && routePath[i] != '\t' { + key.WriteRune(routePath[i]) + } + } + if beginDelim == ':' { + path = strings.Replace(path, fmt.Sprintf(":%s", key.String()), fmt.Sprintf("{%s}", key.String()), 1) + } + parameter := map[string]interface{}{ + "name": key.String(), + "in": "path", + "required": true, + "type": "string", + } + parameters = append(parameters, parameter) + } + } + return parameters, path +}