mirror of
https://github.com/versia-pub/activitypub.git
synced 2025-12-06 06:38:20 +01:00
Compare commits
6 commits
23bd522ade
...
bcff0a4eec
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bcff0a4eec | ||
|
|
d12d618da4 | ||
|
|
6752a93d2f | ||
|
|
3dadef436e | ||
|
|
93d4b7af0d | ||
|
|
e5851e2c9b |
11
.github/workflows/docker-publish.yml
vendored
11
.github/workflows/docker-publish.yml
vendored
|
|
@ -52,12 +52,21 @@ jobs:
|
||||||
- uses: DeterminateSystems/nix-installer-action@main
|
- uses: DeterminateSystems/nix-installer-action@main
|
||||||
with:
|
with:
|
||||||
extra-conf: accept-flake-config = true
|
extra-conf: accept-flake-config = true
|
||||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
- uses: DeterminateSystems/flakehub-cache-action@main
|
||||||
- uses: DeterminateSystems/flake-checker-action@main
|
- uses: DeterminateSystems/flake-checker-action@main
|
||||||
- name: Build docker package
|
- name: Build docker package
|
||||||
run: nix build .#ociImage
|
run: nix build .#ociImage
|
||||||
- name: Load Docker image
|
- name: Load Docker image
|
||||||
run: docker load < result
|
run: docker load < result
|
||||||
|
- name: Run Trivy vulnerability scanner
|
||||||
|
uses: aquasecurity/trivy-action@0.28.0
|
||||||
|
with:
|
||||||
|
image-ref: 'ghcr.io/${{ env.IMAGE_NAME }}:main'
|
||||||
|
format: 'table'
|
||||||
|
exit-code: '1'
|
||||||
|
ignore-unfixed: true
|
||||||
|
vuln-type: 'os,library'
|
||||||
|
severity: 'CRITICAL,HIGH'
|
||||||
- name: Push image to registry
|
- name: Push image to registry
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
run: docker push ghcr.io/$IMAGE_NAME -a
|
run: docker push ghcr.io/$IMAGE_NAME -a
|
||||||
|
|
|
||||||
2
.github/workflows/nix-flake.yml
vendored
2
.github/workflows/nix-flake.yml
vendored
|
|
@ -19,7 +19,7 @@ jobs:
|
||||||
- uses: DeterminateSystems/nix-installer-action@main
|
- uses: DeterminateSystems/nix-installer-action@main
|
||||||
with:
|
with:
|
||||||
extra-conf: accept-flake-config = true
|
extra-conf: accept-flake-config = true
|
||||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
- uses: DeterminateSystems/flakehub-cache-action@main
|
||||||
- uses: DeterminateSystems/flake-checker-action@main
|
- uses: DeterminateSystems/flake-checker-action@main
|
||||||
- name: Build default package
|
- name: Build default package
|
||||||
run: nix build .
|
run: nix build .
|
||||||
|
|
|
||||||
46
flake.lock
generated
46
flake.lock
generated
|
|
@ -2,12 +2,12 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1733328505,
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
"revCount": 57,
|
"revCount": 69,
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
|
|
@ -19,11 +19,11 @@
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1730504689,
|
"lastModified": 1738453229,
|
||||||
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
|
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
|
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -37,11 +37,11 @@
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1721727458,
|
"lastModified": 1736429655,
|
||||||
"narHash": "sha256-r/xppY958gmZ4oTfLiHN0ZGuQ+RSTijDblVgVLFi1mw=",
|
"narHash": "sha256-BwMekRuVlSB9C0QgwKMICiJ5EVbLGjfe4qyueyNQyGI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "naersk",
|
"repo": "naersk",
|
||||||
"rev": "3fb418eaf352498f6b6c30592e3beb63df42ef11",
|
"rev": "0621e47bd95542b8e1ce2ee2d65d6a1f887a13ce",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -53,8 +53,8 @@
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 0,
|
"lastModified": 0,
|
||||||
"narHash": "sha256-xb4/Y+Y7ZlkQaA5rXnrXplDzdt2Jfgdmar3+qkb56UA=",
|
"narHash": "sha256-8Eo/jRAgT3CbAloyqOj6uPN1EqBvLI/Tv2g+RxHjkhU=",
|
||||||
"path": "/nix/store/bc6afipyc33jj5iwp10acc848jj3fswr-source",
|
"path": "/nix/store/vg3rs6imxilxn66gf6vb8m98d7ib35f8-source",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -64,23 +64,23 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1730504152,
|
"lastModified": 1738452942,
|
||||||
"narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=",
|
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
|
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
|
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731676054,
|
"lastModified": 1739020877,
|
||||||
"narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
|
"narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
|
"rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -122,11 +122,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1732013921,
|
"lastModified": 1738953846,
|
||||||
"narHash": "sha256-grEEN4LjL4DTDZUyZjVcj9dXRykH/SKnpOIADN0q5w8=",
|
"narHash": "sha256-yrK3Hjcr8F7qS/j2F+r7C7o010eVWWlm4T1PrbKBOxQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "5f5c2787576f3e39bbc2ebdbf8521b3177c5c19c",
|
"rev": "4f09b473c936d41582dd744e19f34ec27592c5fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,18 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
database::StateHandle, entities::{self, post, prelude, user}, error::Error, objects::{
|
database::StateHandle,
|
||||||
|
entities::{self, post, prelude, user},
|
||||||
|
error::Error,
|
||||||
|
objects::{
|
||||||
person::DbUser,
|
person::DbUser,
|
||||||
post::{DbPost, Note},
|
post::{DbPost, Note},
|
||||||
}, utils::{base_url_encode, generate_create_id, generate_random_object_id}, versia::{conversion::{versia_post_from_db, versia_user_from_db}, objects::SortAlphabetically, superx::request_client}, API_DOMAIN, AUTH, DB
|
},
|
||||||
|
utils::{base_url_encode, generate_create_id, generate_random_object_id},
|
||||||
|
versia::{
|
||||||
|
conversion::{versia_post_from_db, versia_user_from_db},
|
||||||
|
objects::SortAlphabetically,
|
||||||
|
superx::request_client,
|
||||||
|
},
|
||||||
|
API_DOMAIN, AUTH, DB,
|
||||||
};
|
};
|
||||||
use activitypub_federation::{
|
use activitypub_federation::{
|
||||||
activity_sending::SendActivityTask,
|
activity_sending::SendActivityTask,
|
||||||
|
|
@ -75,12 +85,8 @@ impl CreatePost {
|
||||||
id: generate_create_id(data.domain(), &db_entry.id, &encoded_url)?,
|
id: generate_create_id(data.domain(), &db_entry.id, &encoded_url)?,
|
||||||
};
|
};
|
||||||
let create_with_context = WithContext::new_default(create);
|
let create_with_context = WithContext::new_default(create);
|
||||||
let sends = SendActivityTask::prepare(
|
let sends =
|
||||||
&create_with_context,
|
SendActivityTask::prepare(&create_with_context, &data.local_user().await?, inbox, data)
|
||||||
&data.local_user().await?,
|
|
||||||
inbox,
|
|
||||||
data,
|
|
||||||
)
|
|
||||||
.await?;
|
.await?;
|
||||||
for send in sends {
|
for send in sends {
|
||||||
send.sign_and_send(data).await?;
|
send.sign_and_send(data).await?;
|
||||||
|
|
@ -150,9 +156,11 @@ async fn federate_inbox(note: crate::entities::post::Model) -> anyhow::Result<()
|
||||||
let model = prelude::User::find()
|
let model = prelude::User::find()
|
||||||
.filter(user::Column::Id.eq(note.creator.as_str()))
|
.filter(user::Column::Id.eq(note.creator.as_str()))
|
||||||
.one(db)
|
.one(db)
|
||||||
.await?.unwrap();
|
.await?
|
||||||
|
.unwrap();
|
||||||
for inbox in array {
|
for inbox in array {
|
||||||
let push = req_client.post(inbox.clone())
|
let push = req_client
|
||||||
|
.post(inbox.clone())
|
||||||
.bearer_auth(AUTH.to_string())
|
.bearer_auth(AUTH.to_string())
|
||||||
.json(&SortAlphabetically(&versia_post));
|
.json(&SortAlphabetically(&versia_post));
|
||||||
warn!("{}", inbox.to_string());
|
warn!("{}", inbox.to_string());
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ use crate::{
|
||||||
post, prelude, user,
|
post, prelude, user,
|
||||||
},
|
},
|
||||||
error,
|
error,
|
||||||
versia::funcs::send_follow_accept_to_versia,
|
|
||||||
utils::{generate_follow_accept_id, generate_random_object_id},
|
utils::{generate_follow_accept_id, generate_random_object_id},
|
||||||
|
versia::funcs::send_follow_accept_to_versia,
|
||||||
DB,
|
DB,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@ use crate::{
|
||||||
database::StateHandle,
|
database::StateHandle,
|
||||||
entities::user,
|
entities::user,
|
||||||
error::Error,
|
error::Error,
|
||||||
|
objects::person::{DbUser, PersonAcceptedActivities},
|
||||||
|
utils::generate_user_id,
|
||||||
versia::{
|
versia::{
|
||||||
self,
|
self,
|
||||||
conversion::{db_user_from_url, local_db_user_from_name, receive_versia_note},
|
conversion::{db_user_from_url, local_db_user_from_name, receive_versia_note},
|
||||||
},
|
},
|
||||||
objects::person::{DbUser, PersonAcceptedActivities},
|
|
||||||
utils::generate_user_id,
|
|
||||||
API_DOMAIN, LYSAND_DOMAIN,
|
API_DOMAIN, LYSAND_DOMAIN,
|
||||||
};
|
};
|
||||||
use activitypub_federation::{
|
use activitypub_federation::{
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,6 @@ use clap::Parser;
|
||||||
use database::Database;
|
use database::Database;
|
||||||
use entities::post;
|
use entities::post;
|
||||||
use http::{http_get_user, http_post_user_inbox, webfinger};
|
use http::{http_get_user, http_post_user_inbox, webfinger};
|
||||||
use versia::http::{
|
|
||||||
create_activity, fetch_versia_post, fetch_post, fetch_user, versia_inbox, query_post,
|
|
||||||
};
|
|
||||||
use objects::person::{DbUser, Person};
|
use objects::person::{DbUser, Person};
|
||||||
use sea_orm::{ActiveModelTrait, DatabaseConnection, Set};
|
use sea_orm::{ActiveModelTrait, DatabaseConnection, Set};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
@ -32,6 +29,9 @@ use tracing::{info, instrument::WithSubscriber};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use utils::generate_object_id;
|
use utils::generate_object_id;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
use versia::http::{
|
||||||
|
create_activity, fetch_post, fetch_user, fetch_versia_post, query_post, versia_inbox,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
activities::create_post::CreatePost,
|
activities::create_post::CreatePost,
|
||||||
|
|
@ -47,9 +47,9 @@ mod database;
|
||||||
mod entities;
|
mod entities;
|
||||||
mod error;
|
mod error;
|
||||||
mod http;
|
mod http;
|
||||||
mod versia;
|
|
||||||
mod objects;
|
mod objects;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
mod versia;
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
struct Response {
|
struct Response {
|
||||||
|
|
|
||||||
|
|
@ -188,10 +188,7 @@ impl Object for user::Model {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn from_json(
|
async fn from_json(json: Self::Kind, data: &Data<Self::DataType>) -> Result<Self, Self::Error> {
|
||||||
json: Self::Kind,
|
|
||||||
data: &Data<Self::DataType>,
|
|
||||||
) -> Result<Self, Self::Error> {
|
|
||||||
let query = User::find()
|
let query = User::find()
|
||||||
.filter(user::Column::Url.eq(json.id.inner().as_str()))
|
.filter(user::Column::Url.eq(json.id.inner().as_str()))
|
||||||
.one(data.database_connection.as_ref())
|
.one(data.database_connection.as_ref())
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
activities::create_post::CreatePost, database::StateHandle, entities::{prelude::Post, user, post}, error::Error, objects::person::DbUser, utils::generate_object_id, versia::conversion::db_user_from_url
|
activities::create_post::CreatePost,
|
||||||
|
database::StateHandle,
|
||||||
|
entities::{post, prelude::Post, user},
|
||||||
|
error::Error,
|
||||||
|
objects::person::DbUser,
|
||||||
|
utils::generate_object_id,
|
||||||
|
versia::conversion::db_user_from_url,
|
||||||
};
|
};
|
||||||
use activitypub_federation::{
|
use activitypub_federation::{
|
||||||
config::Data,
|
config::Data,
|
||||||
|
|
|
||||||
|
|
@ -146,10 +146,12 @@ pub async fn versia_user_from_db(
|
||||||
} else {
|
} else {
|
||||||
inbox_url = Url::parse(&("https://".to_string() + &API_DOMAIN + "/apbridge/versia/inbox"))?;
|
inbox_url = Url::parse(&("https://".to_string() + &API_DOMAIN + "/apbridge/versia/inbox"))?;
|
||||||
followers_url = Url::parse(
|
followers_url = Url::parse(
|
||||||
("https://".to_string() + &API_DOMAIN + "/apbridge/versia/followers/" + &user.id).as_str(),
|
("https://".to_string() + &API_DOMAIN + "/apbridge/versia/followers/" + &user.id)
|
||||||
|
.as_str(),
|
||||||
)?;
|
)?;
|
||||||
following_url = Url::parse(
|
following_url = Url::parse(
|
||||||
("https://".to_string() + &API_DOMAIN + "/apbridge/versia/following/" + &user.id).as_str(),
|
("https://".to_string() + &API_DOMAIN + "/apbridge/versia/following/" + &user.id)
|
||||||
|
.as_str(),
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -522,10 +524,18 @@ pub async fn receive_versia_note(
|
||||||
kind: Default::default(),
|
kind: Default::default(),
|
||||||
});
|
});
|
||||||
continue;
|
continue;
|
||||||
} else if !(l_tag.clone().to_string().contains(LYSAND_DOMAIN.as_str()) || l_tag.clone().to_string().contains(domain)) {
|
} else if !(l_tag.clone().to_string().contains(LYSAND_DOMAIN.as_str())
|
||||||
println!("{}", l_tag.clone().to_string().contains(LYSAND_DOMAIN.as_str()) );
|
|| l_tag.clone().to_string().contains(domain))
|
||||||
|
{
|
||||||
|
println!(
|
||||||
|
"{}",
|
||||||
|
l_tag.clone().to_string().contains(LYSAND_DOMAIN.as_str())
|
||||||
|
);
|
||||||
println!("{}", l_tag.clone().to_string().contains(domain));
|
println!("{}", l_tag.clone().to_string().contains(domain));
|
||||||
println!("-------------- {} -----------------a", l_tag.clone().to_string());
|
println!(
|
||||||
|
"-------------- {} -----------------a",
|
||||||
|
l_tag.clone().to_string()
|
||||||
|
);
|
||||||
tag.push(Mention {
|
tag.push(Mention {
|
||||||
href: l_tag,
|
href: l_tag,
|
||||||
kind: Default::default(),
|
kind: Default::default(),
|
||||||
|
|
@ -534,10 +544,8 @@ pub async fn receive_versia_note(
|
||||||
}
|
}
|
||||||
println!("+++++++ --------- ++++++++++");
|
println!("+++++++ --------- ++++++++++");
|
||||||
let user = db_user_from_url(l_tag).await?;
|
let user = db_user_from_url(l_tag).await?;
|
||||||
let ap_url = Url::parse(&format!(
|
let ap_url =
|
||||||
"https://{}/apbridge/user/{}",
|
Url::parse(&format!("https://{}/apbridge/user/{}", domain, user.id).to_string())?;
|
||||||
domain, user.id
|
|
||||||
).to_string())?;
|
|
||||||
tag.push(Mention {
|
tag.push(Mention {
|
||||||
href: ap_url,
|
href: ap_url,
|
||||||
kind: Default::default(),
|
kind: Default::default(),
|
||||||
|
|
@ -619,10 +627,9 @@ pub async fn receive_versia_note(
|
||||||
tag,
|
tag,
|
||||||
attributed_to: {
|
attributed_to: {
|
||||||
let user = db_user_from_url(Url::parse(user.uri.clone().as_str()).unwrap()).await?;
|
let user = db_user_from_url(Url::parse(user.uri.clone().as_str()).unwrap()).await?;
|
||||||
let ap_url = Url::parse(&format!(
|
let ap_url = Url::parse(
|
||||||
"https://{}/apbridge/user/{}",
|
&format!("https://{}/apbridge/user/{}", domain, user.id).to_string(),
|
||||||
domain, user.id
|
)?;
|
||||||
).to_string())?;
|
|
||||||
ap_url.into()
|
ap_url.into()
|
||||||
},
|
},
|
||||||
content: option_content_format_text(note.content)
|
content: option_content_format_text(note.content)
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ use crate::{
|
||||||
prelude, user,
|
prelude, user,
|
||||||
},
|
},
|
||||||
error,
|
error,
|
||||||
|
objects::{self, person::Person},
|
||||||
|
utils::{base_url_decode, generate_create_id, generate_user_id},
|
||||||
versia::{
|
versia::{
|
||||||
conversion::{versia_post_from_db, versia_user_from_db},
|
conversion::{versia_post_from_db, versia_user_from_db},
|
||||||
inbox::inbox_entry,
|
inbox::inbox_entry,
|
||||||
},
|
},
|
||||||
objects::{self, person::Person},
|
|
||||||
utils::{base_url_decode, generate_create_id, generate_user_id},
|
|
||||||
Response, API_DOMAIN, DB, FEDERATION_CONFIG,
|
Response, API_DOMAIN, DB, FEDERATION_CONFIG,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
activities::{create_post::CreatePost, follow::Follow}, entities::{
|
activities::{create_post::CreatePost, follow::Follow},
|
||||||
|
entities::{
|
||||||
self, follow_relation,
|
self, follow_relation,
|
||||||
prelude::{self, FollowRelation},
|
prelude::{self, FollowRelation},
|
||||||
user,
|
user,
|
||||||
}, utils::generate_follow_req_id, versia::http::main_versia_url_to_user_and_model, API_DOMAIN, DB, FEDERATION_CONFIG
|
},
|
||||||
|
utils::generate_follow_req_id,
|
||||||
|
versia::http::main_versia_url_to_user_and_model,
|
||||||
|
API_DOMAIN, DB, FEDERATION_CONFIG,
|
||||||
};
|
};
|
||||||
use activitypub_federation::{
|
use activitypub_federation::{
|
||||||
activity_sending::SendActivityTask, fetch::object_id::ObjectId, protocol::context::WithContext,
|
activity_sending::SendActivityTask, fetch::object_id::ObjectId, protocol::context::WithContext,
|
||||||
|
|
@ -153,7 +157,10 @@ async fn get_inbox_vec(ap_note: &crate::objects::post::Note) -> Vec<Url> {
|
||||||
let mut inbox: Vec<Url> = Vec::new();
|
let mut inbox: Vec<Url> = Vec::new();
|
||||||
|
|
||||||
let entry = ap_note.to.get(0).unwrap();
|
let entry = ap_note.to.get(0).unwrap();
|
||||||
if entry.to_string().eq_ignore_ascii_case(public().to_string().as_str()) {
|
if entry
|
||||||
|
.to_string()
|
||||||
|
.eq_ignore_ascii_case(public().to_string().as_str())
|
||||||
|
{
|
||||||
let (_, mentions) = ap_note.to.split_at(2);
|
let (_, mentions) = ap_note.to.split_at(2);
|
||||||
inbox_users.append(&mut mentions.to_vec());
|
inbox_users.append(&mut mentions.to_vec());
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -163,13 +170,14 @@ async fn get_inbox_vec(ap_note: &crate::objects::post::Note) -> Vec<Url> {
|
||||||
|
|
||||||
inbox_users.dedup();
|
inbox_users.dedup();
|
||||||
|
|
||||||
|
|
||||||
let conf = FEDERATION_CONFIG.get().unwrap();
|
let conf = FEDERATION_CONFIG.get().unwrap();
|
||||||
let data = &conf.to_request_data();
|
let data = &conf.to_request_data();
|
||||||
|
|
||||||
for user in inbox_users {
|
for user in inbox_users {
|
||||||
let ap_user = ObjectId::<user::Model>::from(user).dereference(data)
|
let ap_user = ObjectId::<user::Model>::from(user)
|
||||||
.await.unwrap();
|
.dereference(data)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
inbox.push(Url::parse(&ap_user.inbox).unwrap());
|
inbox.push(Url::parse(&ap_user.inbox).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,7 @@ pub async fn deserialize_versia_type(data: String) -> anyhow::Result<String> {
|
||||||
Ok(versia_type)
|
Ok(versia_type)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn serialize_versia_type(
|
pub async fn serialize_versia_type(versia_type: String) -> anyhow::Result<String> {
|
||||||
versia_type: String,
|
|
||||||
) -> anyhow::Result<String> {
|
|
||||||
let data = serde_json::to_string(&versia_type)?;
|
let data = serde_json::to_string(&versia_type)?;
|
||||||
Ok(data)
|
Ok(data)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,11 @@ async fn test_user_serial() {
|
||||||
let user = super::superx::deserialize_user(response.text().await.unwrap())
|
let user = super::superx::deserialize_user(response.text().await.unwrap())
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let response_outbox = client.get(user.collections.outbox.as_str()).send().await.unwrap();
|
let response_outbox = client
|
||||||
|
.get(user.collections.outbox.as_str())
|
||||||
|
.send()
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
let outbox = super::superx::deserialize_outbox(response_outbox.text().await.unwrap())
|
let outbox = super::superx::deserialize_outbox(response_outbox.text().await.unwrap())
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue