Skip to content

ks-no/fiks-streaming-klient

Repository files navigation

Streaming for multipart requests

Maven Central GitHub GitHub issues GitHub Release Date Latest GitHub release

Bruker Fiks-Maskinporten for autorisering og Jetty HttpClient for sending av multipart requests.

Eksempel på bruk av fiks-streaming-klient ved opplasting av json-data og en fil med tilhørende metadata:

package no.ks.fiks.streaming.klient;

import com.fasterxml.jackson.core.type.TypeReference;
import no.ks.fiks.streaming.klient.authentication.AuthenticationStrategy;
import org.eclipse.jetty.client.util.MultiPartContentProvider;
import org.eclipse.jetty.http.HttpMethod;

import java.io.InputStream;
import java.util.Collections;
import java.util.List;

import static java.util.concurrent.TimeUnit.MINUTES;

public class Eksempel {

  private StreamingKlient streamingKlient;

  private String baseUrl = "https://example.com:443";
  private String path = "/api/endepunkt";

  public class MinMetadata {
    String filnavn = "filnavn.pdf";
    String mimetype = "application/pdf";
    String ekstraInfo = "ekstra";
  }

  public Eksempel(AuthenticationStrategy authenticationStrategy) {
    streamingKlient = new StreamingKlient(authenticationStrategy, 15L, MINUTES);
  }

  public KlientResponse<String> eksempelRequest(String jsonData, InputStream inputStream, String filnavn, MinMetadata minMetadata) {
    FilForOpplasting<Object> minFil = FilForOpplasting.builder()
            .filnavn(filnavn)
            .metadata(minMetadata)
            .data(inputStream)
            .build();

    MultipartContentProviderBuilder multipartBuilder = new MultipartContentProviderBuilder();
    multipartBuilder.addFieldPart(jsonData, "jsonData");
    multipartBuilder.addFileData(minFil);
    MultiPartContentProvider multiPartContentProvider = multipartBuilder.build();

    List<HttpHeader> httpHeaders = Collections.singletonList(HttpHeader.builder().headerName("MinHttpHeader").headerValue("value").build());

    TypeReference<String> returtypeApiResponse = new TypeReference<String>() {};

    return streamingKlient.sendRequest(multiPartContentProvider, HttpMethod.POST, baseUrl, path, httpHeaders, returtypeApiResponse);
  }
}