import {JSONEncoder} from "../node_modules/assemblyscript-json/assembly/encoder"; export abstract class Response { serialize(): string { unreachable(); return ""; }; } export class Message { message: string; username: string; constructor(message: string, username: string) { this.message = message; this.username = username; } } export class UnknownResponse extends Response { constructor() { super(); } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Unknown"); encoder.setString("message", "cannot username request"); encoder.popObject(); return encoder.toString(); } } export class PostResponse extends Response { count: u32; constructor(count: u32) { super(); this.count = count; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setInteger("count", this.count); encoder.popObject(); return encoder.toString(); } } export class FetchResponse extends Response { posts: Array; constructor(posts: Array) { super(); this.posts = posts; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.pushArray("posts"); for (let i = 0; i < this.posts.length; i++) { let twit = this.posts[i]; encoder.pushObject(null); encoder.setString("message", twit.message); encoder.setString("username", twit.username); encoder.popObject(); } encoder.popArray(); encoder.popObject(); return encoder.toString(); } }