From 2c50d68e3eccaa02689ca5f8123ce268004035d9 Mon Sep 17 00:00:00 2001 From: Dmitry Kiru Date: Mon, 3 Sep 2018 16:15:27 +0400 Subject: [PATCH 1/5] Provide easy way to override BASE_URL to allow functional application testing #37 --- src/main/java/com/plivo/api/PlivoClient.java | 17 +++++++++++++++-- src/test/java/com/plivo/api/BaseTest.java | 3 +-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/plivo/api/PlivoClient.java b/src/main/java/com/plivo/api/PlivoClient.java index 7e599298..91973cf9 100644 --- a/src/main/java/com/plivo/api/PlivoClient.java +++ b/src/main/java/com/plivo/api/PlivoClient.java @@ -95,6 +95,7 @@ public void serialize(Enum value, JsonGenerator gen, SerializerProvider provider .setLevel(Level.BODY); private final String authId; private final String authToken; + private final String baseUrl; private OkHttpClient httpClient; private Retrofit retrofit; private PlivoAPIService apiService = null; @@ -103,6 +104,17 @@ public PlivoClient(String authId, String authToken) { this(authId, authToken, new Builder()); } + public PlivoClient(String authId, String authToken, String baseUrl) { + this(authId, authToken, baseUrl, new Builder()); + } + + /** + * Constructor left for backward compatibility + */ + public PlivoClient(String authId, String authToken, OkHttpClient.Builder httpClientBuilder) { + this(authId, authToken, BASE_URL, new Builder()); + } + /** * Constructs a new PlivoClient instance. To set a proxy, timeout etc, you can pass in an OkHttpClient.Builder, on which you can set * the timeout and proxy using: @@ -117,13 +129,14 @@ public PlivoClient(String authId, String authToken) { * @param authToken * @param httpClientBuilder */ - public PlivoClient(String authId, String authToken, OkHttpClient.Builder httpClientBuilder) { + public PlivoClient(String authId, String authToken, String baseUrl, OkHttpClient.Builder httpClientBuilder) { if (!(Utils.isAccountIdValid(authId) || Utils.isSubaccountIdValid(authId))) { throw new IllegalArgumentException("invalid account ID"); } this.authId = authId; this.authToken = authToken; + this.baseUrl = baseUrl; httpClient = httpClientBuilder .addNetworkInterceptor(interceptor) @@ -159,7 +172,7 @@ public PlivoClient(String authId, String authToken, OkHttpClient.Builder httpCli retrofit = new Retrofit.Builder() .client(httpClient) - .baseUrl(BASE_URL) + .baseUrl(baseUrl) .addConverterFactory(JacksonConverterFactory.create(objectMapper)) .build(); diff --git a/src/test/java/com/plivo/api/BaseTest.java b/src/test/java/com/plivo/api/BaseTest.java index e90c41f9..9fe1d748 100644 --- a/src/test/java/com/plivo/api/BaseTest.java +++ b/src/test/java/com/plivo/api/BaseTest.java @@ -79,8 +79,7 @@ public void setUp() throws Exception { server = new MockWebServer(); server.start(); - PlivoClient.BASE_URL = server.url("/").toString(); - Plivo.init(authId, authToken); + Plivo.init(authId, authToken, server.url("/").toString()); Plivo.getClient().setTesting(true); } From 785b509d1d2fbd22a0c1fc33d63c8a36d8b3ddde Mon Sep 17 00:00:00 2001 From: Dmitry Kiru Date: Mon, 3 Sep 2018 16:34:43 +0400 Subject: [PATCH 2/5] Fix tests --- src/main/java/com/plivo/api/Plivo.java | 10 +++++++++- src/main/java/com/plivo/api/PlivoClient.java | 6 ++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/plivo/api/Plivo.java b/src/main/java/com/plivo/api/Plivo.java index 79320087..83ca6f10 100644 --- a/src/main/java/com/plivo/api/Plivo.java +++ b/src/main/java/com/plivo/api/Plivo.java @@ -8,10 +8,18 @@ public class Plivo { * Initializes the global {@link PlivoClient} instance */ public static synchronized PlivoClient init(String authId, String authToken) { - instance = new PlivoClient(authId, authToken); + return init(authId, authToken, PlivoClient.BASE_URL); + } + + /** + * Initializes the global {@link PlivoClient} instance + */ + public static synchronized PlivoClient init(String authId, String authToken, String baseUrl) { + instance = new PlivoClient(authId, authToken, baseUrl); return instance; } + /** * Initializes the global {@link PlivoClient} instance, taking the authId and authToken from * environment variables called PLIVO_AUTH_ID and PLIVO_AUTH_TOKEN. diff --git a/src/main/java/com/plivo/api/PlivoClient.java b/src/main/java/com/plivo/api/PlivoClient.java index 91973cf9..ce3dc285 100644 --- a/src/main/java/com/plivo/api/PlivoClient.java +++ b/src/main/java/com/plivo/api/PlivoClient.java @@ -95,13 +95,12 @@ public void serialize(Enum value, JsonGenerator gen, SerializerProvider provider .setLevel(Level.BODY); private final String authId; private final String authToken; - private final String baseUrl; private OkHttpClient httpClient; private Retrofit retrofit; private PlivoAPIService apiService = null; public PlivoClient(String authId, String authToken) { - this(authId, authToken, new Builder()); + this(authId, authToken, BASE_URL, new Builder()); } public PlivoClient(String authId, String authToken, String baseUrl) { @@ -112,7 +111,7 @@ public PlivoClient(String authId, String authToken, String baseUrl) { * Constructor left for backward compatibility */ public PlivoClient(String authId, String authToken, OkHttpClient.Builder httpClientBuilder) { - this(authId, authToken, BASE_URL, new Builder()); + this(authId, authToken, BASE_URL, httpClientBuilder); } /** @@ -136,7 +135,6 @@ public PlivoClient(String authId, String authToken, String baseUrl, OkHttpClient this.authId = authId; this.authToken = authToken; - this.baseUrl = baseUrl; httpClient = httpClientBuilder .addNetworkInterceptor(interceptor) From e0addfc9ac50533541129e898951ea34c35efa06 Mon Sep 17 00:00:00 2001 From: Dmitry Kiru Date: Mon, 3 Sep 2018 16:44:40 +0400 Subject: [PATCH 3/5] Revert passing baseUrl to PlivoClient in tests --- src/test/java/com/plivo/api/BaseTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/plivo/api/BaseTest.java b/src/test/java/com/plivo/api/BaseTest.java index 9fe1d748..b98c428c 100644 --- a/src/test/java/com/plivo/api/BaseTest.java +++ b/src/test/java/com/plivo/api/BaseTest.java @@ -78,8 +78,8 @@ protected void assertRequest(String method, String format, Map p public void setUp() throws Exception { server = new MockWebServer(); server.start(); - - Plivo.init(authId, authToken, server.url("/").toString()); + PlivoClient.BASE_URL = server.url("/").toString(); + Plivo.init(authId, authToken); Plivo.getClient().setTesting(true); } From 32628f2b01775116a3f212d3fe45f23d1e846ae5 Mon Sep 17 00:00:00 2001 From: Dmitry Kiru Date: Tue, 18 Sep 2018 10:52:41 +0400 Subject: [PATCH 4/5] Missing fields in CallRecordCreator and ConferenceRecordCreator #71 --- .../call/actions/CallRecordCreator.java | 73 +++++++++++++++++++ .../conference/ConferenceRecordCreator.java | 13 +++- src/test/java/com/plivo/api/CallTest.java | 13 ++-- 3 files changed, 91 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java b/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java index c85e0757..07062701 100644 --- a/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java +++ b/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java @@ -3,16 +3,89 @@ import com.plivo.api.PlivoClient; import com.plivo.api.exceptions.PlivoRestException; import com.plivo.api.models.base.Creator; + import java.io.IOException; public class CallRecordCreator extends Creator { private final String id; + private Integer timeLimit; + private String fileFormat; + private String transcriptionType; + private String transcriptionUrl; + private String transcriptionMethod; + private String callbackUrl; + private String callbackMethod; + public CallRecordCreator(String id) { this.id = id; } + public Integer timeLimit() { + return timeLimit; + } + + public String fileFormat() { + return this.fileFormat; + } + + public String transcriptionType() { + return this.transcriptionType; + } + + public String transcriptionUrl() { + return this.transcriptionUrl; + } + + public String transcriptionMethod() { + return this.transcriptionMethod; + } + + public String callbackUrl() { + return this.callbackUrl; + } + + public String callbackMethod() { + return this.callbackMethod; + } + + public CallRecordCreator timeLimit(final Integer timeLimit) { + this.timeLimit = timeLimit; + return this; + } + + public CallRecordCreator fileFormat(final String fileFormat) { + this.fileFormat = fileFormat; + return this; + } + + public CallRecordCreator transcriptionType(final String transcriptionType) { + this.transcriptionType = transcriptionType; + return this; + } + + public CallRecordCreator transcriptionUrl(final String transcriptionUrl) { + this.transcriptionUrl = transcriptionUrl; + return this; + } + + public CallRecordCreator transcriptionMethod(final String transcriptionMethod) { + this.transcriptionMethod = transcriptionMethod; + return this; + } + + public CallRecordCreator callbackUrl(final String callbackUrl) { + this.callbackUrl = callbackUrl; + return this; + } + + public CallRecordCreator callbackMethod(final String callbackMethod) { + this.callbackMethod = callbackMethod; + return this; + } + + @Override protected retrofit2.Call obtainCall() { return client().getApiService().callRecordCreate(client().getAuthId(), id, this); diff --git a/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java b/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java index 286e8fa4..ad864a36 100644 --- a/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java +++ b/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java @@ -4,13 +4,15 @@ import com.plivo.api.PlivoClient; import com.plivo.api.exceptions.PlivoRestException; import com.plivo.api.models.base.Creator; -import java.io.IOException; import retrofit2.Call; +import java.io.IOException; + public class ConferenceRecordCreator extends Creator { @JsonIgnore private final String conferenceName; + private Integer timeLimit; private String fileFormat; private String transcriptionType; private String transcriptionUrl; @@ -22,6 +24,10 @@ public ConferenceRecordCreator(String conferenceName) { this.conferenceName = conferenceName; } + public Integer timeLimit() { + return timeLimit; + } + public String fileFormat() { return this.fileFormat; } @@ -46,6 +52,11 @@ public String callbackMethod() { return this.callbackMethod; } + public ConferenceRecordCreator timeLimit(Integer timeLimit) { + this.timeLimit = timeLimit; + return this; + } + public ConferenceRecordCreator fileFormat(final String fileFormat) { this.fileFormat = fileFormat; return this; diff --git a/src/test/java/com/plivo/api/CallTest.java b/src/test/java/com/plivo/api/CallTest.java index 3d44d9f1..2495f53f 100644 --- a/src/test/java/com/plivo/api/CallTest.java +++ b/src/test/java/com/plivo/api/CallTest.java @@ -1,18 +1,15 @@ package com.plivo.api; -import static junit.framework.TestCase.assertEquals; - import com.fasterxml.jackson.databind.ObjectMapper; import com.plivo.api.models.call.Call; import com.plivo.api.models.call.LiveCall; import com.squareup.okhttp.mockwebserver.RecordedRequest; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; import org.junit.Test; +import java.util.*; + +import static junit.framework.TestCase.assertEquals; + public class CallTest extends BaseTest { final ObjectMapper objectMapper = new ObjectMapper(); @@ -252,6 +249,7 @@ public void callRecordCreateShouldWork() throws Exception { final String callId = "callId"; Call.recorder(callId) + .timeLimit(60) .record(); assertRequest("POST", "Call/%s/Record/", callId); @@ -264,6 +262,7 @@ public void callRecordCreateWithClientShouldWork() throws Exception { PlivoClient client = new PlivoClient("MA123456789012345678", "Zmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); Call.recorder(callId) + .timeLimit(60) .client(client) .record(); From 6489dee885557639bd50867883fd033ade8ba458 Mon Sep 17 00:00:00 2001 From: Dmitry Kiru Date: Tue, 18 Sep 2018 11:11:02 +0400 Subject: [PATCH 5/5] Revert "Missing fields in CallRecordCreator and ConferenceRecordCreator #71" This reverts commit 32628f2 --- .../call/actions/CallRecordCreator.java | 72 ------------------- .../conference/ConferenceRecordCreator.java | 10 --- src/test/java/com/plivo/api/CallTest.java | 2 - 3 files changed, 84 deletions(-) diff --git a/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java b/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java index 07062701..3ee84b10 100644 --- a/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java +++ b/src/main/java/com/plivo/api/models/call/actions/CallRecordCreator.java @@ -10,82 +10,10 @@ public class CallRecordCreator extends Creator { private final String id; - private Integer timeLimit; - private String fileFormat; - private String transcriptionType; - private String transcriptionUrl; - private String transcriptionMethod; - private String callbackUrl; - private String callbackMethod; - public CallRecordCreator(String id) { this.id = id; } - public Integer timeLimit() { - return timeLimit; - } - - public String fileFormat() { - return this.fileFormat; - } - - public String transcriptionType() { - return this.transcriptionType; - } - - public String transcriptionUrl() { - return this.transcriptionUrl; - } - - public String transcriptionMethod() { - return this.transcriptionMethod; - } - - public String callbackUrl() { - return this.callbackUrl; - } - - public String callbackMethod() { - return this.callbackMethod; - } - - public CallRecordCreator timeLimit(final Integer timeLimit) { - this.timeLimit = timeLimit; - return this; - } - - public CallRecordCreator fileFormat(final String fileFormat) { - this.fileFormat = fileFormat; - return this; - } - - public CallRecordCreator transcriptionType(final String transcriptionType) { - this.transcriptionType = transcriptionType; - return this; - } - - public CallRecordCreator transcriptionUrl(final String transcriptionUrl) { - this.transcriptionUrl = transcriptionUrl; - return this; - } - - public CallRecordCreator transcriptionMethod(final String transcriptionMethod) { - this.transcriptionMethod = transcriptionMethod; - return this; - } - - public CallRecordCreator callbackUrl(final String callbackUrl) { - this.callbackUrl = callbackUrl; - return this; - } - - public CallRecordCreator callbackMethod(final String callbackMethod) { - this.callbackMethod = callbackMethod; - return this; - } - - @Override protected retrofit2.Call obtainCall() { return client().getApiService().callRecordCreate(client().getAuthId(), id, this); diff --git a/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java b/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java index ad864a36..26a5d453 100644 --- a/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java +++ b/src/main/java/com/plivo/api/models/conference/ConferenceRecordCreator.java @@ -12,7 +12,6 @@ public class ConferenceRecordCreator extends Creator