UNPKG

yahoi

Version:

Yet Another Highly Opinionated Isomorphic Framework

140 lines (115 loc) 2.78 kB
import { Controller } from 'yahoi'; const ExampleLinks = [ { title: 'Render-String-1', url: '/examples/render-string-1?name=World' }, { title: 'Render-String-2', url: '/examples/render-string-2?name=World' }, { title: 'Render-Json-1', url: '/examples/render-json-1' }, { title: 'Render-Json-2', url: '/examples/render-json-2' }, { title: 'Render-View-1', url: '/examples/render-view-1/World' }, { title: 'Render-View-2', url: '/examples/render-view-2/World' }, { title: 'Redirect', url: '/examples/redirect' }, { title: 'React Rlient', url: '/examples/client' }, ]; export default class ExampleController extends Controller { constructor(props) { super(props); this.config.environment = this.getEnvironment(); } IndexAction(parameters) { //todo (what if view is not found?) this.sendView('Examples/index', {}); } // String Renderer async RenderString1Action(parameters) { // Parameter validation this.require({ name: this.Joi.string().min(3).required() }); if(parameters.areValid()) { let string = await this.renderString("Hello {{ name }}", { name: parameters.get('name')}); this.send(string); } } RenderString2Action(parameters) { // Parameter validation this.require({ name: this.Joi.string().min(3).required() }); if(parameters.areValid()) { this.sendString("Hello {{ name }}", { name: parameters.get('name') }); } } //Json async RenderJson1Action(parameters) { let json = await this.renderJson({ payload: { id: 100, progress: 37, status: 'initiated' } }); this.send(json); } RenderJson2Action(parameters) { this.sendJson({ payload: { id: 100, progress: 37, status: 'initiated' } }); } //View async RenderView1Action(parameters) { // Parameter validation this.require({ name: this.Joi.string().min(3).required() }); if(parameters.areValid()) { let view = await this.renderView('Examples/exampleView', { name: parameters.get('name') }); this.send(view); } } RenderView2Action(parameters) { // Parameter validation this.require({ name: this.Joi.string().min(3).required() }); if(parameters.areValid()) { this.sendView('Examples/exampleView', { name: parameters.get('name') }); } } //Client ClientAction(parameters) { this.sendClient({ state: { Example: { exampleLinks: ExampleLinks }}}) } //Redirect RedirectAction(parameters) { this.redirect('http://www.google.com'); } }