8个版本
0.2.1 | 2021年3月26日 |
---|---|
0.2.0 | 2021年1月7日 |
0.1.5 | 2020年10月8日 |
0.1.3 | 2020年2月2日 |
0.1.1 | 2020年1月31日 |
在认证类别中排名第561
每月下载22次
22KB
503 代码行
twapi-ureq-rs
ureq使用的Twitter OAuth库。
特性
- 仅应用认证
- 用户认证
- Oauth1.0认证
- Oauth2.0认证
- 支持JSON(例如dm_event,welcome_message,media_metadata等)
- 支持multipart(例如post_media_upload)
示例
use twapi_ureq::*;
use std::io::{BufReader, Cursor, Read};
fn main() {
// Set up Environment Variables
// CONSUMER_KEY
// CONSUMER_SECRET
// ACCESS_KEY
// ACCESS_SECRET
// OAuth2.0 Authentication
let client = v2::Client::new_by_env().unwrap().unwrap();
// search(Application Only Authentication)
let res = client
.get(
"https://api.twitter.com/1.1/search/tweets.json",
&vec![("q", "東京&埼玉"), ("count", "2")],
)
.unwrap();
println!("{:?}", res.into_json::<serde_json::Value>());
// OAuth1.0 Authentication
let client = v1::Client::new_by_env().unwrap();
// home_timeline
let url = "https://api.twitter.com/1.1/statuses/home_timeline.json";
let query_options = vec![("count", "2")];
let res = client.get(url, &query_options).unwrap();
println!("{:?}", res.into_json::<serde_json::Value>().unwrap());
// statuses/update
let url = "https://api.twitter.com/1.1/statuses/update.json";
let form_options = vec![
("status", "!\"'#$%&\\()+,/:;<=>?@[\\]^`{|}~;-._* 全部"),
("in_reply_to_status_id", "1178811297455935488"),
];
let res = client.post(url, &vec![], &form_options).unwrap();
println!("{:?}", res.into_json::<serde_json::Value>());
// direct_messages new(JSON support)
let url = "https://api.twitter.com/1.1/direct_messages/events/new.json";
let data = r#"{
"event": {
"type": "message_create",
"message_create": {
"target": {
"recipient_id": "19522946"
},
"message_data": {
"text": "予定表〜①ハンカクだ!"
}
}
}
}"#;
let data: serde_json::Value = serde_json::from_str(data).unwrap();
let res = client.json(url, &vec![], data).unwrap();
println!("{:?}", res.into_json::<serde_json::Value>());
// media/upload(Multipart support)
let metadata = std::fs::metadata("test.jpg").unwrap();
let file_size = metadata.len();
let f = std::fs::File::open("test.jpg").unwrap();
let mut cursor = Cursor::new(vec![0; file_size as usize]);
let mut reader = BufReader::new(f);
reader.read(cursor.get_mut()).unwrap();
let mut data = form::MultiPart::new();
data.add_cursor("media", cursor);
let url = "https://upload.twitter.com/1.1/media/upload.json";
let res = client.multipart(url, &vec![], data).unwrap();
println!("{:?}", res.into_json::<serde_json::Value>());
}
依赖项
~8MB
~154K SLoC