Skip to content

Commit

Permalink
Configurable persona styling (#35)
Browse files Browse the repository at this point in the history
* add persona title and color envs

* v bump

* remove dotenv and envalid

* configure as cli args instead

* more consistent colours
  • Loading branch information
jonmattgray authored Jan 4, 2024
1 parent f1f3965 commit c0b2ecd
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 50 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,12 @@ This is a forked version of -> https://github.com/hyperledger/aries-framework-ja
Thanks for all the hard work to everybody who contributed to the [project](https://github.com/hyperledger/aries-framework-javascript-ext/tree/main)

For more information read [README_VERITABLE.md](./README_VERITABLE.md)

## Configuration

`veritable-cloudagent` takes the following arguments to configure the `AFJ Rest agent`:

| variable | required | default | description |
| :------------ | :------: | :--------------------: | :------------------------------------------------------------------ |
| persona-title | N | `Veritable Cloudagent` | Site title for the service's OpenAPI documentation |
| persona-color | N | `white` | CSS colour value for the service's OpenAPI documentation background |
65 changes: 32 additions & 33 deletions docker-compose-testnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
## Docker-Compose for a 3-agent testnet + 3-node private IPFS cluster ############
##
## Agents: Alice, Bob, Charlie
## Ports for testing purposes (HTTP):
## Ports for testing purposes (HTTP):
## Alice = 3000 [ 5002 (HTTP) & 5003 (WS) internal ]
## Bob = 3001 [ 5102 (HTTP) & 5103 (WS) internal ]
## Charlie = 3002 [ 5202 (HTTP) & 5203 (WS) internal ]
Expand All @@ -16,10 +16,9 @@
version: '3.8'

services:

##################################################################################
## Alice #########################################################################
##################################################################################
##################################################################################
## Alice #########################################################################
##################################################################################

alice:
container_name: alice
Expand All @@ -41,13 +40,13 @@ services:
#- '5003:5003'
- '3000:3000'
# or via command line arguments
command: --endpoint "http://alice:5002", "ws://alice:5003" --ipfs-origin http://ipfs0:5001 --config /config.json
command: --endpoint "http://alice:5002", "ws://alice:5003" --ipfs-origin http://ipfs0:5001 --config /config.json --persona-title "TA" --persona-color "#eddedf"
networks:
- testnet

##################################################################################
## Bob ###########################################################################
##################################################################################
##################################################################################
## Bob ###########################################################################
##################################################################################

bob:
container_name: bob
Expand All @@ -66,13 +65,13 @@ services:
#- '5102:5002'
#- '5103:5003'
- '3001:3000'
command: --endpoint "http://bob:5002", "ws://bob:5003" --ipfs-origin http://ipfs1:5001 --config /config.json
command: --endpoint "http://bob:5002", "ws://bob:5003" --ipfs-origin http://ipfs1:5001 --config /config.json --persona-title "OEM" --persona-color "#dfedde"
networks:
- testnet

##################################################################################
## Charlie #######################################################################
##################################################################################
##################################################################################
## Charlie #######################################################################
##################################################################################

charlie:
container_name: charlie
Expand All @@ -91,21 +90,21 @@ services:
#- '5202:5002'
#- '5203:5003'
- '3002:3000'
command: --endpoint "http://charlie:5002", "ws://charlie:5003" --ipfs-origin http://ipfs2:5001 --config /config.json
command: --endpoint "http://charlie:5002", "ws://charlie:5003" --ipfs-origin http://ipfs2:5001 --config /config.json --persona-title "Supplier" --persona-color "#dedfed"
networks:
- testnet

##################################################################################
## Cluster PEER 0 ################################################################
##################################################################################
##################################################################################
## Cluster PEER 0 ################################################################
##################################################################################

ipfs0:
container_name: ipfs0
image: ipfs/kubo:release
ports:
# - "4001:4001" # ipfs swarm - expose if needed/wanted
# - "5001:5001" # ipfs api - expose if needed/wanted
- "8080:8080" # ipfs HTTP gateway
# - "4001:4001" # ipfs swarm - expose if needed/wanted
# - "5001:5001" # ipfs api - expose if needed/wanted
- '8080:8080' # ipfs HTTP gateway
volumes:
- ipfs0:/data/ipfs
networks:
Expand All @@ -125,21 +124,21 @@ services:
CLUSTER_RESTAPI_HTTPLISTENMULTIADDRESS: /ip4/0.0.0.0/tcp/9094 # Expose API
CLUSTER_MONITORPINGINTERVAL: 2s # Speed up peer discovery
#ports:
# Open API port (allows ipfs-cluster-ctl usage on host)
# - "9094:9094"
# The cluster swarm port would need to be exposed if this container
# was to connect to cluster peers on other hosts.
# But this is just a testing cluster.
# - "9095:9095" # Cluster IPFS Proxy endpoint
# - "9096:9096" # Cluster swarm endpoint
# Open API port (allows ipfs-cluster-ctl usage on host)
# - "9094:9094"
# The cluster swarm port would need to be exposed if this container
# was to connect to cluster peers on other hosts.
# But this is just a testing cluster.
# - "9095:9095" # Cluster IPFS Proxy endpoint
# - "9096:9096" # Cluster swarm endpoint
volumes:
- cluster0:/data/ipfs-cluster
networks:
- testnet

##################################################################################
## Cluster PEER 1 ################################################################
##################################################################################
##################################################################################
## Cluster PEER 1 ################################################################
##################################################################################

ipfs1:
container_name: ipfs1
Expand All @@ -166,9 +165,9 @@ services:
networks:
- testnet

##################################################################################
## Cluster PEER 2 ################################################################
##################################################################################
##################################################################################
## Cluster PEER 2 ################################################################
##################################################################################

ipfs2:
container_name: ipfs2
Expand Down
30 changes: 15 additions & 15 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@digicatapult/veritable-cloudagent",
"version": "0.4.7",
"version": "0.4.8",
"main": "build/index",
"types": "build/index",
"files": [
Expand Down
10 changes: 10 additions & 0 deletions src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ const parsed = yargs
string: true,
demandOption: true,
})
.option('persona-title', {
string: true,
default: 'Veritable Cloudagent',
})
.option('persona-color', {
string: true,
default: 'white',
})

.config()
.env('AFJ_REST')
Expand Down Expand Up @@ -129,5 +137,7 @@ export async function runCliServer() {
webhookUrl: parsed['webhook-url'],
adminPort: parsed['admin-port'],
ipfsOrigin: parsed['ipfs-origin'],
personaTitle: parsed['persona-title'],
personaColor: parsed['persona-color'],
} as AriesRestConfig)
}
6 changes: 6 additions & 0 deletions src/cliAgent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ export interface AriesRestConfig {
webhookUrl?: string
adminPort: number
ipfsOrigin: string
personaTitle: string
personaColor: string
}

