Skip to content

Instantly share code, notes, and snippets.

@david-bc
Last active December 30, 2016 16:42
Show Gist options
  • Save david-bc/f0179ac16c2a9c537b10bd15d1325714 to your computer and use it in GitHub Desktop.
Save david-bc/f0179ac16c2a9c537b10bd15d1325714 to your computer and use it in GitHub Desktop.

Setup

// TODO

Demo

User Input > REST

http --port=8844 --spring.cloud.stream.bindings.output.contentType='application/json' > :userRestIn
:userRestIn > log

Input

POST: http://localhost:8844/
{
	"testing": false,
	"op": "CREATE",
	"user": {
		"id": 0,
		"username": "davide",
		"email": "[email protected]",
		"suspended": false,
		"favNum": 44
	}
}

Example Log:

{
	"testing": false,
	"op": "CREATE",
	"user": {
		"id": 0,
		"username": "davide",
		"email": "[email protected]",
		"suspended": false,
		"favNum": 44
	}
}

User Events

:userRestIn > scriptable-transform --language=javascript --script="function convertOperation(op) {\n return op;\n}\n\nvar proEvent = JSON.parse(payload);\n\nvar eventHeader = {\n operation: convertOperation(proEvent.op),\n time: new Date(),\n type: ""USER"",\n provider: ""demoDirectory""\n};\n\nvar userEvent = {\n header: eventHeader,\n body: proEvent.user,\n raw: payload\n};\n\nJSON.stringify(userEvent);" > :eventBus
:eventBus > log

User to Global Event Transformer

function convertOperation(op) {
 return op;
}

var proEvent = JSON.parse(payload);

var eventHeader = {
 operation: convertOperation(proEvent.op),
 time: new Date(),
 type: "USER",
 provider: "demoDirectory"
};

var userEvent = {
 header: eventHeader,
 body: proEvent.user,
 raw: payload
};

JSON.stringify(userEvent);

Example Log

{
    "header": {
        "operation": "CREATE",
        "time": "2016-12-23T20:01:37.963Z",
        "type": "USER",
        "provider": "demoDirectory"
    },
    "body": {
        "id": 0,
        "username": "davide",
        "email": "[email protected]",
        "suspended": false,
        "favNum": 44
    },
    "raw": "{\n\t\"testing\": true,\n\t\"op\": \"CREATE\",\n\t\"user\": {\n\t\t\"id\": 0,\n\t\t\"username\": \"davide\",\n\t\t\"email\": \"[email protected]\",\n\t\t\"suspended\": false,\n\t\t\"favNum\": 44\n\t}\n}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment