diff --git a/header-creation/go.mod b/header-creation/go.mod new file mode 100644 index 0000000..f9625d2 --- /dev/null +++ b/header-creation/go.mod @@ -0,0 +1,5 @@ +module github.com/strata-io/strata-service-extension-examples/header-creation + +go 1.20 + +require github.com/strata-io/service-extension v0.4.0 diff --git a/header-creation/go.sum b/header-creation/go.sum new file mode 100644 index 0000000..601906b --- /dev/null +++ b/header-creation/go.sum @@ -0,0 +1,2 @@ +github.com/strata-io/service-extension v0.4.0 h1:EBncLpV41HkUpVRStbF+F+YE89u6srqXjInqdZDMtuM= +github.com/strata-io/service-extension v0.4.0/go.mod h1:AXZz5Rjl5A2KieMuDy9zwsUZlg7PtR1IBeHYuAijb/o= diff --git a/header-creation/header.go b/header-creation/header.go index b9038c7..7b870d9 100644 --- a/header-creation/header.go +++ b/header-creation/header.go @@ -1,24 +1,33 @@ package main import ( - "maverics/app" - "maverics/log" - "maverics/session" - + "fmt" "net/http" + + "github.com/strata-io/service-extension/orchestrator" ) // CreateFirstNameHeader creates a custom first name header. The user's first name // will be concatenated with "the Great". func CreateFirstNameHeader( - ag *app.AppGateway, - rw http.ResponseWriter, - req *http.Request, + api orchestrator.Orchestrator, + _ http.ResponseWriter, + _ *http.Request, ) (http.Header, error) { - log.Debug("msg", "retrieving first name from session") - name := session.GetString(req, "azure.given_name") + " the Great" + logger := api.Logger() + logger.Info("se", "building first name custom header") + + session, err := api.Session() + if err != nil { + return nil, fmt.Errorf("unable to retrieve session: %w", err) + } + logger.Debug("se", "retrieving first name from session") + firstName, err := session.GetString("azure.given_name") + if err != nil { + return nil, fmt.Errorf("unable to retrieve attribute 'azure.given_name': %w", err) + } + name := firstName + " the Great" - log.Debug("msg", "building custom first name header") header := make(http.Header) header["EXAMPLE-FIRST-NAME"] = []string{name} return header, nil @@ -27,15 +36,24 @@ func CreateFirstNameHeader( // CreateLastNameHeader creates a custom last name header. The user's last name // will be prepended with "Dr.". func CreateLastNameHeader( - ag *app.AppGateway, - rw http.ResponseWriter, - req *http.Request, + api orchestrator.Orchestrator, + _ http.ResponseWriter, + _ *http.Request, ) (http.Header, error) { - log.Debug("msg", "retrieving last name from session") - lastName := "Dr. " + session.GetString(req, "azure.family_name") + logger := api.Logger() + logger.Info("se", "building last name custom header") + + session, err := api.Session() + if err != nil { + return nil, fmt.Errorf("unable to retrieve session: %w", err) + } + lastName, err := session.GetString("azure.family_name") + if err != nil { + return nil, fmt.Errorf("unable to retrieve attribute 'azure.family_name': %w", err) + } - log.Debug("msg", "building custom last name header") + nameWithTitle := "Dr. " + lastName header := make(http.Header) - header["EXAMPLE-LAST-NAME"] = []string{lastName} + header["EXAMPLE-LAST-NAME"] = []string{nameWithTitle} return header, nil } diff --git a/header-creation/maverics.yaml b/header-creation/maverics.yaml index be8554d..e82169d 100644 --- a/header-creation/maverics.yaml +++ b/header-creation/maverics.yaml @@ -10,24 +10,25 @@ http: address: :443 tls: maverics -appgateways: +apps: - name: exampleHeaderCreation - basePath: / + type: proxy + routePatterns: + - / # The 'upstream' used here is purely for demonstration and can be replaced with # any URL that is resolvable from the machine the Orchestrator is running on. upstream: https://httpbin.org headers: - EXAMPLE-SUB: azure.sub + - name: EXAMPLE-SUB + value: "{{ azure.sub }}" # It is assumed the header.go Service Extension file resides in the # '/etc/maverics/extensions' directory. To change that, update the 'file' fields below. # TODO: confirm the file paths defined below are correct. - EXAMPLE-FIRST-NAME: - createHeader: + - createHeaderSE: funcName: CreateFirstNameHeader file: /etc/maverics/extensions/header.go - EXAMPLE-LAST-NAME: - createHeader: + - createHeaderSE: funcName: CreateLastNameHeader file: /etc/maverics/extensions/header.go