fuel-comfy

General

Category
Free
Tag
Networking
License
Apache License, Version 2.0
Registered
Apr 29, 2019
Favorites
2
Link
https://github.com/alexxxdev/fuel-comfy
See also
reyna
IceNet
Atomic
Android Cookie Store
RxBonjour

Additional

Language
Kotlin
Version
1.0.57 (Dec 23, 2020)
Created
Feb 13, 2019
Updated
Nov 14, 2022
Owner
Alexey Derendyaev (alexxxdev)
Contributors
fossabot
dependabot[bot]
Alexey Derendyaev (alexxxdev)
3
Activity
Badge
Generate
Download
Source code

fuel-comfy






More comfortable use of Fuel as in Retrofit or Feign for Kotlin/Android

Basics

Usage typically looks like this

@FuelInterface
interface GitHubService {

    @Get("repos/{owner}/{repo}/contributors")
    fun contributors(@Param("owner") owner: String, @Param("repo") repo: String): Result<Contributor, Exception>
}

FuelManager.instance.basePath = "https://api.github.com/"

val service = FuelManager.instance.setInterface(GitHubService::class)
val contributors = service.contributors("alexxxdev", "fuel-comfy")
contributors.fold({ list ->
            // TODO
        }, { exception ->
            // TODO
        })

Features

  • HTTP GET/POST/PUT/DELETE/HEAD/PATCH requests
  • Serialization/Deserialization using fuel-kotlinx-serialization
  • Support suspend function
  • Serialization/Deserialization using Gson
  • Maybe something else ...

Interface Annotations

@FuelInterface

Defines the interface for fuel-comfy

@Get / @Post / @Put / @Delete / @Head / @Patch

Defines the GET/POST/PUT/DELETE/HEAD/PATCH HttpMethod and UriTemplate for request. Expressions, values wrapped in curly-braces {expression} are resolved using their corresponding @Param annotated parameters.

@Param

Defines a template variable, whose value will be used to resolve the corresponding template Expression, by name.

@Header

When used on a Interface, will be applied to every request. When used on a Method, will apply only to the annotated method.

@FuelInterface
@Headers("Accept: application/json")
interface GitHubService {

  @Headers("Content-Type: application/json")
  @POST("...")
  fun post()
}

@QueryMap

Defines a Map of name-value pairs, to expand into a query string.

@FuelInterface
interface GitHubService {

  @GET("...")
  fun get(@QueryMap params: Map<String, Any>)
}

@Query

Defines name-value pair, to expand into a query string.

@FuelInterface
interface GitHubService {

  @GET("...")
  fun get(@Query("id") id: Int)
}

@Body

Defines a request body

@FuelInterface
interface GitHubService {

  @GET("...")
  fun get(@Body contributor: Contributor)
}




Installation

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Add the dependency

dependencies {
    implementation 'com.github.alexxxdev.fuel-comfy:api:<version>'    
    kapt 'com.github.alexxxdev.fuel-comfy:processor:<version>'
    
    //optional
    kapt 'com.github.alexxxdev.fuel-comfy:processor-coroutines:<version>'
    kapt 'com.github.alexxxdev.fuel-comfy:processor-gson:<version>'
}

License