FARLA

Additional

Language
Java
Version
0.5.0 (Sep 10, 2019)
Created
Sep 7, 2019
Updated
Oct 31, 2023
Owner
f4 (F4pl0)
Contributor
f4 (F4pl0)
1
Activity
Badge
Generate
Download
Source code

FARLA - F4pl0's Awesome Request Library for Android

Features

  • Lightweight

So it can fit in every project you want, compressed to <50KB

  • Native

Supports Java and Kotlin

  • Performance

Only bottleneck is your connection and server location

  • Simple

Implements in seconds, period

  • GET, POST, PUT and DELETE Requests

Installation

Add Jitpack.io repository to your build.gradle file:

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

Add FARLA to your dependencies

dependencies {
        implementation 'com.github.F4pl0:FARLA:0.5.0'
  }

Add USES-INTERNET permission to your Android Manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   ...
   >
 
     <uses-permission android:name="android.permission.INTERNET" />
 
 ...
 
</manifest>

Usage

GET Request (Same for DELETE Request)

new FarlaGetRequest(this)              // For DELETE Request change to FarlaDeleteRequest
                .setURL("https://example.com/get")
                .setListener(new FarlaGetRequest.onGetRequestListener() {
                    @Override
                    public void onSuccess(String response) {
                        //Handle the response
                    }

                    @Override
                    public void onFailure(int error) {
                        //Handle the failure
                    }
                }).execute();

POST Request (Same for PUT Request)

new FarlaPostRequest(this)             // For PUT Request change to FarlaPutRequest
                .setURL("https://example.com/post")
                .setListener(new FarlaPostRequest.onPostRequestListener() {
                    @Override
                    public void onSuccess(String response) {
                        //Handle the response
                    }

                    @Override
                    public void onFailure(int error) {
                        //Handle the failure
                    }
                })
                .addParam("key", "value")
                .execute();

Error Handling

@Override
 public void onFailure(int error) {
  switch(error){
   case Constants.NO_CONNECTION:
    // Insert code for handling NO_CONNECTION
    // Device has no connection to internet
    break;
   
   case Constants.AUTH_FAILURE:
    // Insert code for handling AUTH_FAILURE
    // Server returned 401, request is not authenticated
    // Mabye forgot authentification header?
    break;
    
   case Constants.SERVER_ERROR:
    // Insert code for handling SERVER_ERROR
    // Something happened with the server
    // - Check the server-sided code
    // - Check the input provided to the server via headers or params
    break;
   
   case Constants.NETWORK_ERROR:
    // Insert code for handling NETWORK_ERROR
    // Request got lost somewhere in the dark woods of the internet
    // Mabye network change?
    break;
   
   case Constants.PARSE_ERROR:
    // Insert code for handling PARSE_ERROR
    // - Check URL provided
    // - Check Headers provided
    // - Check params provided
    break;
  }
 }

Headers

You can add headers with .addHeader(String, String) call:

new FarlaPostRequest(this)             // Example
                .setURL("https://example.com/post")
                .addHeader("Content-Type", "multipart/form-data")
                .execute();

NOTE

From Android 9.0+ Google disallows HTTP traffic, only allows secure HTTPS
You will get NO_CONNECTION error on HTTP requests
To allow HTTP Traffic to some servers, you must put them in a network_security_config.xml file:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">f4pl0.github.io</domain>
    </domain-config>
</network-security-config>

And then include it in the Android Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                    ... >
        ...
    </application>
</manifest>

And you should be allowed to make HTTP requests to the server listed.