git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4753 ed5197a5-7fde-0310-b194-c3ffbd925b24
		
			
				
	
	
		
			31 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import * as blog from './blog.js';
 | |
| 
 | |
| async function main() {
 | |
| 	if (request.path.startsWith('%') && request.path.endsWith('.sha256')) {
 | |
| 		let id = request.path.startsWith('%25') ? '%' + request.path.substring(3) : request.path;
 | |
| 		let message = await blog.get_blog_message(id);
 | |
| 		if (message) {
 | |
| 			respond({data: await blog.render_blog_post_html(message), content_type: 'text/html; charset=utf-8'});
 | |
| 		} else {
 | |
| 			respond({data: `Message ${id} not found.`, content_type: 'text/html; charset=utf-8'});
 | |
| 		}
 | |
| 	} else if (request.path == 'atom') {
 | |
| 		let blogs = await blog.get_posts();
 | |
| 		respond({data: blog.render_atom(blogs), content_type: 'application/atom+xml'});
 | |
| 	} else {
 | |
| 		let blogs = await blog.get_posts();
 | |
| 		for (let blog_post of blogs) {
 | |
| 			let title = (blog_post.title || '').replaceAll(/\W/g, '_').toLowerCase();
 | |
| 			if (request.path === title) {
 | |
| 				respond({data: await blog.render_blog_post_html(blog_post), content_type: 'text/html; charset=utf-8'});
 | |
| 				return;
 | |
| 			}
 | |
| 		}
 | |
| 		respond({data: blog.render_html(blogs), content_type: 'text/html; charset=utf-8'});
 | |
| 	}
 | |
| }
 | |
| 
 | |
| main().catch(function(error) {
 | |
| 	respond({data: `<!DOCTYPE html>
 | |
| 	<pre style="color: #f00">${error.message}\n${error.stack}</pre>`, content_type: 'text/html'});
 | |
| }); |