Skip to content

Instantly share code, notes, and snippets.

@AljoschaMeyer
Created March 12, 2018 09:30
Show Gist options
  • Save AljoschaMeyer/1775c5de2344fbc3c1aa95ad46846112 to your computer and use it in GitHub Desktop.
Save AljoschaMeyer/1775c5de2344fbc3c1aa95ad46846112 to your computer and use it in GitHub Desktop.
#![feature(try_from)]
#![feature(ip_constructors)]
extern crate tokio;
extern crate futures;
extern crate sodiumoxide;
extern crate secret_stream;
extern crate ssb_keyfile;
extern crate ssb_common;
extern crate ssb_client;
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
use std::net::{SocketAddr, Ipv6Addr};
use std::convert::TryInto;
use tokio::executor::current_thread;
use tokio::net::TcpStream;
use tokio::io::AsyncRead;
use futures::prelude::*;
use secret_stream::OwningClient;
use sodiumoxide::crypto::box_;
use ssb_keyfile::load_or_create_keys;
use ssb_common::{MAINNET_IDENTIFIER, DEFAULT_TCP_PORT};
use ssb_client::ssb;
fn main() {
sodiumoxide::init();
let (pk, sk) = load_or_create_keys().unwrap();
let pk = pk.try_into().unwrap();
let sk = sk.try_into().unwrap();
let (ephemeral_pk, ephemeral_sk) = box_::gen_keypair();
let addr = SocketAddr::new(Ipv6Addr::localhost().into(), DEFAULT_TCP_PORT);
let do_stuff = TcpStream::connect(&addr)
.and_then(move |tcp| {
OwningClient::new(tcp,
MAINNET_IDENTIFIER,
pk,
sk,
ephemeral_pk,
ephemeral_sk,
pk)
.map_err(|err| panic!("{:?}", err))
})
.map(|connection| {
println!("{:?}", "yay!");
let (read, write) = connection.unwrap().split();
let (mut client, receive, _) = ssb(read, write);
current_thread::spawn(receive.map_err(|err| panic!("{:?}", err)));
let (whoami_req, whoami_res) = client.whoami();
current_thread::spawn(whoami_req.map_err(|err| panic!("{:?}", err)));
current_thread::spawn(whoami_res
.map(|who_i_am| println!("{:?}", who_i_am))
.map_err(|err| panic!("{:?}", err)));
})
.map_err(|err| panic!("{:?}", err));
current_thread::run(|_| current_thread::spawn(do_stuff));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment