lesmaux 7 years ago
commit 294b3ff7d3

@ -9,7 +9,7 @@ exports.connect = function(done){
state.pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
password: '',
port: 3306,
database: "territory-walker",
//multipleStatements: true

274
api/package-lock.json generated

@ -9,10 +9,10 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
"co": "4.6.0",
"fast-deep-equal": "1.1.0",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1"
}
},
"asn1": {
@ -20,7 +20,7 @@
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"requires": {
"safer-buffer": "~2.1.0"
"safer-buffer": "2.1.2"
}
},
"assert-plus": {
@ -55,7 +55,7 @@
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"optional": true,
"requires": {
"tweetnacl": "^0.14.3"
"tweetnacl": "0.14.5"
}
},
"bignumber.js": {
@ -69,7 +69,7 @@
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
@ -78,10 +78,10 @@
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz",
"integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=",
"requires": {
"dtrace-provider": "~0.8",
"moment": "^2.10.6",
"mv": "~2",
"safe-json-stringify": "~1"
"dtrace-provider": "0.8.7",
"moment": "2.22.2",
"mv": "2.1.1",
"safe-json-stringify": "1.2.0"
}
},
"caseless": {
@ -99,7 +99,7 @@
"resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
"requires": {
"delayed-stream": "~1.0.0"
"delayed-stream": "1.0.0"
}
},
"concat-map": {
@ -118,10 +118,10 @@
"resolved": "https://registry.npmjs.org/csv/-/csv-1.2.1.tgz",
"integrity": "sha1-UjHt/BxxUlEuxFeBB2p6l/9SXAw=",
"requires": {
"csv-generate": "^1.1.2",
"csv-parse": "^1.3.3",
"csv-stringify": "^1.1.2",
"stream-transform": "^0.2.2"
"csv-generate": "1.1.2",
"csv-parse": "1.3.3",
"csv-stringify": "1.1.2",
"stream-transform": "0.2.2"
}
},
"csv-generate": {
@ -139,7 +139,7 @@
"resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.1.2.tgz",
"integrity": "sha1-d6QVJlgbzjOA8SsA18W7rHDIK1g=",
"requires": {
"lodash.get": "~4.4.2"
"lodash.get": "4.4.2"
}
},
"dashdash": {
@ -147,7 +147,7 @@
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "^1.0.0"
"assert-plus": "1.0.0"
}
},
"debug": {
@ -174,7 +174,7 @@
"integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=",
"optional": true,
"requires": {
"nan": "^2.10.0"
"nan": "2.11.0"
}
},
"ecc-jsbn": {
@ -183,8 +183,8 @@
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"optional": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
"jsbn": "0.1.1",
"safer-buffer": "2.1.2"
}
},
"escape-regexp-component": {
@ -197,7 +197,7 @@
"resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz",
"integrity": "sha512-MYYK17A76cuuyvkR7MnqLW4iFYPEi5Isl2qb8rXiWpLiwFS9dxW/rncuNnjjgSENuVqZQkIuR4+DChVL4g1lnw==",
"requires": {
"assert-plus": "^1.0.0"
"assert-plus": "1.0.0"
}
},
"extend": {
@ -230,9 +230,9 @@
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.15.3.tgz",
"integrity": "sha512-W+9ZZcZZlk3jc69mNvLAYy01msIpUp45aAtD/AIRWc5T0voI4WmHzm6oy+F3/jeGjb7AEE7AU8Inq58/gd/E5g==",
"requires": {
"fast-decode-uri-component": "^1.0.0",
"safe-regex": "^1.1.0",
"semver-store": "^0.3.0"
"fast-decode-uri-component": "1.0.0",
"safe-regex": "1.1.0",
"semver-store": "0.3.0"
}
},
"forever-agent": {
@ -245,9 +245,9 @@
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"requires": {
"asynckit": "^0.4.0",
"asynckit": "0.4.0",
"combined-stream": "1.0.6",
"mime-types": "^2.1.12"
"mime-types": "2.1.20"
}
},
"formidable": {
@ -260,7 +260,7 @@
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
"assert-plus": "1.0.0"
}
},
"glob": {
@ -269,11 +269,11 @@
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"optional": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"handle-thing": {
@ -291,8 +291,8 @@
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"requires": {
"ajv": "^5.3.0",
"har-schema": "^2.0.0"
"ajv": "5.5.2",
"har-schema": "2.0.0"
}
},
"hpack.js": {
@ -300,10 +300,10 @@
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
"integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
"requires": {
"inherits": "^2.0.1",
"obuf": "^1.0.0",
"readable-stream": "^2.0.1",
"wbuf": "^1.1.0"
"inherits": "2.0.3",
"obuf": "1.1.2",
"readable-stream": "2.3.6",
"wbuf": "1.7.3"
}
},
"http-deceiver": {
@ -316,9 +316,9 @@
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
"assert-plus": "1.0.0",
"jsprim": "1.4.1",
"sshpk": "1.14.2"
}
},
"inflight": {
@ -327,8 +327,8 @@
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"optional": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
@ -398,8 +398,8 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
"integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
"pseudomap": "1.0.2",
"yallist": "2.1.2"
}
},
"mime": {
@ -417,7 +417,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"requires": {
"mime-db": "~1.36.0"
"mime-db": "1.36.0"
}
},
"minimalistic-assert": {
@ -431,7 +431,7 @@
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
"brace-expansion": "1.1.11"
}
},
"minimist": {
@ -466,9 +466,9 @@
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
"optional": true,
"requires": {
"mkdirp": "~0.5.1",
"ncp": "~2.0.0",
"rimraf": "~2.4.0"
"mkdirp": "0.5.1",
"ncp": "2.0.0",
"rimraf": "2.4.5"
}
},
"mysql": {
@ -514,7 +514,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
"wrappy": "1.0.2"
}
},
"path-is-absolute": {
@ -563,13 +563,13 @@
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.2",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
}
},
"request": {
@ -577,26 +577,26 @@
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
"aws-sign2": "0.7.0",
"aws4": "1.8.0",
"caseless": "0.12.0",
"combined-stream": "1.0.6",
"extend": "3.0.2",
"forever-agent": "0.6.1",
"form-data": "2.3.2",
"har-validator": "5.1.0",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.20",
"oauth-sign": "0.9.0",
"performance-now": "2.1.0",
"qs": "6.5.2",
"safe-buffer": "5.1.2",
"tough-cookie": "2.4.3",
"tunnel-agent": "0.6.0",
"uuid": "3.3.2"
}
},
"restify": {
@ -604,28 +604,28 @@
"resolved": "https://registry.npmjs.org/restify/-/restify-7.2.1.tgz",
"integrity": "sha512-xygVfQn/FiyzSPNIiOlzos6+RVcmTTK/bN0/m4z6vQwUY1yXntAsXM8ckq6hMxYfkhZfbPMM5hvBf75B8zLE1g==",
"requires": {
"assert-plus": "^1.0.0",
"bunyan": "^1.8.12",
"csv": "^1.1.1",
"dtrace-provider": "^0.8.1",
"escape-regexp-component": "^1.0.2",
"ewma": "^2.0.1",
"find-my-way": "^1.13.0",
"formidable": "^1.2.1",
"http-signature": "^1.2.0",
"lodash": "^4.17.10",
"lru-cache": "^4.1.3",
"mime": "^1.5.0",
"negotiator": "^0.6.1",
"once": "^1.4.0",
"pidusage": "^1.2.0",
"qs": "^6.5.2",
"restify-errors": "^5.0.0",
"semver": "^5.4.1",
"spdy": "^3.4.7",
"uuid": "^3.1.0",
"vasync": "^1.6.4",
"verror": "^1.10.0"
"assert-plus": "1.0.0",
"bunyan": "1.8.12",
"csv": "1.2.1",
"dtrace-provider": "0.8.7",
"escape-regexp-component": "1.0.2",
"ewma": "2.0.1",
"find-my-way": "1.15.3",
"formidable": "1.2.1",
"http-signature": "1.2.0",
"lodash": "4.17.11",
"lru-cache": "4.1.3",
"mime": "1.6.0",
"negotiator": "0.6.1",
"once": "1.4.0",
"pidusage": "1.2.0",
"qs": "6.5.2",
"restify-errors": "5.0.0",
"semver": "5.5.1",
"spdy": "3.4.7",
"uuid": "3.3.2",
"vasync": "1.6.4",
"verror": "1.10.0"
}
},
"restify-errors": {
@ -633,10 +633,10 @@
"resolved": "https://registry.npmjs.org/restify-errors/-/restify-errors-5.0.0.tgz",
"integrity": "sha512-+vby9Kxf7qlzvbZSTIEGkIixkeHG+pVCl34dk6eKnL+ua4pCezpdLT/1/eabzPZb65ADrgoc04jeWrrF1E1pvQ==",
"requires": {
"assert-plus": "^1.0.0",
"lodash": "^4.2.1",
"safe-json-stringify": "^1.0.3",
"verror": "^1.8.1"
"assert-plus": "1.0.0",
"lodash": "4.17.11",
"safe-json-stringify": "1.2.0",
"verror": "1.10.0"
}
},
"restify-simple-versioning": {
@ -644,7 +644,7 @@
"resolved": "https://registry.npmjs.org/restify-simple-versioning/-/restify-simple-versioning-1.0.0.tgz",
"integrity": "sha512-g20huxy+BkCJhgH678vVDDdFO9gIjeK4VR7Se9h03gSBGO6gZY5sjNaOHTCrl+Cw+eAg8I85EEx5bWrvFOLZQQ==",
"requires": {
"restify-errors": "^5.0.0"
"restify-errors": "5.0.0"
}
},
"ret": {
@ -658,7 +658,7 @@
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
"optional": true,
"requires": {
"glob": "^6.0.1"
"glob": "6.0.4"
}
},
"safe-buffer": {
@ -677,7 +677,7 @@
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"requires": {
"ret": "~0.1.10"
"ret": "0.1.15"
}
},
"safer-buffer": {
@ -705,12 +705,12 @@
"resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
"integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
"requires": {
"debug": "^2.6.8",
"handle-thing": "^1.2.5",
"http-deceiver": "^1.2.7",
"safe-buffer": "^5.0.1",
"select-hose": "^2.0.0",
"spdy-transport": "^2.0.18"
"debug": "2.6.9",
"handle-thing": "1.2.5",
"http-deceiver": "1.2.7",
"safe-buffer": "5.1.2",
"select-hose": "2.0.0",
"spdy-transport": "2.1.0"
}
},
"spdy-transport": {
@ -718,13 +718,13 @@
"resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
"integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
"requires": {
"debug": "^2.6.8",
"detect-node": "^2.0.3",
"hpack.js": "^2.1.6",
"obuf": "^1.1.1",
"readable-stream": "^2.2.9",
"safe-buffer": "^5.0.1",
"wbuf": "^1.7.2"
"debug": "2.6.9",
"detect-node": "2.0.4",
"hpack.js": "2.1.6",
"obuf": "1.1.2",
"readable-stream": "2.3.6",
"safe-buffer": "5.1.2",
"wbuf": "1.7.3"
}
},
"sqlstring": {
@ -737,15 +737,15 @@
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
"asn1": "0.2.4",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.2",
"dashdash": "1.14.1",
"ecc-jsbn": "0.1.2",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"safer-buffer": "2.1.2",
"tweetnacl": "0.14.5"
}
},
"stream-transform": {
@ -758,7 +758,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
"safe-buffer": "5.1.2"
}
},
"tough-cookie": {
@ -766,8 +766,8 @@
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
"psl": "1.1.29",
"punycode": "1.4.1"
}
},
"tunnel-agent": {
@ -775,7 +775,7 @@
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "^5.0.1"
"safe-buffer": "5.1.2"
}
},
"tweetnacl": {
@ -822,9 +822,9 @@
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "^1.0.0",
"assert-plus": "1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
"extsprintf": "1.3.0"
}
},
"wbuf": {
@ -832,7 +832,7 @@
"resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
"integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
"requires": {
"minimalistic-assert": "^1.0.0"
"minimalistic-assert": "1.0.1"
}
},
"wrappy": {

@ -23,7 +23,7 @@ CREATE TABLE `userJoinedGames` (
);
CREATE TABLE `polygonArea` (
gameID VARCHAR(6) UNIQUE NOT NULL,
gameID VARCHAR(6) NOT NULL,
polygonID VARCHAR(36) UNIQUE NOT NULL,
userID VARCHAR(6) NOT NULL,
area DOUBLE(30,4) NOT NULL,
@ -53,6 +53,20 @@ BEGIN
END //
DELIMITER ;
DELIMITER //
CREATE PROCEDURE insertPolygon
(IN gID VARCHAR(6),
IN usID VARCHAR(6),
IN a DOUBLE(30,4))
BEGIN
DECLARE lastid VARCHAR(36) DEFAULT UUID();
INSERT INTO `polygonArea` (gameID, polygonID, userID, area) VALUES
(gID, lastid, usID, a);
SELECT * FROM `polygonArea` WHERE polygonID = lastid;
END //
DELIMITER ;
INSERT INTO `gameInstances` (gameID) VALUES ("samdum");
INSERT INTO `users` (userID, nickname) VALUES ("samded", "Lesmaux");
INSERT INTO `users` (userID, nickname) VALUES ("fanded", "Umbra Sheep");

@ -13,4 +13,13 @@ module.exports = function (server) {
return next();
});
server.post("/polygon", function (req, res, next) {
if (versioner.currentVersion === 1) {
apiV1.isPolygon(req, res);
return next();
}
res.send(200);
return next();
});
};

