001package com.plivo.api; 002 003import com.fasterxml.jackson.core.JsonGenerator; 004import com.fasterxml.jackson.core.JsonParser; 005import com.fasterxml.jackson.core.JsonProcessingException; 006import com.fasterxml.jackson.databind.BeanDescription; 007import com.fasterxml.jackson.databind.DeserializationConfig; 008import com.fasterxml.jackson.databind.DeserializationContext; 009import com.fasterxml.jackson.databind.JavaType; 010import com.fasterxml.jackson.databind.JsonDeserializer; 011import com.fasterxml.jackson.databind.SerializerProvider; 012import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier; 013import com.fasterxml.jackson.databind.module.SimpleModule; 014import com.fasterxml.jackson.databind.ser.std.StdSerializer; 015import com.plivo.api.models.base.LogLevel; 016import okhttp3.OkHttpClient; 017 018import java.io.IOException; 019 020public class PhloRestClient { 021 022 protected static String BASE_URL = "https://phlorunner.plivo.com/v1/"; 023 private SimpleModule simpleModule = new SimpleModule(); 024 private final PlivoClient client; 025 026 { 027 simpleModule.setDeserializerModifier(new BeanDeserializerModifier() { 028 @Override 029 public JsonDeserializer<?> modifyEnumDeserializer(DeserializationConfig config, JavaType type, 030 BeanDescription beanDesc, JsonDeserializer<?> deserializer) { 031 return new JsonDeserializer<Enum>() { 032 @Override 033 public Enum deserialize(JsonParser jp, DeserializationContext ctxt) 034 throws IOException, JsonProcessingException { 035 Class<? extends Enum> rawClass = (Class<Enum<?>>) type.getRawClass(); 036 return Enum.valueOf(rawClass, jp.getValueAsString().toUpperCase().replace("-", "_")); 037 } 038 }; 039 } 040 }); 041 simpleModule.addSerializer(Enum.class, new StdSerializer<Enum>(Enum.class) { 042 @Override 043 public void serialize(Enum value, JsonGenerator gen, SerializerProvider provider) 044 throws IOException { 045 gen.writeString(value.name().toLowerCase()); 046 } 047 }); 048 } 049 050 public PhloRestClient(String authId, String authToken) { 051 this.client = new PlivoClient(authId, authToken, new OkHttpClient.Builder(), BASE_URL, simpleModule, LogLevel.NONE); 052 } 053 054 public PhloRestClient(String authId, String authToken, OkHttpClient.Builder httpClientBuilder) { 055 this.client = new PlivoClient(authId, authToken, httpClientBuilder, BASE_URL, simpleModule, LogLevel.NONE); 056 } 057 058 public PlivoClient getClient() { 059 return client; 060 } 061}