Get Started
Learn how to use this library.
Installation
            
              //root build.gradle
              allprojects {
                    repositories {
                        maven { url 'https://jitpack.io' }
                    }
                }
              //add dependency
              dependencies {
                    implementation 'com.github.jamesdeperio:RetrofitKit:v1.0.5'
                    //required dependencies
                    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
                    implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
                    //add rxjava adapter
                    implementation 'com.squareup.retrofit2:adapter-rxjava2:x.x.x'
                    //or add Kotlin coroutine's adapter
                    implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:x.x.x'
                    //then add your converter factory library
              }
              
            
          Usage
Here are the available classes that you can use to your project:
SerializationFormatFactory.Builder()
            
This builder class is use to apply multiple converter.
| Method | Description | 
|---|---|
| setXMLConverterFactory(?) | Set custom converter for xml. Add @XMLFormat annotation to your api call. | 
| setJSONConverterFactory(?) | Set custom converter for json. Add @JSONFormat annotation to your api call. | 
| addCustomConverterFactory(?,?) | Add custom annotation and converter. | 
Example:
              
                //kotlin
                //using TikXml library as xml converter
                val tikXMLConverter = TikXmlConverterFactory.create(TikXml.Builder().exceptionOnUnreadXml(false).build())
                //using GSON library as json converter
                val gsonConverter = GsonConverterFactory.create(GsonBuilder().setLenient().create())
                val multipleConverter = SerializationFormatFactory.Builder()
                .setXMLConverterFactory(converterFactory = tikXMLConverter)
                .setJSONConverterFactory(converterFactory = gsonConverter)
                .addCustomConverterFactory(responseFormat = YAMLFormat::class.java, converterFactory = YAMLConverterFactory.create())
                .build()
                //add annotation for custom converter
                @Retention(AnnotationRetention.RUNTIME)
                annotation class YAMLFormat
                interface RestRepository {
                    @GET("something")
                    @JSONFormat
                    fun getResponse1(): Observable<Response>
                    @GET("something")
                    @XMLFormat
                    fun getResponse2(): Call<Response>
                    @GET("something")
                    @YAMLFormat
                    fun getResponse3(): Call<Response>
              }
              
            
            RetrofitManager
            
This base class is to apply lazy retrofit configuration.
| Method | Return Type | Description | 
|---|---|---|
| initCacheSize() | Int | Override cache size to your network call. | 
| initBaseURL() | String | Override base url for api. | 
| initWriteTimeOut() | Long | Override to change write timeout. | 
| initReadTimeOut() | Long | Override to change read timeout. | 
| initConnectTimeOut() | Long | Override to change connection timeout. | 
| initConverterFactory() | Converter.Factory | Override to use your own custom converter library. | 
| initCallAdapterFactory() | CallAdapter.Factory | Override to use rx java latest library for call adapter. | 
| isPrintLogEnabled() | Boolean | Override to allow log printing or not. | 
| interceptorConfiguration(builder) | OkHttpClient.Builder | Override to add more configuration to OkHttpClient. | 
| create(?) | Object | Add your repository interface to assign as api. | 
Example:
              
                //kotlin
                class NetworkManager(context: Context) : RetrofitManager(context=context) {
                    var restRepository:RestRepository = create(RestRepository::class.java) as RestRepository //provide your api interface
                    override fun initBaseURL(): String = "http://www.baseURL.com/"
                    override fun initCacheSize(): Int = 0
                    override fun initConnectTimeOut(): Long = 60
                    override fun initReadTimeOut(): Long = 60
                    override fun initWriteTimeOut(): Long = 60
                    override fun initConverterFactory(): Converter.Factory = multipleConverter
                    override fun initCallAdapterFactory(): CallAdapter.Factory = RxJava2CallAdapterFactory.create()
                    override fun isPrintLogEnabled(): Boolean = true
                    override fun OkHttpClient.Builder.interceptorConfiguration(builder: OkHttpClient.Builder): OkHttpClient.Builder
                    = builder.addInterceptor(INTERCEPTOR)
                }
                val networkManager = NetworkManager(context)
                networkManager.getResponse1()
                  .subscribeOn(Schedulers.io())
                  .observeOn(Schedulers.newThread())
                  .subscribe{ /* response*/ }
              
            
              Feel free to ask and add issue on my github repository! Cheers!