@@ -0,0 +1,2575 @@
+package com.filestack;%0A%0Aimport com.filestack.transforms.Transform;%0Aimport com.filestack.util.FsService;%0Aimport io.reactivex.Scheduler;%0Aimport io.reactivex.schedulers.Schedulers;%0A%0A/**%0A * Holds config common to %7B@link FsClient%7D, %7B@link FsFile%7D, and %7B@link Transform%7D classes.%0A */%0Apublic class FsConfig %7B%0A  protected final FsService service;%0A  protected final Scheduler subScheduler;%0A  protected final Scheduler obsScheduler;%0A  protected final String apiKey;%0A  protected final String policy;%0A  protected final String signature;%0A%0A  /** Configures and builds new immutable instance. */%0A  @SuppressWarnings(%22unchecked%22)%0A  public static class Builder%3CT extends Builder%3CT%3E%3E %7B%0A    protected FsService fsService;%0A    protected Scheduler subScheduler;%0A    protected Scheduler obsScheduler;%0A    protected String apiKey;%0A    protected String policy;%0A    protected String signature;%0A%0A    public T fsService(FsService fsService) %7B%0A      this.fsService = fsService;%0A      return (T) this;%0A    %7D%0A%0A    public T subScheduler(Scheduler subScheduler) %7B%0A      this.subScheduler = subScheduler;%0A      return (T) this;%0A    %7D%0A%0A    public T obsScheduler(Scheduler obsScheduler) %7B%0A      this.obsScheduler = obsScheduler;%0A      return (T) this;%0A    %7D%0A%0A    public T security(String policy, String signature) %7B%0A      this.policy = policy;%0A      this.signature = signature;%0A      return (T) this;%0A    %7D%0A%0A    public T apiKey(String apiKey) %7B%0A      this.apiKey = apiKey;%0A      return (T) this;%0A    %7D%0A%0A    /** Builds new instance, setting defaults for any null requirements. */%0A    public FsConfig build() %7B%0A      if (fsService == null) %7B%0A        fsService = new FsService();%0A      %7D%0A      if (subScheduler == null) %7B%0A        subScheduler = Schedulers.io();%0A      %7D%0A      if (obsScheduler == null) %7B%0A        obsScheduler = Schedulers.computation();%0A      %7D%0A      return new FsConfig(this);%0A    %7D%0A  %7D%0A%0A  protected FsConfig(Builder%3C?%3E builder) %7B%0A    service = builder.fsService;%0A    subScheduler = builder.subScheduler;%0A    obsScheduler = builder.obsScheduler;%0A    apiKey = builder.apiKey;%0A    policy = builder.policy;%0A    signature = builder.signature;%0A  %7D%0A%0A  public FsService getService() %7B%0A    return service;%0A  %7D%0A%0A  public Scheduler getSubScheduler() %7B%0A    return subScheduler;%0A  %7D%0A%0A  public Scheduler getObsScheduler() %7B%0A    return obsScheduler;%0A  %7D%0A%0A  public String getApiKey() %7B%0A    return apiKey;%0A  %7D%0A%0A  public boolean hasSecurity() %7B%0A    return policy != null && signature != null;%0A  %7D%0A%0A  public String getPolicy() %7B%0A    return policy;%0A  %7D%0A%0A  public String getSignature() %7B%0A    return signature;%0A  %7D%0A%7D%0A

Add new class to store common config