mirror of
				https://github.com/martijndeb/pixdisp.git
				synced 2025-11-04 12:04:19 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
class ApiController {
 | 
						|
 | 
						|
	constructor( server, driver, vmcontroller ) {
 | 
						|
 | 
						|
		this.server = server;
 | 
						|
		this.driver = driver;
 | 
						|
		this.vmcontroller = vmcontroller;
 | 
						|
 | 
						|
		this.server.post( { path: '/api/writecanvas' }, this.writeCanvas.bind( this ) );
 | 
						|
		this.server.post( { path: '/api/runcode' }, this.runCode.bind( this ) );
 | 
						|
 | 
						|
		this.server.get( { path: '/api/write' }, this.write.bind( this ) );
 | 
						|
		this.server.get( { path: '/api/getdisplaysize' }, this.getDisplaySize.bind( this ) );
 | 
						|
		this.server.get( { path: '/api/setpixel/:x/:y/:r/:g/:b' }, this.setPixel.bind( this ) );
 | 
						|
		this.server.get( { path: '/api/getcode' }, this.getCode.bind( this ) );
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	writeCanvas( request, resource, next ) {
 | 
						|
 | 
						|
		this.driver.clearMatrix();
 | 
						|
 | 
						|
		let data = JSON.parse( request.params.data );
 | 
						|
 | 
						|
		for ( let obj of data) {
 | 
						|
			this.driver.setPixel( obj.y, obj.x, obj.r, obj.g, obj.b );
 | 
						|
		}
 | 
						|
 | 
						|
		let buffer = this.driver.getBuffer();
 | 
						|
		this.driver.write( buffer );
 | 
						|
 | 
						|
		resource.json( 200, { 'msg': 'Ok' } );
 | 
						|
		return next();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	write( request, resource, next ) {
 | 
						|
 | 
						|
		let buffer = this.driver.getBuffer();
 | 
						|
		this.driver.write( buffer );
 | 
						|
 | 
						|
		resource.json( 200, { 'msg': 'Ok' } );
 | 
						|
		return next();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	getDisplaySize( request, resource, next ) {
 | 
						|
 | 
						|
		resource.json( 200, this.driver.getSize() );
 | 
						|
		return next();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	setPixel( request, resource, next ) {
 | 
						|
 | 
						|
		this.driver.setPixel(
 | 
						|
			request.params.x,
 | 
						|
			request.params.y,
 | 
						|
			request.params.r,
 | 
						|
			request.params.g,
 | 
						|
			request.params.b
 | 
						|
		);
 | 
						|
 | 
						|
		resource.json( 200, { 'msg': 'Ok' } );
 | 
						|
		return next();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	getCode( request, resource, next ) {
 | 
						|
 | 
						|
		resource.send( this.vmcontroller.runningCode );
 | 
						|
		return next();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	runCode( request, resource, next ) {
 | 
						|
 | 
						|
		this.runningCode = new Buffer( request.params.code, 'base64' ).toString( 'binary' );
 | 
						|
 | 
						|
		this.vmcontroller.compileScript( this.runningCode );
 | 
						|
		this.vmcontroller.runScript();
 | 
						|
 | 
						|
		resource.json( 200, { 'msg': 'Ok' } );
 | 
						|
		return next();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
exports.ApiController = ApiController; |