Skip to content
This repository has been archived by the owner on Mar 2, 2024. It is now read-only.

Commit

Permalink
Update Header Creation SE with updated service extension format (#30)
Browse files Browse the repository at this point in the history
Signed-off-by: Warren Fernandes <[email protected]>
  • Loading branch information
wfernandes authored Nov 15, 2023
1 parent 82c6e5c commit 150c5cc
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 24 deletions.
5 changes: 5 additions & 0 deletions header-creation/go.mod
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions header-creation/go.sum
Original file line number Diff line number Diff line change
@@ -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=
52 changes: 35 additions & 17 deletions header-creation/header.go
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
}
15 changes: 8 additions & 7 deletions header-creation/maverics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 150c5cc

Please sign in to comment.