Skip to content
Snippets Groups Projects

Client Module

Commandline Client

The sdk comes with a commandline client to be able to use the sdk without any coding.

Setup & Build

  1. Build project root wih ./mvnw clean package
  2. Go to client/target and find a runnable jar client-VERSION.jar
  3. Provide config yaml:
    1. set environment variable FIT_CONNECT_CONFIG:
      1. Linux/MacOS: export FIT_CONNECT_CONFIG=path/to/config.yml
      2. Windows: set FIT_CONNECT_CONFIG=C:\Path\To\config.yml
    2. Initialize client via ApplicationConfigLoader:
      var config = ApplicationConfigLoader.loadConfig("absolute/path/to/config.yml");
      var senderClient = ClientFactory.senderClient(config);
    3. put config.yml in same path as the .jar-file
  4. run client with java -jar client-VERSION.jar [COMMAND] [OPTIONS]

SEND Example

The send command submits a new submission to a destination. Apart from optional attachments, all options are mandatory.

java -jar client-1.0-SNAPSHOT.jar send 
    --destinationId=1b7d1a24-a6c8-4050-bb71-ae3749ec432f 
    --serviceName=Test 
    --leikaKey=urn:de:fim:leika:leistung:99400048079000 
    --attachments="C:/path/to/attachments/dummy1.pdf", "C:/path/to/attachments/dummy2.pdf"
    --data="C:/path/to/data/date.json" 
    --dataType=json

Hint: copy example on one line for execution !

LIST Submissions Example

The list command lists all submissionIds for a given destinationID.

java -jar client-1.0-SNAPSHOT.jar list --destinationID=1b7d1a24-a6c8-4050-bb71-ae3749ec432f 

GET Single Submission Example

The get command loads a submission by submissionId and stores data and attachments in the given target location. If no target is set, the cmd-client saves the data into in a folder named by the submissionId within the working dir of the runnable jar.

java -jar client-1.0-SNAPSHOT.jar get --submissionID=cc9b9b3c-d4b1-4ac7-a70b-e7ca76e88608 --target=Users/submissions/data

Batch Mode

To send multiple submission with a single command, the client can be used in batch mode:

java -jar client-1.0-SNAPSHOT.jar batch --data=batch_data.csv

Currently, the import of CSV is supported. Follow the schema below, setting up your data:

destinationId, serviceName, leikaKey, data, dataType, attachments
1b7d1a24-a6c8-4050-bb71-ae3749ec432f, Test1, "urn:de:fim:leika:leistung:99400048079000", /path/to/data/data.json, "JSON", "path/to/attachment/report1.pdf, path/to/attachment/report2.pdf"
1b7d1a24-a6c8-4050-bb71-ae3749ec432d, Test2, "urn:de:fim:leika:leistung:99400048079000", /path/to/data/data2.xml, "XML", "path/to/attachment/report.pdf"

Windows paths: escape windows paths with \\, e.g. C:\\path\\to\\file\\file.txt !

Usage And Commands

Usage: <main class> [command] [command options]
  Commands:
    send      Send a submission
      Usage: send [options]
        Options:
          --attachments
            Attachments as list of paths
            Default: []
        * --data
            Path to JSON or XML data
        * --dataType
            Data mime type (json/xml), default JSON
            Possible Values: [json, xml]
        * --destinationId
            Unique destination identifier in UUID format
        * --leikaKey
            The LeikaKey of the service type
        * --serviceName
            Name of the service type

    list      Lists available submissions
      Usage: list [options]
        Options:
        * --destinationId
            Unique destination identifier in UUID format

    get      Fetches one submission by id
      Usage: get [options]
        Options:
        * --submissionId
            Unique submission identifier in UUID format
          --target
            Target folder where attachments and data is written to

    all      Fetches all available submission for a destination
      Usage: all [options]
        Options:
        * --destinationId
            Unique destination identifier in UUID format
          --target
            Target folder where attachments and data is written to

    batch      Send a batch of configured submissions from a csv file
      Usage: batch [options]
        Options:
        * --data
            Path to submission data as csv

API Flow

The ClientFactory provides fluent API clients for both Sender and Subscriber.

As the flow chart below shows, the fluent client guides through all essential calls in order to hand in a correct submission as well as receive submissions on the subscriber side.

Api client flow for sending a submission

For the actual sender client those calls look like this:

Workflow Java sample calls

flowchart TD

A[Create Client] --> B(Provide DestinationID)
B -->|next| C[Add Service Type]
C -->|next| D[Add Attachments]
D -->|next| E[Add Data]
C -->|next| E[Add Data]
E -->|send| F[SubmissionForPickup]

ClientFactory.senderClient()
        .withDestination(UUID.randomUUID())
        .withServiceType("ServiceName", "leika:key:service")
        .withAttachments(attachments)
        .withJsonData("{ caseSpecific: 'Data' }")
        .submit();

Api client flow for subscribing to a submission

Workflow Java sample calls
flowchart TD

A[Create Client] --> B(Poll List ofAvailable Submissions)
A[Create Client] --> C(Request Submission by ID)
B -->|next| C[Request Submission by ID]
C -->|get| D[Attachments]
C -->|get| E[Metadata]
C -->|get| F[Data]

    var client = ClientFactory.subscriberClient();

    var submissions = client.getAvailableSubmissions(destinationId);
    // filter submission list for requested one ...
            
    var submission = client.requestSubmission(submissionId)
    submission.getAttachments();
    submission.getMetadata();
    submission.getData();