Skip to content

Draft API specification

Marcel Oomens edited this page Sep 5, 2018 · 5 revisions
module type Pgpmime = {

  type job;
  type key;

  type fileref; /* Either File or Blob, see https://developer.mozilla.org/en-US/docs/Web/API/FileReader */
  type part =
    | fileref
    | string

  let create : ( list(key), ~optimize ) => job;
  let addKeys : (job, list(key) ) => job;
  let enqueue : (job, list(file) ) => job;

  /* String API */
  let yield : (job) => string;

  /* Stream API based on ReadableStream, see https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream.
     This utilizes OpenPGPjs' new stream based cryptography API.
     I might defer this to v2.
  */
  type stream;
  let process : (job) => stream;

  type optimize : int;
  let speed : optimize;
  let memory : optimize;
}

See Design type job; to track state for a discussion on job state.

type job = {
  pubkeys : list(key);
  parts :  list(part);

  /* I might defer this to v2. */
  strategy : optimize;
}
Clone this wiki locally