Skip to content

Commit

Permalink
feat: Use handleMessage instead of validateMessage
Browse files Browse the repository at this point in the history
  • Loading branch information
simonas-notcat committed Mar 30, 2020
1 parent 45a4da2 commit 75fb74a
Show file tree
Hide file tree
Showing 18 changed files with 205 additions and 185 deletions.
10 changes: 3 additions & 7 deletions examples/expressjs-ethr/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,14 @@ async function main() {
app.post(messagingEndpoint, express.text({ type: '*/*' }), async (req, res) => {
try {
// This will trigger Daf.EventTypes.validatedMessage
const result = await core.validateMessage(
new Daf.Message({ raw: req.body, meta: { type: 'serviceEndpoint', value: serviceEndpoint } }),
)
const result = await core.handleMessage({ raw: req.body })
res.json({ id: result.id })
} catch (e) {
res.send(e.message)
}
})

core.on(Daf.EventTypes.validatedMessage, async (message: Daf.Message) => {
await dataStore.saveMessage(message)

core.on(Daf.EventTypes.savedMessage, async (message: Daf.Message) => {
if (message.type === W3C.MessageTypes.vp && message.threadId) {
// TODO check for required vcs

Expand Down Expand Up @@ -188,7 +184,7 @@ async function main() {
res.render('about', { views, url })
})

app.get('/public-profile', async(req, res) => {
app.get('/public-profile', async (req, res) => {
// Sign verifiable presentation
const jwt = await core.handleAction({
type: W3C.ActionTypes.signVc,
Expand Down
50 changes: 25 additions & 25 deletions examples/expressjs-ethr/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -613,57 +613,57 @@ cross-fetch@^3.0.4:
node-fetch "2.6.0"
whatwg-fetch "3.0.0"

daf-core@../../packages/daf-core, daf-core@^3.0.2:
version "3.0.2"
daf-core@../../packages/daf-core, daf-core@^4.0.0-beta.15+00f0d2f:
version "4.0.0-beta.15"
dependencies:
blakejs "^1.1.0"
debug "^4.1.1"
events "^3.0.0"
typeorm "^0.2.24"

daf-data-store@../../packages/daf-data-store, daf-data-store@^3.0.2:
version "3.0.2"
daf-data-store@../../packages/daf-data-store, daf-data-store@^4.0.0-beta.15+00f0d2f:
version "4.0.0-beta.15"
dependencies:
blakejs "^1.1.0"
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
sql-bricks-sqlite "^0.1.0"

daf-debug@../../packages/daf-debug:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"

daf-did-comm@../../packages/daf-did-comm:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
uuid "^3.3.3"

daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^3.0.2:
version "3.0.2"
daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^4.0.0-beta.15+00f0d2f:
version "4.0.0-beta.15"
dependencies:
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt "^4.0.0"
did-resolver "^1.1.0"

daf-ethr-did@../../packages/daf-ethr-did:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
ethjs-provider-signer "^0.1.4"
ethr-did "^1.1.0"
js-sha3 "^0.8.0"

daf-libsodium@../../packages/daf-libsodium:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
base-58 "^0.0.1"
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt "^4.0.0"
elliptic "^6.5.2"
Expand All @@ -686,28 +686,28 @@ daf-resolver@../../packages/daf-resolver:
web-did-resolver "^1.2.0"

daf-selective-disclosure@../../packages/daf-selective-disclosure:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
blakejs "^1.1.0"
daf-core "^3.0.2"
daf-data-store "^3.0.2"
daf-did-jwt "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
daf-data-store "^4.0.0-beta.15+00f0d2f"
daf-did-jwt "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt "^4.0.0"

daf-url@../../packages/daf-url:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
daf-core "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
url-parse "^1.4.7"

daf-w3c@../../packages/daf-w3c:
version "3.0.2"
version "4.0.0-beta.15"
dependencies:
blakejs "^1.1.0"
daf-core "^3.0.2"
daf-did-jwt "^3.0.2"
daf-core "^4.0.0-beta.15+00f0d2f"
daf-did-jwt "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt-vc "^0.1.3"
did-resolver "^1.1.0"
Expand Down
10 changes: 3 additions & 7 deletions examples/rest-api/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import express from 'express'
const app = express()
const port = process.env.PORT || 8080
import { Message, Entities } from 'daf-core'
import { Entities } from 'daf-core'
import { createConnection } from 'typeorm'

import { core } from './setup'
Expand Down Expand Up @@ -39,13 +39,9 @@ app.post('/handle-action', express.json(), async (req, res) => {
// This endpoint would be published in did doc as a serviceEndpoint
app.post('/handle-message', express.text({ type: '*/*' }), async (req, res) => {
try {
const message = await core.validateMessage(
new Message({ raw: req.body, meta: { type: 'serviceEndpoint', value: 'handle-message' } }),
)
const message = await core.handleMessage({ raw: req.body })

//Entities are decorated with the `save()` method to trigger an upsert in the local database
await message.save()
// now you can store this message or pass through to some webhook
// add your business logic here

res.json({ id: message.id })
} catch (e) {
Expand Down
31 changes: 16 additions & 15 deletions examples/rest-api/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -435,51 +435,51 @@ crypto-random-string@^1.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=

daf-core@../../packages/daf-core, daf-core@^2.3.19:
version "2.3.19"
daf-core@../../packages/daf-core, daf-core@^4.0.0-beta.15+00f0d2f:
version "4.0.0-beta.15"
dependencies:
blakejs "^1.1.0"
debug "^4.1.1"
events "^3.0.0"
typeorm "^0.2.24"

daf-did-comm@../../packages/daf-did-comm:
version "2.3.19"
version "4.0.0-beta.15"
dependencies:
daf-core "^2.3.19"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
uuid "^3.3.3"

daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^2.3.19:
version "2.3.19"
daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^4.0.0-beta.15+00f0d2f:
version "4.0.0-beta.15"
dependencies:
daf-core "^2.3.19"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt "^4.0.0"
did-resolver "^1.1.0"

daf-ethr-did@../../packages/daf-ethr-did:
version "2.3.19"
version "4.0.0-beta.15"
dependencies:
daf-core "^2.3.19"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
ethjs-provider-signer "^0.1.4"
ethr-did "^1.1.0"
js-sha3 "^0.8.0"

daf-libsodium@../../packages/daf-libsodium:
version "2.3.19"
version "4.0.0-beta.15"
dependencies:
base-58 "^0.0.1"
daf-core "^2.3.19"
daf-core "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt "^4.0.0"
elliptic "^6.5.2"
ethjs-signer "^0.1.1"
libsodium-wrappers "^0.7.6"

daf-resolver@../../packages/daf-resolver:
version "2.3.18"
version "3.0.1"
dependencies:
debug "^4.1.1"
did-resolver "^1.1.0"
Expand All @@ -488,10 +488,11 @@ daf-resolver@../../packages/daf-resolver:
web-did-resolver "^1.2.0"

daf-w3c@../../packages/daf-w3c:
version "2.3.19"
version "4.0.0-beta.15"
dependencies:
daf-core "^2.3.19"
daf-did-jwt "^2.3.19"
blakejs "^1.1.0"
daf-core "^4.0.0-beta.15+00f0d2f"
daf-did-jwt "^4.0.0-beta.15+00f0d2f"
debug "^4.1.1"
did-jwt-vc "^0.1.3"
did-resolver "^1.1.0"
Expand Down
4 changes: 2 additions & 2 deletions packages/daf-cli/src/credential.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ program
const jwt = await core.handleAction(signAction)

if (!cmd.send) {
await core.validateMessage(new Daf.Message({ raw: jwt, meta: { type: 'cli' } }))
await core.handleMessage({ raw: jwt, metaData: [{ type: 'cli' }] })
} else {
const sendAction: DIDComm.ActionSendJWT = {
type: DIDComm.ActionTypes.sendJwt,
Expand Down Expand Up @@ -208,7 +208,7 @@ program
const jwt = await core.handleAction(signAction)

if (!cmd.send) {
await core.validateMessage(new Daf.Message({ raw: jwt, meta: { type: 'cli' } }))
await core.handleMessage({ raw: jwt, metaData: [{ type: 'cli' }] })
} else {
const sendAction: DIDComm.ActionSendJWT = {
type: DIDComm.ActionTypes.sendJwt,
Expand Down
7 changes: 1 addition & 6 deletions packages/daf-cli/src/msg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,7 @@ program
.description('Handle raw message (JWT)')
.action(async raw => {
try {
const message = await core.validateMessage(
new Daf.Message({
raw,
meta: { type: 'cli' },
}),
)
const message = await core.handleMessage({ raw, metaData: [{ type: 'cli' }] })
console.log(message)
} catch (e) {
console.error(e.message)
Expand Down
2 changes: 1 addition & 1 deletion packages/daf-cli/src/sdr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ program
const jwt = await core.handleAction(signAction)

if (!cmd.send) {
await core.validateMessage(new Daf.Message({ raw: jwt, meta: { type: 'cli' } }))
await core.handleMessage({ raw: jwt, metaData: [{ type: 'cli' }] })
} else if (answers.sub !== '') {
const sendAction: DIDComm.ActionSendJWT = {
type: DIDComm.ActionTypes.sendJwt,
Expand Down
2 changes: 1 addition & 1 deletion packages/daf-cli/src/services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ program
})

export const listen = async (pollSeconds?: number) => {
core.on(EventTypes.validatedMessage, async (msg: Message) => {
core.on(EventTypes.savedMessage, async (msg: Message) => {
console.log('New message type:', msg.type)
})

Expand Down
5 changes: 0 additions & 5 deletions packages/daf-cli/src/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,3 @@ export const initializeDb = async () => {
})
}
export const dataStore = new DataStore()

core.on(Daf.EventTypes.validatedMessage, async (message: Daf.Message) => {
debug('New message %O', message)
// await message.save()
})
42 changes: 21 additions & 21 deletions packages/daf-core/src/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { ServiceControllerDerived } from './service/abstract-service-controller'
import { MessageValidator, unsupportedMessageTypeError } from './message/abstract-message-validator'
import { ActionHandler } from './action/action-handler'
import { Action } from './types'
import { Message } from './entities/message'
import { Message, MetaData } from './entities/message'

import Debug from 'debug'
const debug = Debug('daf:core')
Expand Down Expand Up @@ -63,20 +63,23 @@ export class Core extends EventEmitter {

async listen() {
debug('Listening for new messages')
this.serviceManager.on(ServiceEventTypes.NewMessages, this.validateMessages.bind(this))
this.serviceManager.on(ServiceEventTypes.NewMessages, this.handleServiceMessages.bind(this))
this.serviceManager.listen()
}

async getMessagesSince(ts: LastMessageTimestampForInstance[]): Promise<Message[]> {
const rawMessages = await this.serviceManager.getMessagesSince(ts)
return this.validateMessages(rawMessages)
return this.handleServiceMessages(rawMessages)
}

public async validateMessages(messages: Message[]): Promise<Message[]> {
private async handleServiceMessages(messages: Message[]): Promise<Message[]> {
const result: Message[] = []
for (const message of messages) {
try {
const validMessage = await this.validateMessage(message)
const validMessage = await this.handleMessage({
raw: message.raw,
metaData: message.metaData,
})
result.push(validMessage)
} catch (e) {}
}
Expand All @@ -103,25 +106,22 @@ export class Core extends EventEmitter {
return Promise.reject(unsupportedMessageTypeError)
}


public async saveNewMessage(input: {
public async handleMessage({
raw,
metaData,
save = true,
}: {
raw: string
metaDataType?: string
metaDataValue?: string
save?: boolean
metaData?: MetaData[]
}): Promise<Message> {
try {
const message = await this.validateMessage(
new Message({
raw: input.raw,
meta: {
type: input.metaDataType,
value: input.metaDataValue,
},
}),
)
await message.save()
debug('Emitting event', EventTypes.savedMessage)
this.emit(EventTypes.savedMessage, message)
const message = await this.validateMessage(new Message({ raw, metaData }))
if (save) {
await message.save()
debug('Emitting event', EventTypes.savedMessage)
this.emit(EventTypes.savedMessage, message)
}
return message
} catch (error) {
this.emit(EventTypes.error, error)
Expand Down
Loading

0 comments on commit 75fb74a

Please sign in to comment.