add basic nodeinfo 2.0
This commit is contained in:
		
							parent
							
								
									ca724dab9a
								
							
						
					
					
						commit
						0fc002b399
					
				
					 2 changed files with 55 additions and 0 deletions
				
			
		
							
								
								
									
										35
									
								
								src/routes/nodeinfo/nodeinfo_2.0.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/routes/nodeinfo/nodeinfo_2.0.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,35 @@ | ||||||
|  | import { RouteOptions } from "fastify"; | ||||||
|  | import { IsNull } from "typeorm"; | ||||||
|  | 
 | ||||||
|  | import MercuryDataSource from "~/db/index.js"; | ||||||
|  | import { Blog } from "~/db/entities/blog.js"; | ||||||
|  | import { Post } from "~/db/entities/post.js"; | ||||||
|  | 
 | ||||||
|  | const route: RouteOptions = { | ||||||
|  |   method: "GET", | ||||||
|  |   url: "/nodeinfo/2.0", | ||||||
|  |   handler: async (_, res) => { | ||||||
|  |     const userCount = await MercuryDataSource.getRepository(Blog).countBy({ | ||||||
|  |       host: IsNull(), | ||||||
|  |     }); | ||||||
|  |     const postCount = await MercuryDataSource.getRepository(Post).count({ | ||||||
|  |       relations: { blog: true }, | ||||||
|  |       where: { blog: { host: IsNull() } }, | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     res.send({ | ||||||
|  |       version: "2.0", | ||||||
|  |       software: { name: "mercury", version: "0.1.0-dev" }, | ||||||
|  |       protocols: ["activitypub"], | ||||||
|  |       openRegistrations: false, // TODO: get from database
 | ||||||
|  |       usage: { | ||||||
|  |         users: { | ||||||
|  |           total: userCount, | ||||||
|  |         }, | ||||||
|  |         localPosts: postCount, | ||||||
|  |       }, | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export default route; | ||||||
							
								
								
									
										20
									
								
								src/routes/well-known/nodeinfo.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/routes/well-known/nodeinfo.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | import { RouteOptions } from "fastify"; | ||||||
|  | 
 | ||||||
|  | import { BASE_URL } from "~/config.js"; | ||||||
|  | 
 | ||||||
|  | const route: RouteOptions = { | ||||||
|  |   method: "GET", | ||||||
|  |   url: "/.well-known/nodeinfo", | ||||||
|  |   handler: async (_, res) => { | ||||||
|  |     res.send({ | ||||||
|  |       links: [ | ||||||
|  |         { | ||||||
|  |           href: `${BASE_URL}/nodeinfo/2.0`, | ||||||
|  |           rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export default route; | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue