# XML Tools
Content of this project is a service hosting tools for xml documents including xslt transformer,
xpath selector and xsd validator.

## About project
Service is split into three microservices.
1. JavaSpark web application serving REST API for XSD, XML, XSLT tools 
2. Spring application serving REST mock service
3. Nginx hosting static documents. 

Main page is hosted on port 8086.

## API Documentation
API documentation is available on port 8000/swagger/

## JavaSpark backend
Backend is hosted by default on port 8081. Rest api documentation is contained in OpenApi document
openapi.yml

Rest API accepts xml documents, given querry and processor version to call requested xml engine to perform given
operation and finally returns outcome in response body.

## Flask Python backend

This is module providing support for processing XMLs using libxml library. It consumes same JSON as Java backend.


## Mocked services
MockedServices is a tool that allows developer to create, in easy and simple way, http server mocked endpoints for integration tests

## Frontend
All the static files are available by default on port 8086 and are located within folder.

To preview given document user is required to post GET request to following path:
```aidl
/tools/{document name}
```
Documents are hosted by docker container running on ngix image and to modify container content
one must modify Dockerfile located in Frontend folder. Files published must be located in ngix directory
within created container.

## How to run

### Localy
In order to run application use
```aidl
docker-compose up --build -d
```
Which will launch service on localhost.

### Remote
To launch service on remote host, exchange ssh keys with destination server and declare docker context ex. DEV.
Then use following command
```aidl
docker-compose up --context DEV --build -d 
```
