ARAW Save

The Android Reddit API Wrapper

Project README

ARAW

The Android Reddit API Wrapper

Info

ARAW is a reddit API Wrapper that target the android platform specifically. It is built with Kotlin, Retrofit, Moshi, OkHttp.

ARAW it's hosted on Jitpack

Documentation

You can find the Docs at: https://kirkbushman.github.io/ARAW/

Requirements

ARAW requires Java 11, you can upgrade your project like this:

android {

    /* ... */
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }

    kotlinOptions {
        jvmTarget = '11'
    }
}

How to install.

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

dependencies {
    implementation 'com.github.KirkBushman:ARAW:Tag'
}

Obtain a userless client

// step 1 - create the helper
val helper = AuthUserlessHelper(
    context = this,
    clientId = "**CLIENT ID STRING**",
    deviceId = "**DEVICE ID**", // set as null to use the default android UUID
    scopes = creds.scopes.toTypedArray(), // array of scopes strings
    logging = true
)

// use shouldLogin() to check whether authentication already happened
if (!helper.shouldLogin()) {
    // use saved one
} else {
    // you must authenticate
}

// step 2 - obtain a client 
val client = helper.getRedditClient()

Obtain an installed app client

// step 1 - crete the help
val helper = AuthAppHelper(
    context = this,
    clientId = "**CLIENT ID STRING**",
    redirectUrl = "**REDIRECT URL**",
    scopes = creds.scopes.toTypedArray(), // array of scopes strings
    logging = true
)

// use shouldLogin() to check whether authentication already happened
if (!helper.shouldLogin()) {
    // use saved one
} else {
    // you must authenticate
}

// step 2 - obtain a client 
val client = helper.getRedditClient()

Use it to browse Reddit

// get the authed account (not possible in the userless auth)
val me = client.accoutsClient.me()
println(me.toString())

// get the saved posts 
val fetcher = client.accountsClient.saved()
val saved = fetcher.fetchNext() // get the first page
val saved2 = fetcher.fetchNext() // get the second page

println(saved.toString())
println(saved2.toString())

// get the submissions from a subreddit
val fetcher = client.contributionsClient.submissions("pics")
val submissions = fetcher.fetchNext()

println(submissions.toString())

// get inbox messages
val fetcher = client.messagesClient.inbox()
val messages = fetcher.fetchNext()

println(messages.toString())

// get redditor profile
val redditor = client.redditorsClient.redditor("Kirk-Bushman")

println(redditor.toString())

// upvote a submission
val submission: Submission = ...
client.contributionsClient.vote(Vote.UPVOTE, submission)

// get submissions from a multireddit
val fetcher = client.contributionsClient.multiredditSubmissions(listOf("pics", "design", "architecture"))
val submissions = fetcher.fetchNext()

println(submissions.toString())

Apps that are using ARAW:

Redditoria

Help improve this section, open an issue submitting your implementation.

License

This project is licensed under the MIT License

Open Source Agenda is not affiliated with "ARAW" Project. README Source: KirkBushman/ARAW
Stars
85
Open Issues
15
Last Commit
5 months ago
Repository
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating