1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
#![deny(missing_docs)]
//! # orca
//! orca is a library to make using the Reddit API from Rust easy
//!
//! ## Features
//! orca has not yet implemented near all of the functionality available in the Reddit API, but
//! enough has been implemented to make simple flexible scripts or apps. Some main functionality
//! includes:
//!
//! * submitting self posts
//! * automatic ratelimiting
//! * commenting and replying
//! * comment streams from subreddits
//! * private messages
//! * authorization as script or installed oauth app type
//! * more stuff
//!
//! ## Structure
//! All of the functionality necessary is available in the implementation of
//! the `App` struct. Data structures are defined in `orca::data`. Networking code is present in
//! the net module, which also contains OAuth authorization functionality.
//!
//! ## Usage
//! To simply create a reddit app instance, do
//!
//! ```rust
//! # use orca::App;
//! # let (name, version, author) = ("a", "b", "c");
//! let mut reddit = App::new(name, version, author).unwrap();
//! ```
//!
//! where `name`, `version`, and `author` are all `&str`s.
//!
//! This instance can do actions that don't require authorization, such as retrieving a stream of
//! comments from a subreddit, but actions such as commenting require authorization, which can be
//! done multiple ways. The most common way for clients to authorize is as scripts, which can be
//! done by just providing a username and password as well as the id and secret of the app that can
//! be registered on the desktop site. It looks like this in code (assuming you already have a
//! mutable reddit instance):
//!
//! ```rust,no_run
//! # use orca::App;
//! # let mut reddit = App::new("a", "b", "c").unwrap();
//! # let (id, secret, username, password) = ("a", "b", "c", "d");
//! reddit.authorize_script(id, secret, username, password).unwrap();
//! ```
//! More info can be found in the documentation for the net module
//!
//! Actually doing something is simple and similar to previous examples. To get info about the
//! currently authorized user, simply call
//!
//! ```rust,no_run
//! # use orca::App;
//! # let mut reddit = App::new("a", "b", "c").unwrap();
//! reddit.get_self();
//! ```
//!
//! which will return a json value until the actual user data structure is implemented.
//!
extern crate chrono;
#[macro_use]
extern crate failure;
#[macro_use]
extern crate failure_derive;
extern crate futures;
extern crate hyper;
extern crate hyper_tls;
#[macro_use]
extern crate log;
extern crate base64;
extern crate open;
extern crate rand;
extern crate serde;
extern crate serde_json as json;
extern crate tokio_core;
extern crate url;
#[cfg(test)]
mod test;
/// Functionality for communication with reddit.com
pub mod net;
/// Reddit data structures
pub mod data;
/// Errors
pub mod errors;
/// Main entry point
pub mod app;
pub use app::App;
pub use data::{Sort, SortTime};
pub use errors::RedditError;
pub use net::auth::{self, InstalledAppError, ResponseGenFn, Scopes};
pub use net::{Connection, LimitMethod};