@ -1,10 +1,11 @@
let db = require("../config/db.js");
let mathFunc = require("./mathFunc.js");
let util = require("util");
module.exports = {
getPolygons : function (req, res) {
if (req.query.gameID != null) {
let query = "CALL getPolygonPoints(\"samdum\");";
console.log("hi");
let query = "CALL getPolygonPoints(\"" + req.query.gameID + "\");";
db.get().query(query, function(err, rows){
if (err) return res.send(400);
res.send(rows[0]);
@ -13,5 +14,56 @@ module.exports = {
} else {
res.send(500);
}
},
isPolygon: function (req, res) {
if (req.body.gameID != null && req.body.userID != null && req.body.points != null) {
let gameID = req.body.gameID;
let userID = req.body.userID;
let points = JSON.parse(req.body.points);
console.log(points);
if (points.length < 2) {
res.send([]);
} else {
let firstPoint = points[0];
let lastPoint = points[points.length - 1];
let distance = mathFunc.gpsToMeters(firstPoint.lat, firstPoint.lng, lastPoint.lat, lastPoint.lng);
console.log(distance);
if (distance < 3) {
//area is just 1 for now we fix later.
query = util.format("CALL insertPolygon(\"%s\", \"%s\", 1)", gameID, userID);
db.get().query(query, function(err, rows) {
if (err) {
console.log(err);
return res.send(400);
}
let polygonID = rows[0][0].polygonID;
query = "INSERT INTO polygonPoints (polygonID, lat, lng) VALUES ";
let delimiterNecessary = false;
points.map((point) => {
if (delimiterNecessary) {
query += ",";
}
query += util.format("(\"%s\",%s,%s)", polygonID, point.lat, point.lng);
delimiterNecessary = true;
});
query += ";";
db.get().query(query, function(err, pointRows) {
if (err) {
console.log(err);
return res.send(400);
}
res.send(rows[0][0]);
return;
});
});
} else {
res.send([]);
}
}
}
}
}

@ -0,0 +1,13 @@
module.exports = {
gpsToMeters: function (lat1, lon1, lat2, lon2){ // generally used geo measurement function
var R = 6378.137; // Radius of earth in KM
var dLat = lat2 * Math.PI / 180 - lat1 * Math.PI / 180;
var dLon = lon2 * Math.PI / 180 - lon1 * Math.PI / 180;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d * 1000; // meters
}
}
Loading…
Cancel
Save