Skip to content
Matthew Dean edited this page Jan 12, 2016 · 11 revisions

##Design Philosophy

JRAW is designed with simplicity in mind; each class operates on a "need-to-know" basis. Therefore, only specific classes can execute a network request, facilitate the transfer of data, etc. The library is divided into four sections: networking, authentication, management, models, and pagination.

####Networking

Defined in net.dean.jraw.http

This package is primarily built off of HttpAdapter and HttpClient. HttpAdapter forms a bridge between JRAW and another networking library, such as OkHttp. HttpClient uses an HttpAdapter to perform network requests. HttpClient's direct child is RestClient, which introduces request history and logging through SLF4J. Note that RestClient is not reddit-specific, but rather a generic HTTP client. RestClient's direct child is RedditClient, which targets reddit's API specifically. It adds rate limiting and access to a few reddit endpoints.

Throughout the library, only classes that implement NetworkAccessible can send HTTP requests.

####Authentication

Defined in net.dean.jraw.auth and net.dean.jraw.http.oauth.

####Management

Defined in net.dean.jraw.managers

####Models

Defined in net.dean.jraw.models

All models are instantiated with a Jackson JsonNode parsed from responses from the reddit API.

####Pagination

Defined in net.dean.jraw.paginators. Paginators have their own wiki page

##Getting Started See Quickstart

Clone this wiki locally