Update nodeinfo (#446)
Fix #433 I added the repo link to Cargo.toml so that `software.repository` could be configurable like @rhaamo suggested. I don't know if it's ok to include `software.repository` without bumping the schema version, but I didn't know if that would break any clients that parse nodeinfo with a hardcoded schema version.
This commit is contained in:
		
							parent
							
								
									64d1944715
								
							
						
					
					
						commit
						7bac70a483
					
				@ -2,6 +2,7 @@
 | 
			
		||||
authors = ["Plume contributors"]
 | 
			
		||||
name = "plume"
 | 
			
		||||
version = "0.2.0"
 | 
			
		||||
repository = "https://github.com/Plume-org/Plume"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
activitypub = "0.1.3"
 | 
			
		||||
 | 
			
		||||
@ -216,20 +216,25 @@ pub fn shared_inbox(conn: DbConn, data: SignedJson<serde_json::Value>, headers:
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[get("/nodeinfo")]
 | 
			
		||||
pub fn nodeinfo(conn: DbConn) -> Result<Json<serde_json::Value>, ErrorPage> {
 | 
			
		||||
    Ok(Json(json!({
 | 
			
		||||
        "version": "2.0",
 | 
			
		||||
#[get("/nodeinfo/<version>")]
 | 
			
		||||
pub fn nodeinfo(conn: DbConn, version: String) -> Result<Json<serde_json::Value>, ErrorPage> {
 | 
			
		||||
    if version != "2.0" || version != "2.1" {
 | 
			
		||||
        return Err(ErrorPage::from(Error::NotFound));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let local_inst = Instance::get_local(&*conn)?;
 | 
			
		||||
    let mut doc = json!({
 | 
			
		||||
        "version": version,
 | 
			
		||||
        "software": {
 | 
			
		||||
            "name": "Plume",
 | 
			
		||||
            "version": env!("CARGO_PKG_VERSION")
 | 
			
		||||
            "name": env!("CARGO_PKG_NAME"),
 | 
			
		||||
            "version": env!("CARGO_PKG_VERSION"),
 | 
			
		||||
        },
 | 
			
		||||
        "protocols": ["activitypub"],
 | 
			
		||||
        "services": {
 | 
			
		||||
            "inbound": [],
 | 
			
		||||
            "outbound": []
 | 
			
		||||
        },
 | 
			
		||||
        "openRegistrations": true,
 | 
			
		||||
        "openRegistrations": local_inst.open_registrations,
 | 
			
		||||
        "usage": {
 | 
			
		||||
            "users": {
 | 
			
		||||
                "total": User::count_local(&*conn)?
 | 
			
		||||
@ -237,8 +242,17 @@ pub fn nodeinfo(conn: DbConn) -> Result<Json<serde_json::Value>, ErrorPage> {
 | 
			
		||||
            "localPosts": Post::count_local(&*conn)?,
 | 
			
		||||
            "localComments": Comment::count_local(&*conn)?
 | 
			
		||||
        },
 | 
			
		||||
        "metadata": {}
 | 
			
		||||
    })))
 | 
			
		||||
        "metadata": {
 | 
			
		||||
            "nodeName": local_inst.name,
 | 
			
		||||
            "nodeDescription": local_inst.short_description
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if version == "2.1" {
 | 
			
		||||
        doc["software"]["repository"] = json!(env!("CARGO_PKG_REPOSITORY"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Ok(Json(doc))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[get("/about")]
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,11 @@ pub fn nodeinfo() -> Content<String> {
 | 
			
		||||
        "links": [
 | 
			
		||||
            {
 | 
			
		||||
                "rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
 | 
			
		||||
                "href": ap_url(&format!("{domain}/nodeinfo", domain = BASE_URL.as_str()))
 | 
			
		||||
                "href": ap_url(&format!("{domain}/nodeinfo/2.0", domain = BASE_URL.as_str()))
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "rel": "http://nodeinfo.diaspora.software/ns/schema/2.1",
 | 
			
		||||
                "href": ap_url(&format!("{domain}/nodeinfo/2.1", domain = BASE_URL.as_str()))
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }).to_string())
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user