001package com.plivo.api.models.call.actions;
002
003import com.plivo.api.PlivoClient;
004import com.plivo.api.exceptions.PlivoRestException;
005import com.plivo.api.models.base.VoiceCreator;
006
007import java.io.IOException;
008
009public class CallStreamCreator extends VoiceCreator<CallStreamCreateResponse> {
010
011  private final String id;
012  private String serviceUrl;
013  private Boolean bidirectional;
014  private String audioTrack;
015  private Integer streamTimeout;
016  private String statusCallbackUrl;
017  private String statusCallbackMethod;
018  private String contentType;
019  private String extraHeaders;
020
021  public CallStreamCreator(String id, String serviceUrl) {
022    this.id = id;
023    this.serviceUrl = serviceUrl;
024  }
025
026  @Override
027  protected retrofit2.Call<CallStreamCreateResponse> obtainCall() {
028    return client().getVoiceApiService().callStreamCreate(client().getAuthId(), id, this);
029  }
030
031  @Override
032  protected retrofit2.Call<CallStreamCreateResponse> obtainFallback1Call() {
033    return client().getVoiceFallback1Service().callStreamCreate(client().getAuthId(), id, this);
034  }
035
036  @Override
037  protected retrofit2.Call<CallStreamCreateResponse> obtainFallback2Call() {
038    return client().getVoiceFallback2Service().callStreamCreate(client().getAuthId(), id, this);
039  }
040
041  public CallStreamCreateResponse stream() throws IOException, PlivoRestException {
042    return create();
043  }
044
045  @Override
046  public CallStreamCreator client(final PlivoClient plivoClient) {
047    this.plivoClient = plivoClient;
048    return this;
049  }
050
051  public CallStreamCreator serviceUrl(final String serviceUrl) {
052    this.serviceUrl = serviceUrl;
053    return this;
054  }
055
056  public CallStreamCreator bidirectional(final Boolean bidirectional) {
057    this.bidirectional = bidirectional;
058    return this;
059  }
060  public CallStreamCreator audioTrack(final String audioTrack) {
061    this.audioTrack = audioTrack;
062    return this;
063  }
064  public CallStreamCreator streamTimeout(final Integer streamTimeout) {
065    this.streamTimeout = streamTimeout;
066    return this;
067  }
068  public CallStreamCreator statusCallbackUrl(final String statusCallbackUrl) {
069    this.statusCallbackUrl = statusCallbackUrl;
070    return this;
071  }
072  public CallStreamCreator statusCallbackMethod(final String statusCallbackMethod) {
073    this.statusCallbackMethod = statusCallbackMethod;
074    return this;
075  }
076
077  public CallStreamCreator contentType(final String contentType) {
078    this.contentType = contentType;
079    return this;
080  }
081
082  public CallStreamCreator extraHeaders(final String extraHeaders) {
083    this.extraHeaders = extraHeaders;
084    return this;
085  }
086
087  public String serviceUrl() {
088    return this.serviceUrl;
089  }
090
091  public Boolean bidirectional() {
092    return this.bidirectional;
093  }
094
095  public String audioTrack() {
096    return this.audioTrack;
097  }
098
099  public Integer streamTimeout() {
100    return this.streamTimeout;
101  }
102
103  public String statusCallbackUrl() {
104    return this.statusCallbackUrl;
105  }
106
107  public String statusCallbackMethod() {
108    return this.statusCallbackMethod;
109  }
110
111  public String contentType() {
112    return this.contentType;
113  }
114
115  public String extraHeaders() {
116    return this.extraHeaders;
117  }
118}