From 61d848d2b5326a7e85311a84c31d8b247724e60d Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sun, 9 Jul 2017 20:30:28 +1000 Subject: [PATCH] Add hello_world example --- Cargo.toml | 3 +++ examples/hello_world.rs | 58 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 examples/hello_world.rs diff --git a/Cargo.toml b/Cargo.toml index 9f1a1619..1e8c3a2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,9 @@ version = "0.1.2" optional = true version = "0.1.4" +[dev-dependencies] +ruma-events = "0.9.0" + [features] default = ["tls"] tls = ["hyper-tls", "native-tls"] diff --git a/examples/hello_world.rs b/examples/hello_world.rs new file mode 100644 index 00000000..16149c20 --- /dev/null +++ b/examples/hello_world.rs @@ -0,0 +1,58 @@ +#![feature(conservative_impl_trait)] +#![feature(try_from)] + +extern crate futures; +extern crate hyper; +extern crate ruma_client; +extern crate ruma_events; +extern crate ruma_identifiers; +extern crate tokio_core; +extern crate url; + +use std::convert::TryFrom; + +use futures::Future; +use hyper::client::Connect; +use ruma_client::Client; +use ruma_client::api::r0; +use ruma_events::EventType; +use ruma_events::room::message::{MessageEventContent, MessageType, TextMessageEventContent}; +use ruma_identifiers::RoomAliasId; +use tokio_core::reactor::Core; +use url::Url; + +fn hello_world<'a, C: Connect>(client: &'a Client) +-> impl Future + 'a +{ + client.register_guest().and_then(move |_| { + r0::alias::get_alias::call(client, r0::alias::get_alias::Request { + room_alias: RoomAliasId::try_from("#ruma-client-test:matrix.org").unwrap(), + }) + }).and_then(move |response| { + let room_id = response.room_id; + + r0::membership::join_room_by_id::call(client, r0::membership::join_room_by_id::Request { + room_id: room_id.clone(), + third_party_signed: None, + }).and_then(move |_| { + r0::send::send_message_event::call(client, r0::send::send_message_event::Request { + room_id: room_id, + event_type: EventType::RoomMessage, + txn_id: "1".to_owned(), + data: MessageEventContent::Text(TextMessageEventContent { + body: "Hello World!".to_owned(), + msgtype: MessageType::Text, + }), + }) + }) + }).map(|_| ()) +} + +fn main() { + let mut core = Core::new().unwrap(); + let handle = core.handle(); + let server = Url::parse("https://matrix.org/").unwrap(); + + let client = Client::https(&handle, server, None).unwrap(); + core.run(hello_world(&client)).unwrap(); +}