matrix-ipfs-bot

git clone git://archive.git.mtrnord.blog/MTRNord/matrix-ipfs-bot.git
Log | Files | Refs | LICENSE

commit c7a2f067fa4e16ed54518317db2a3d7b2feb17f4
parent 9a449df236582d521eb6d79ce2abc708e8f038cb
Author: Marcel <mtrnord1@gmail.com>
Date:   Fri,  3 Jul 2020 10:22:51 +0200

Use sender server as download server

Took 16 minutes

Diffstat:
Msrc/main.rs | 11++++++++---
Msrc/utils.rs | 6++++--
2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -10,6 +10,8 @@ use matrix_sdk::{ self, events::collections::all::RoomEvent, events::room::{ + ThumbnailInfo, + ImageInfo, member::MemberEventContent, message::{MessageEvent, MessageEventContent, NoticeMessageEventContent, RelatesTo}, }, @@ -90,7 +92,7 @@ impl CommandBot { } async fn handle_media(&self, mxc_url: String, raw_filename: String) -> String { - let download_url = get_media_download_url(self.client.homeserver(), mxc_url); + let download_url = get_media_download_url(mxc_url); let response = reqwest::get(&download_url).await.unwrap(); @@ -119,13 +121,14 @@ impl EventEmitter for CommandBot { ) { if let SyncRoom::Invited(room) = room { let room_id = room.read().await.room_id.clone(); - let resp = self.client.join_room_by_id(&room_id).await.unwrap(); + self.client.join_room_by_id(&room_id).await.unwrap(); } } async fn on_room_message(&self, room: SyncRoom, event: &MessageEvent) { if let SyncRoom::Joined(room) = room { if let MessageEventContent::Text(text_event) = event.clone().content { - + let test = serde_json::from_str::<ImageInfo>(r#"{"mimetype":"image/jpeg", "w":4998, "h":3333,"size":6467842}"#); + println!("{:?}", test); let msg_body = text_event.body.clone(); // TODO fix e2ee relates_to with something like https://github.com/matrix-org/matrix-rust-sdk/blob/master/matrix_sdk_base/src/client.rs#L93 inside of receive_joined_timeline_event @@ -165,6 +168,8 @@ impl EventEmitter for CommandBot { }) .await; + println!("event: {:?}", resp); + match resp { Ok(mut resp) => { println!("{:?}", resp.event.deserialize()); diff --git a/src/utils.rs b/src/utils.rs @@ -1,14 +1,16 @@ use serde::{Deserialize, Serialize}; use url::Url; -pub fn get_media_download_url(homeserver: &Url, mxc_url: String) -> String { +pub fn get_media_download_url(mxc_url: String) -> String { let url_parts_raw = mxc_url.replace("mxc://", ""); let url_parts: Vec<&str> = url_parts_raw.split('/').collect(); let server_name = (*url_parts.first().unwrap()).to_string(); let media_id = (*url_parts.last().unwrap()).to_string(); let new_path = format!("_matrix/media/r0/download/{}/{}", server_name, media_id,); - let mut new_url = homeserver.clone(); + // FIX this madness + let mut new_url = Url::parse(format!("https://matrix.{}", server_name).as_str()).unwrap(); new_url.set_path(new_path.as_str()); + println!("{}", new_url); new_url.to_string() }