Merge pull request #5 from wookiecooking/master

Accepted merge. Closes Issue #4
This commit is contained in:
Brad Metcalf 2015-03-30 21:14:12 -05:00
commit 225e1bc80d
7 changed files with 94 additions and 16 deletions

1
.jshintignore Normal file
View file

@ -0,0 +1 @@
php-webkit/jquery.min.js

29
.jshintrc Normal file
View file

@ -0,0 +1,29 @@
{
"node": true,
"esnext": true,
"camelcase": false,
"curly": true,
"-W041": false,
"immed": true,
"indent": 2,
"latedef": false,
"newcap": true,
"noarg": true,
"regexp": true,
"undef": false,
"unused": false,
"trailing": true,
"smarttabs": true,
"white": true,
"globals": {
/* Mocha */
"describe": false,
"it": false,
"before": false,
"beforeEach": false,
"after": false,
"afterEach": false,
/* Lodash / Underscore */
"_": false
}
}

21
gulpfile.js Normal file
View file

@ -0,0 +1,21 @@
'use strict';
var gulp = require('gulp');
var mocha = require('gulp-mocha');
var jshint = require('gulp-jshint');
var stylish = require('jshint-stylish');
gulp.task('lint', function () {
return gulp.src([
'./php-webkit/**/*.js',
'./lib/**/*.js'
])
.pipe(jshint())
.pipe(jshint.reporter(stylish))
.pipe(jshint.reporter('fail'));
});
gulp.task('test', ['lint'], function () {
return gulp.src('./tests/index.js')
.pipe(mocha({bail: true}));
});

View file

@ -19,8 +19,12 @@ function runPHP(req, response, next, phpinfo){
var pathinfo = ""; var pathinfo = "";
var i = req.url.indexOf(".php"); var i = req.url.indexOf(".php");
if(i > 0) pathinfo = parts.pathname.substring(i+4);
else pathinfo = parts.pathname; if(i > 0) {
pathinfo = parts.pathname.substring(i+4);
} else {
pathinfo = parts.pathname;
}
var env = { var env = {
SERVER_SIGNATURE: "php-webkit", SERVER_SIGNATURE: "php-webkit",
@ -65,7 +69,7 @@ function runPHP(req, response, next, phpinfo){
REDIRECT_STATUS: 1 REDIRECT_STATUS: 1
}; };
Object.keys(req.headers).map(function(x){return env["HTTP_"+x.toUpperCase().replace("-", "_")] = req.headers[x];}); Object.keys(req.headers).map(function(x){env["HTTP_"+x.toUpperCase().replace("-", "_")] = req.headers[x];});
if(/.*?\.php$/.test(file)){ if(/.*?\.php$/.test(file)){
var res = "", err = ""; var res = "", err = "";
@ -104,7 +108,7 @@ function runPHP(req, response, next, phpinfo){
if(lines.length){ if(lines.length){
do { do {
var m = lines[line].split(": "); var m = lines[line].split(": ");
if(m[0] === "") break; if(m[0] === "") { break; }
//console.log("HEADER: "+m[0]+": "+m[1]); //console.log("HEADER: "+m[0]+": "+m[1]);
if(m[0] == "Status"){ if(m[0] == "Status"){
@ -141,8 +145,11 @@ exports.cgi = function(phpinfo){
req.on('data', function(chunk) { req.on('data', function(chunk) {
//data.write(chunk.toString('binary'), data.length, chunk.length, 'binary'); //data.write(chunk.toString('binary'), data.length, chunk.length, 'binary');
//console.log(chunk); //console.log(chunk);
if(!data) data = chunk; if(!data) {
else data = data+chunk; data = chunk;
} else {
data = data+chunk;
}
//data = data.concat(chunk); //data = data.concat(chunk);
}); });
req.on('end', function() { req.on('end', function() {
@ -151,5 +158,5 @@ exports.cgi = function(phpinfo){
//console.log("ENCODING: "+req.get("Content-type")+", len: "+req.rawBody.length); //console.log("ENCODING: "+req.get("Content-type")+", len: "+req.rawBody.length);
runPHP(req, res, next, phpinfo); runPHP(req, res, next, phpinfo);
}); });
} };
} };

View file

@ -1,17 +1,28 @@
{ {
"name": "php-webkit", "name": "php-webkit",
"description": "Allows you to run PHP within node-webkit.", "description": "Allows you to run PHP within node-webkit.",
"version": "0.1", "version": "0.0.1",
"dependencies":{ "dependencies":{
"express":"4.*.*" "express":"*"
},
"scripts": {
"test": "./node_modules/gulp/bin/gulp.js test"
},
"devDependencies": {
"mocha": "1.*",
"must": ">= 0.11 < 1",
"gulp": "3.*",
"gulp-jshint": "1.*",
"gulp-mocha": "0.*",
"jshint-stylish": "0.*"
}, },
"main": "./php-webkit/index.html", "main": "./php-webkit/index.html",
"node-remote": "<local>", "node-remote": "<local>",
"phpwebkit": { "phpwebkit": {
"bin": "", //The location of your php-cgi binary "bin": "",
"path": "./application", //The path to your PHP application "path": "./application",
"host": "127.0.0.1", //The host the PHP app runs on "host": "127.0.0.1",
"port": 9090 //The port the PHP app runs on "port": 9090
}, },
"license":"MIT", "license":"MIT",
"window": { "window": {

View file

@ -1,7 +1,7 @@
var gui = require('nw.gui'); var gui = require('nw.gui');
var win = gui.Window.get(); var win = gui.Window.get();
var http = require('http'); var http = require('http');
var php = require('./bridge'); var php = require('../lib/bridge');
var express = require('express'); var express = require('express');
var app = express(); var app = express();
var os = require('os'); var os = require('os');

9
tests/index.js Normal file
View file

@ -0,0 +1,9 @@
var phpBridge = require('../lib/bridge');
var demand = require('must');
describe('php-nw Bridge.js', function () {
it('should exist', function () {
demand(phpBridge).to.exist();
});
});