add card
This commit is contained in:
parent
d2a394cec2
commit
57365a41a5
@ -1 +1 @@
|
||||
Subproject commit 9cbca76fc7846495894b254881cde1f7dc0ae363
|
||||
Subproject commit 03a64c3652bd60cc8cfab09bd70368a1c7dab9d8
|
10
README.md
10
README.md
@ -107,3 +107,13 @@ ADMIN=syui.syu.is
|
||||
$ docker compose build
|
||||
$ docker compose up -d
|
||||
```
|
||||
|
||||
## pds
|
||||
|
||||
- https://atproto.com/ja/guides/lexicon
|
||||
- https://at.syu.is/at/did:plc:uqzpqmrjnptsxezjx4xuh2mn/ai.syui.card/3lagpwihqxi2v
|
||||
|
||||
```sh
|
||||
# oauth(button)
|
||||
[yui]ai.syui.card.verify -> [user]ai.syui.card
|
||||
```
|
||||
|
120
src/main.rs
120
src/main.rs
@ -30,6 +30,8 @@ pub mod notify_read;
|
||||
pub mod openai;
|
||||
pub mod post;
|
||||
pub mod post_link;
|
||||
pub mod post_card;
|
||||
pub mod post_card_verify;
|
||||
pub mod profile;
|
||||
pub mod refresh;
|
||||
pub mod reply;
|
||||
@ -154,6 +156,73 @@ fn main() {
|
||||
.alias("c"),
|
||||
)
|
||||
)
|
||||
.command(
|
||||
Command::new("card")
|
||||
.description("-v <at://verify> -i <int:id> -p <int:cp> -r <int:rank> -c <collection> -a <author> -img <link> -rare <normal>")
|
||||
.action(card)
|
||||
.flag(
|
||||
Flag::new("id", FlagType::Int)
|
||||
.alias("i"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("cp", FlagType::Int)
|
||||
.alias("p"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("rank", FlagType::Int)
|
||||
.alias("r"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("rare", FlagType::Int)
|
||||
)
|
||||
.flag(
|
||||
Flag::new("col", FlagType::String)
|
||||
.alias("c"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("author", FlagType::String)
|
||||
.alias("a"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("verify", FlagType::String)
|
||||
.alias("v"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("img", FlagType::String)
|
||||
)
|
||||
)
|
||||
.command(
|
||||
Command::new("card-verify")
|
||||
.description("<at://verify> -c <collection> -i <id> -p <cp> -r <rank> -rare <normal> -h <syui.ai> -d <did>")
|
||||
.action(card_verify)
|
||||
.flag(
|
||||
Flag::new("col", FlagType::String)
|
||||
.alias("c"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("id", FlagType::Int)
|
||||
.alias("i"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("cp", FlagType::Int)
|
||||
.alias("p"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("rank", FlagType::Int)
|
||||
.alias("r"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("rare", FlagType::String)
|
||||
)
|
||||
.flag(
|
||||
Flag::new("handle", FlagType::String)
|
||||
.alias("handle"),
|
||||
)
|
||||
.flag(
|
||||
Flag::new("did", FlagType::String)
|
||||
.alias("did"),
|
||||
)
|
||||
)
|
||||
.command(
|
||||
Command::new("like")
|
||||
.description("like <cid> -u <uri>")
|
||||
@ -474,6 +543,57 @@ fn like(c: &Context) {
|
||||
return res;
|
||||
}
|
||||
|
||||
async fn c_card(c: &Context) -> Result<(), Box<dyn std::error::Error>> {
|
||||
//let m = c.args[0].to_string();
|
||||
let author = c.string_flag("author").unwrap_or_else(|_| "syui".to_string());
|
||||
let verify = c.string_flag("verify").unwrap_or_else(|_| "at://did:plc:4hqjfn7m6n5hno3doamuhgef/ai.syui.card.verify/3lagpvhppmd2q".to_string());
|
||||
let col = c.string_flag("col").unwrap_or_else(|_| "ai.syui.card".to_string());
|
||||
//let img = c.string_flag("img").unwrap_or_else(|_| "bafkreigvcjc46qtelpc4wsg7fwf6qktbi6a23ouqiupth2r37zhrn7wbza".to_string());
|
||||
let id = c.int_flag("id")?.try_into()?;
|
||||
let cp = c.int_flag("cp")?.try_into()?;
|
||||
let rank = c.int_flag("rank")?.try_into()?;
|
||||
let rare = c.string_flag("rare").unwrap_or_else(|_| "normal".to_string());
|
||||
let str = post_card::post_request(verify, id, cp, rank, rare, col, author);
|
||||
println!("{}", str.await);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn card(c: &Context) {
|
||||
refresh(c);
|
||||
tokio::runtime::Runtime::new()
|
||||
.unwrap()
|
||||
.block_on(async {
|
||||
if let Err(e) = c_card(c).await {
|
||||
eprintln!("Error: {}", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async fn c_card_verify(c: &Context) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let col = c.string_flag("col").unwrap_or_else(|_| "ai.syui.card.verify".to_string());
|
||||
let img = c.string_flag("img").unwrap_or_else(|_| "bafkreigvcjc46qtelpc4wsg7fwf6qktbi6a23ouqiupth2r37zhrn7wbza".to_string());
|
||||
let id = c.int_flag("id")?.try_into()?;
|
||||
let cp = c.int_flag("cp")?.try_into()?;
|
||||
let rank = c.int_flag("rank")?.try_into()?;
|
||||
let rare = c.string_flag("rare").unwrap_or_else(|_| "normal".to_string());
|
||||
let user_handle = c.string_flag("handle").unwrap_or_else(|_| "syui.ai".to_string());
|
||||
let user_did = c.string_flag("did").unwrap_or_else(|_| "did:plc:uqzpqmrjnptsxezjx4xuh2mn".to_string());
|
||||
let str = post_card_verify::post_request(col, img, id, cp, rank, rare, user_handle, user_did);
|
||||
println!("{}", str.await);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn card_verify(c: &Context) {
|
||||
refresh(c);
|
||||
tokio::runtime::Runtime::new()
|
||||
.unwrap()
|
||||
.block_on(async {
|
||||
if let Err(e) = c_card_verify(c).await {
|
||||
eprintln!("Error: {}", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
fn repost(c: &Context) {
|
||||
refresh(c);
|
||||
let m = c.args[0].to_string();
|
||||
|
46
src/post_card.rs
Normal file
46
src/post_card.rs
Normal file
@ -0,0 +1,46 @@
|
||||
extern crate reqwest;
|
||||
use crate::data_toml;
|
||||
use crate::data_refresh;
|
||||
use crate::url;
|
||||
use iso8601_timestamp::Timestamp;
|
||||
use serde_json::json;
|
||||
|
||||
pub async fn post_request(verify: String, id: i32, cp: i32, rank: i32, rare: String, col: String, author: String) -> String {
|
||||
let token = data_refresh(&"access");
|
||||
let did = data_toml(&"did");
|
||||
let handle = data_toml(&"handle");
|
||||
|
||||
let url = url(&"record_create");
|
||||
|
||||
let d = Timestamp::now_utc();
|
||||
let d = d.to_string();
|
||||
|
||||
let post = Some(json!({
|
||||
"repo": handle.to_string(),
|
||||
"did": did.to_string(),
|
||||
"collection": col.to_string(),
|
||||
"record": {
|
||||
"id": id,
|
||||
"cp": cp,
|
||||
"rank": rank,
|
||||
"rare": rare.to_string(),
|
||||
"author": author.to_string(),
|
||||
"verify": verify.to_string(),
|
||||
"createdAt": d.to_string(),
|
||||
},
|
||||
}));
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
let res = client
|
||||
.post(url)
|
||||
.json(&post)
|
||||
.header("Authorization", "Bearer ".to_owned() + &token)
|
||||
.send()
|
||||
.await
|
||||
.unwrap()
|
||||
.text()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
return res;
|
||||
}
|
58
src/post_card_verify.rs
Normal file
58
src/post_card_verify.rs
Normal file
@ -0,0 +1,58 @@
|
||||
extern crate reqwest;
|
||||
use crate::data_toml;
|
||||
use crate::data_refresh;
|
||||
use crate::url;
|
||||
use iso8601_timestamp::Timestamp;
|
||||
use serde_json::json;
|
||||
|
||||
pub async fn post_request(col: String, img: String, id: i32, cp: i32, rank: i32, rare: String, user_handle: String, user_did: String) -> String {
|
||||
let token = data_refresh(&"access");
|
||||
let did = data_toml(&"did");
|
||||
let handle = data_toml(&"handle");
|
||||
let url = url(&"record_create");
|
||||
let d = Timestamp::now_utc();
|
||||
let d = d.to_string();
|
||||
let link = "https://bsky.app/profile/yui.syui.ai".to_string();
|
||||
let post = Some(json!({
|
||||
"repo": handle.to_string(),
|
||||
"did": did.to_string(),
|
||||
"collection": col.to_string(),
|
||||
"record": {
|
||||
"id": id,
|
||||
"cp": cp,
|
||||
"rank": rank,
|
||||
"rare": rare.to_string(),
|
||||
"handle": user_handle.to_string(),
|
||||
"did": user_did.to_string(),
|
||||
"embed": {
|
||||
"$type": "app.bsky.embed.external",
|
||||
"external": {
|
||||
"uri": link,
|
||||
"thumb": {
|
||||
"$type": "blob",
|
||||
"ref": {
|
||||
"$link": img.to_string()
|
||||
},
|
||||
"mimeType": "image/jpeg",
|
||||
"size": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"createdAt": d.to_string(),
|
||||
},
|
||||
}));
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
let res = client
|
||||
.post(url)
|
||||
.json(&post)
|
||||
.header("Authorization", "Bearer ".to_owned() + &token)
|
||||
.send()
|
||||
.await
|
||||
.unwrap()
|
||||
.text()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
return res;
|
||||
}
|
Loading…
Reference in New Issue
Block a user