-
Klaus Fischer authoredKlaus Fischer authored
IFluentApi.cs 2.70 KiB
using System;
using System.Collections.Generic;
using FitConnect.Models;
namespace FitConnect;
public interface IFluentSender {
/// <summary>
/// Configures the client for the given destination and loads the public key
/// </summary>
/// <param name="destinationId">unique identifier of the clients destination</param>
/// <returns>the upload step for attachments</returns>
public IFluentSenderWithDestination WithDestination(string destinationId);
public IFluentSenderWithData WithData(string data);
/// <summary>
/// Send submission to FIT-Connect API.
/// </summary>
/// <returns>submitted submission</returns>
public Submission Submit();
}
public interface IFluentSenderWithDestination {
/// <summary>
/// Sends the submission with a list of attachments
/// </summary>
/// <param name="attachments">that are sent with the submission</param>
/// <returns>the step where additional data can be added to the submission</returns>
public IFluentSenderWithAttachments WithAttachments(IEnumerable<Attachment> attachments);
}
public interface IFluentSenderWithAttachments : IFluentSenderReady {
/// <summary>
/// Data as string.
/// </summary>
/// <param name="data">json or xml as string</param>
/// <returns>next step to submit the data</returns>
public IFluentSenderWithData WithData(string data);
}
public interface IFluentSenderWithData : IFluentSenderReady {
}
public interface IFluentSenderReady {
/// <summary>
/// Send submission to FIT-Connect API.
/// </summary>
/// <returns>submitted submission</returns>
public IFluentSender Submit();
}
public interface IFluentSubscriber {
/// <summary>
/// Loads a list of available Submissions that were submitted to the subscriber.
/// </summary>
/// <returns>List of available submissions for pickup</returns>
public IEnumerable<string> GetAvailableSubmissions(string? destinationId = null);
/// <summary>
/// Loads a single Submission by id.
/// </summary>
/// <param name="submissionId">unique identifier of a <see cref="Submission"/></param>
/// <returns></returns>
public IFluentSubscriberWithSubmission RequestSubmission(string submissionId);
}
public interface IFluentSubscriberWithSubmission {
public Submission Submission { get; }
/// <summary>
/// Loads the <see cref="Attachment"/>s for the given <see cref="Submission"/>.
/// </summary>
/// <param name="canSubmitSubmission">Function that returns a boolean if the <see cref="Submission"/> can be confirmed</param>
/// <returns></returns>
public IFluentSenderWithAttachments GetAttachments(
Func<IEnumerable<Attachment>, bool> canSubmitSubmission);
}