Methode Article Internal Components Mapper is a Dropwizard application which consumes Kafka events and maps raw Methode articles to internal content components. The transformed content components are put back to Kafka.
This application depends on the following micro-services:
- kafka-proxy
- methode-article-mapper
- document-store-api
- public-concordances-api
Note: methode-article-mapper and public-concordances-api are used to validate the article if it's valid, and linked content in the body. Document-store-api is used for both article validation and to resolve Content Placeholder UUIDs, that are pointing to and FT blog, to the original Wordpress UUID.
java -jar target/methode-article-internal-components-mapper-1.0.0.jar server methode-article-internal-components-mapper.yaml
The transformation which takes place at each valid Kafka message can also be triggered by the /map
endpoint.
The internal components model is documented by the description of this non-public /map
API.
Transformation can be triggered through a POST message containing a Methode article to http://localhost:11070/map
In case the required transformation is triggered to provide an article preview, you need to set a preview
query parameter in the URL with true
as value:
e.g., http://localhost:11070/map?preview=true
A GET request to http://localhost:11071/healthcheck or http://localhost:11070/__health
A GET request to http://localhost:11071/__gtg
Health and gtg are based on methode-article-mapper's health endpoint, and kafka topics' availabilities for reading and writing.
For article validation the service leverages on methode article mapper's /map
endpoint.
You can find an example of a transformed article below.
{
"design": {
"theme": "basic",
"layout": "default"
},
"tableOfContents": {
"sequence": "none",
"labelType": "none"
},
"topper": {
"headline": "Topper headline",
"standfirst": "Topper standfirst",
"backgroundColour": "auto",
"layout": "split-text-left"
},
"leadImages": [
{
"id": "9aa35da4-df1b-11e6-bd9b-bb10c5678253",
"type": "square"
},
{
"id": "ae19a456-df1b-11e6-bd9b-bb10c5678253",
"type": "standard"
},
{
"id": "939f3f1e-df1b-11e6-bd9b-bb10c5678253",
"type": "wide"
}
],
"unpublishedContentDescription": "<p>Content package coming next text</p>",
"bodyXML": "<body><p>Iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur.</p>\n\n<ft-content data-embedded=\"true\" type=\"http://www.ft.com/ontology/content/ImageSet\" url=\"http://api.ft.com/content/b1f14cd8-6ad4-11e7-1740-72a7a34381e5\"></ft-content>\n\n<p>Itaque earum rerum hic tenetur a sapiente delectus.</p>\n</body>",
"summary": {
"bodyXML": "<body><p>Iure reprehenderit qui in ea voluptate velit</p></body>"
}
"uuid": "e7f2eed0-ef92-11e6-abbc-ee7d9c5b3b90",
"lastModified": "2017-03-16T13:51:52.976Z",
"publishReference": "tid_xhwijstdot"
}