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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
//! Vkontakte API Rust client library //! //! [![Join the chat at https://gitter.im/kstep/vkrs](https://badges.gitter.im/kstep/vkrs.svg)](https://gitter.im/kstep/vkrs) //! [![Travis CI build status](https://img.shields.io/travis/kstep/vkrs.png)](https://travis-ci.org/kstep/vkrs) //! [![Downloads](https://img.shields.io/crates/d/vkrs.png)](https://crates.io/crates/vkrs) //! [![Version](https://img.shields.io/crates/v/vkrs.png)](https://crates.io/crates/vkrs) //! [![License MIT/Apache-2.0](https://img.shields.io/crates/l/vkrs.png)](https://crates.io/crates/vkrs) //! [![Code coverage at Coveralls](https://img.shields.io/coveralls/kstep/vkrs.png)](https://coveralls.io/github/kstep/vkrs) //! [![Issue Stats](http://issuestats.com/github/kstep/vkrs/badge/pr)](http://issuestats.com/github/kstep/vkrs) //! [![Issue Stats](http://issuestats.com/github/kstep/vkrs/badge/issue)](http://issuestats.com/github/kstep/vkrs) //! //! [Documentation](http://kstep.me/vkrs/vkrs/index.html) //! //! # Usage //! //! Add to your Cargo.toml: //! //! ```toml //! [dependencies] //! vkrs = "0.5.0" //! ``` //! //! Then [add your app](https://vk.com/apps?act=manage) at [vk.com](https://vk.com/). //! //! Then authorize and use: //! //! ```rust,no_run //! extern crate vkrs; //! //! use std::{env, io}; //! use vkrs::*; //! //! fn main() { //! let api = api::Client::new(); //! let oauth = api.auth( //! env::var("VK_APP_ID").unwrap(), //! env::var("VK_APP_SECRET").unwrap()); //! //! let auth_uri = oauth.auth_uri(auth::Permission::Audio).unwrap(); //! // Or if you want to get permissions for specific request: //! // let auth_uri = oauth.auth_uri_for::<audio::Search>(); //! println!("Go to {} and enter code below...", auth_uri); //! //! let inp = io::stdin(); //! let code = { //! let mut buf = String::new(); //! inp.read_line(&mut buf).unwrap(); //! buf //! }; //! //! // You may want to save this token for future use to avoid asking user //! // to authorize the app on each run. //! let token = oauth.request_token(code.trim()).unwrap(); //! //! // The access token is JSON serializable with serde, so you can do it this way: //! // File::create(TOKEN_FILE).ok().map(|mut f| serde_json::to_writer(&mut f, &token).ok()).unwrap(); //! // //! // And then you can load it again: //! // let token: auth::AccessToken = File::open(TOKEN_FILE).ok().and_then(|mut f| serde_json::from_reader(&mut f).ok()).unwrap(); //! //! let songs = api.get(Some(&token), //! audio::Search::new() //! .q("Poets Of The Fall") //! .performer_only(true) //! .count(200)) //! .unwrap(); //! //! for song in &songs.items { //! println!("{:?}", song); //! } //! } //! ``` //! //! # License //! //! Licensed under either of //! //! * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) //! * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) //! //! at your option. //! //! ## Contribution //! //! Unless you explicitly state otherwise, any contribution intentionally submitted //! for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any //! additional terms or conditions. #![cfg_attr(feature = "unstable", feature(custom_derive, plugin))] #![cfg_attr(feature = "unstable", plugin(serde_macros))] #![allow(unknown_lints)] #![allow(wrong_self_convention)] #![deny(unused_imports)] extern crate serde; extern crate serde_json; extern crate hyper; extern crate url; extern crate inth_oauth2 as oauth2; extern crate rustc_serialize; extern crate chrono; mod macros; pub mod api; pub mod auth; pub mod audio; pub mod gifts; pub mod photos; pub mod video; pub mod users; pub mod stats; pub mod status; pub mod wall; pub mod utils; pub mod execute; pub mod storage; pub mod account; pub mod notifications;