export async function readRestConfig(path: string) {
Expand All @@ -71,6 +73,8 @@ export async function runRestAgent(restConfig: AriesRestConfig) {
autoAcceptMediationRequests = true,
autoAcceptProofs = AutoAcceptProof.ContentApproved,
ipfsOrigin,
personaTitle,
personaColor,
...afjConfig
} = restConfig

Expand Down Expand Up @@ -119,6 +123,8 @@ export async function runRestAgent(restConfig: AriesRestConfig) {
const app = await setupServer(agent, {
webhookUrl,
port: adminPort,
personaTitle,
personaColor,
})

app.listen(adminPort, () => {
Expand Down
18 changes: 17 additions & 1 deletion src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,24 @@ export const setupServer = async (agent: RestAgent, config: ServerConfig) => {
})
)
app.use(bodyParser.json())

app.use('/docs', serve, async (_req: ExRequest, res: ExResponse) => {
return res.send(generateHTML(await import('./routes/swagger.json')))
return res.send(
generateHTML(await import('./routes/swagger.json'), {
...(config.personaColor && {
customCss: `body { background-color: ${config.personaColor} }
.swagger-ui .scheme-container { background-color: inherit }
.swagger-ui .opblock .opblock-section-header { background: inherit }
.topbar { display: none }
.swagger-ui .btn.authorize { background-color: #f7f7f7 }
.swagger-ui .opblock.opblock-post { background: rgba(73,204,144,.3) }
.swagger-ui .opblock.opblock-get { background: rgba(97,175,254,.3) }
.swagger-ui .opblock.opblock-delete { background: rgba(249,62,62,.3) }
.swagger-ui section.models { background-color: #f7f7f7 } `,
}),
...(config.personaTitle && { customSiteTitle: config.personaTitle }),
})
)
})

RegisterRoutes(app)
Expand Down
2 changes: 2 additions & 0 deletions src/utils/ServerConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ export interface ServerConfig {
webhookUrl?: string
/* Socket server is used for sending events over websocket to clients */
socketServer?: Server
personaTitle?: string
personaColor?: string
}

0 comments on commit c0b2ecd

Please sign in to comment.