-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver-compiled.js.map
1 lines (1 loc) · 20.3 KB
/
server-compiled.js.map
1
{"version":3,"sources":["server.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;;;;AAI/B,IAAI,IAAI,GAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,IAAI,KAAK,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACrC,IAAI,IAAI,GAAS,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,MAAM,GAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;;;AAIxC,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACnC,IAAI,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC9C,IAAI,OAAO,GAAM,OAAO,CAAC,SAAS,CAAC,CAAC;;AAIpC,IAAI,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACrC,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;;;AAGjC,IAAI,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;;AAG9B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAW;AACvC,WAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;CACxF,CAAC,CAAC;;AAGH,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;;AAEtB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC5C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7B,KAAK,CAAC,GAAG,CAAC,OAAO,UAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;;;;AAOzD,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;AAClD,QAAI,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACjC,QAAI,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;AAErC,aAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACpD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CACrB,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAC7B,KAAK,CAAC,CAAC,CAAC,CACR,IAAI,CAAC,UAAS,GAAG,EAAE,UAAU,EAAE;AAC5B,YAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;;AAE1B,YAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,mBAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/B;;AAED,YAAI,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;;AAE/D,iBAAS,CACJ,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAC/C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CACrB,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,CAC/B,KAAK,CAAC,CAAC,CAAC,CACR,IAAI,CAAC,UAAS,GAAG,EAAE,UAAU,EAAE;AAC5B,gBAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;;AAE1B,gBAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,uBAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC/B;;AAED,qBAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAS,GAAG,EAAE;AAC5E,oBAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,mBAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChB,CAAC,CAAC;SACN,CAAC,CAAC;KACV,CAAC,CAAC;CACV,CAAC,CAAC;;;;;;;;AAeH,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAS,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC;AAC5C,QAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,QAAI,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;;AAElC,QAAI,oBAAoB,GAAG,2DAA2D,GAAG,aAAa,CAAC;;;AAGvG,QAAI,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;;;;AAKrC,SAAK,CAAC,SAAS,CAAC,CACR,UAAS,QAAQ,EAAC;AACd,eAAO,CAAC,GAAG,CAAC,oBAAoB,EAAC,UAAS,GAAG,EAAC,OAAO,EAAC,GAAG,EAAC;AACtD,gBAAG,GAAG,EAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;;AAExB,kBAAM,CAAC,WAAW,CAAC,GAAG,EAAC,UAAS,GAAG,EAAC,SAAS,EAAC;AAC1C,oBAAI,GAAG,EAAE,OAAO,IAAI,CAAE,GAAG,CAAC,CAAC;AAC3B,oBAAG;;AAEC,wBAAI,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;;AAGlE,6BAAS,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,UAAS,GAAG,EAAC,SAAS,EAAC;AACjE,4BAAG,GAAG,EAAE,OAAO,IAAI,CAAE,GAAG,CAAC,CAAC;;AAE1B,4BAAI,SAAS,EAAE;AACX,mCAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,GAAE,wBAAwB,EAAC,CAAC,CAAA;yBACpF;;AAED,gCAAQ,CAAC,GAAG,EAAC,WAAW,CAAC,CAAC;qBAC7B,CAAC,CAAC;iBAEN,CAAA,OAAO,CAAC,EAAC;AACN,2BAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,iBAAiB,EAAC,CAAC,CAAC;iBAC7D;aACJ,CAAC,CAAC;SACN,CAAC,CAAC;KACN;AACD,cAAS,WAAW,EAAC;AACjB,YAAI,gBAAgB,GAAG,mEAAmE,GAAG,WAAW,CAAC;;;AAGzG,eAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAC,gBAAgB,EAAC,EAAC,UAAS,GAAG,EAAC,OAAO,EAAC,GAAG,EAAC;AACzD,gBAAI,GAAG,EAAE,OAAO,IAAI,CAAE,GAAG,CAAC,CAAC;AAC3B,kBAAM,CAAC,WAAW,CAAC,GAAG,EAAC,UAAS,GAAG,EAAC,SAAS,EAAC;AAC1C,oBAAI,GAAG,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,oBAAG;AACC,wBAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACvD,wBAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C,wBAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAExD,wBAAI,SAAS,GAAG,IAAK,SAAS,CAAC;AAC3B,mCAAW,EAAE,WAAW;AACxB,4BAAI,EAAE,IAAI;AACV,4BAAI,EAAC,IAAI;AACT,iCAAS,EAAC,SAAS;AACnB,8BAAM,EAAC,MAAM;AACb,8BAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;qBAC5B,CAAC,CAAC;AACP,6BAAS,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;AAC1B,4BAAI,GAAG,EAAE,OAAO,IAAI,CAAE,GAAG,CAAC,CAAC;AAC3B,2BAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAC,aAAa,GAAG,6BAA6B,EAAC,CAAC,CAAC;qBACtE,CAAC,CAAC;iBACF,CAAA,OAAO,CAAC,EAAC;AACN,uBAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,8CAA8C,EAAC,CAAC,CAAA;iBACnG;aACJ,CAAC,CAAC;SACN,CAAC,CAAC;KACN,CAEJ,CAAC,CAAC;CACV,CAAC,CAAC;;;;;;AASH,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;AACpD,QAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,QAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE3B,QAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AACrB,eAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;KAC7E;;AAED,QAAI,MAAM,KAAK,KAAK,EAAE;AACpB,eAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;KAC7F;;AAED,SAAK,CAAC,QAAQ,CAAC,CACX,UAAS,QAAQ,EAAE;AACjB,iBAAS,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,UAAS,GAAG,EAAE,MAAM,EAAE;AAC/D,oBAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SACvB,CAAC,CAAC;KACJ,EACD,UAAS,QAAQ,EAAE;AACjB,iBAAS,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,UAAS,GAAG,EAAE,KAAK,EAAE;AAC7D,oBAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACtB,CAAC,CAAC;KACJ,CACF,EACD,UAAS,GAAG,EAAE,OAAO,EAAE;AACrB,YAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;;AAE1B,YAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,YAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;;AAEvB,YAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AACrB,mBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;SACrF;;AAED,YAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,mBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;SAC9B;;;;;;;;AAQD,aAAK,CAAC,QAAQ,CAAC,CACb,UAAS,QAAQ,EAAE;AACjB,kBAAM,CAAC,IAAI,EAAE,CAAC;AACd,kBAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,kBAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,kBAAM,CAAC,IAAI,CAAC,UAAS,GAAG,EAAE;AACxB,wBAAQ,CAAC,GAAG,CAAC,CAAC;aACf,CAAC,CAAC;SACJ,EACD,UAAS,QAAQ,EAAE;AACjB,iBAAK,CAAC,MAAM,EAAE,CAAC;AACf,iBAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,iBAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC,iBAAK,CAAC,IAAI,CAAC,UAAS,GAAG,EAAE;AACvB,wBAAQ,CAAC,GAAG,CAAC,CAAC;aACf,CAAC,CAAC;SACJ,CACF,EAAE,UAAS,GAAG,EAAE;AACf,gBAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,eAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;SACvB,CAAC,CAAC;KACJ,CAAC,CAAC;CACN,CAAC,CAAC;;;;;;;AAQH,KAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;AACxD,aAAS,CAAC,KAAK,CAAC,EAAE,EAAE,UAAS,GAAG,EAAE,KAAK,EAAE;AACrC,YAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,WAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;KAC9B,CAAC,CAAC;CACN,CAAC,CAAC;;;;;;;;;;;AAYH,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,UAAS,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC;AAC3C,QAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;AACvB,QAAI,UAAU,GAAI,EAAE,CAAC;;AAE7B,KAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAS,KAAK,EAAC,GAAG,EAAC;AAC9B,kBAAU,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;KACxD,CAAC,CAAC;;AAEH,aAAS,CACJ,IAAI,CAAC,UAAU,CAAC,CAChB,IAAI,CAAC,OAAO,CAAC;KACb,KAAK,CAAC,EAAE,CAAC,CACT,IAAI,CAAC,UAAS,GAAG,EAAC,UAAU,EAAC;AAC1B,YAAI,GAAG,EAAE,OAAO,IAAI,CAAE,GAAG,CAAC,CAAC;;;AAI3B,kBAAU,CAAC,IAAI,CAAC,UAAS,CAAC,EAAC,CAAC,EAAC;AACzB,gBAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAA,AAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAA,AAAC,EAAE;AAAC,uBAAO,CAAC,CAAC;aAAC;AAC3E,gBAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAA,AAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAA,AAAC,EAAE;AAAC,uBAAO,CAAC,CAAC,CAAC;aAAC;AAC5E,mBAAO,CAAC,CAAC;SACZ,CAAC,CAAC;AACH,WAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAExB,CAAC,CAAC;CAEV,CAAC,CAAC;;;;;;AAWH,KAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;AACxD,aAAS,CACJ,IAAI,EAAE,CACN,IAAI,CAAC,SAAS,CAAC,CACf,KAAK,CAAC,GAAG,CAAC,CACV,IAAI,CAAC,UAAS,GAAG,EAAE,UAAU,EAAE;AAC5B,YAAI,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,WAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACxB,CAAC,CAAC;CACV,CAAC,CAAC;;;;AAQH,KAAK,CAAC,GAAG,CAAC,UAAS,GAAG,EAAC,GAAG,EAAC;AACvB,UAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAC,UAAS,OAAO,EAAC;AACzC,YAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9D,YAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC;AAC3D,WAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClB,CAAC,CAAC;CACN,CAAC,CAAC;;;;;AAKH,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,WAAW,GAAG,CAAC,CAAC;;AAEpB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,UAAS,MAAM,EAAE;AACzC,eAAW,EAAE,CAAC;AACd,WAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;AAEzB,MAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;;AAE7D,UAAM,CAAC,EAAE,CAAC,YAAY,EAAE,YAAW;AAC/B,mBAAW,EAAE,CAAC;AACd,UAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;KAChE,CAAC,CAAC;CACN,CAAC,CAAC;;AAEH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAW;AACxC,WAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACxE,CAAC,CAAC","file":"server-compiled.js","sourcesContent":["\n/*\n * Chris Samuel\n * ksamuel.chris@icloud.com\n *\n * October 1, 2015\n *\n * FileName: server.js\n *\n * Description:\n *\n * File will be used for running node/express for our voting application.\n * Chris Samuel\n * ksamuel.chris@gmail.com\n *\n * October,\n *\n *\n * */\n\n//Express API Route Dependencies\n\nvar async = require('async');\nvar request = require('request');\nvar xml2js = require('xml2js');\n\n//React Routes\n\nvar swig = require('swig');\nvar React = require('react');\nvar Router = require('react-router');\nvar path = require('path');\nvar logger = require('morgan');\nvar bodyParser = require('body-parser');\n\n\n//Add the mongoose module and Character.js file\nvar mongoose = require('mongoose');\nvar Character = require('./models/character');\nvar express = require('express');\n\n\n\nvar routes = require('./app/routes');\nvar config = require('./config');\n\n//Underscore.js\nvar _ = require('underscore');\n\n\nmongoose.connect(config.database);\nmongoose.connection.on('error', function() {\n console.info('Error: Could not connect to MongoDB. Did you forget to run `mongod`?');\n});\n\n\nvar juice = express();\n\njuice.set('port', process.env.PORT || 9876);\njuice.use(logger('dev'));\njuice.use(bodyParser.json());\njuice.use(express.static(path.join(__dirname,'public')));\n\n\n/**\n * GET /api/characters\n * Returns 2 random characters of the same gender that have not been voted yet.\n */\njuice.get('/api/characters', function(req, res, next) {\n var choices = ['Female', 'Male'];\n var randomGender = _.sample(choices);\n\n Character.find({ random: { $near: [Math.random(), 0] } })\n .where('voted', false)\n .where('gender', randomGender)\n .limit(2)\n .exec(function(err, characters) {\n if (err) return next(err);\n\n if (characters.length === 2) {\n return res.send(characters);\n }\n\n var oppositeGender = _.first(_.without(choices, randomGender));\n\n Character\n .find({ random: { $near: [Math.random(), 0] } })\n .where('voted', false)\n .where('gender', oppositeGender)\n .limit(2)\n .exec(function(err, characters) {\n if (err) return next(err);\n\n if (characters.length === 2) {\n return res.send(characters);\n }\n\n Character.update({}, { $set: { voted: false } }, { multi: true }, function(err) {\n if (err) return next(err);\n res.send([]);\n });\n });\n });\n});\n\n\n\n\n\n/*\n* POST /api/characters\n* Adds new characters to the database\n*\n* */\n\n\n\n\njuice.post('/api/characters', function(req,res,next){\n var gender = req.body.gender;\n var characterName = req.body.name;//get a Character ID from a Character Name\n\n var characterIdLookupUrl = \"https://api.eveonline.com/eve/CharacterID.xml.aspx?names=\" + characterName;\n\n // create a XML parser instance with xml2js\n var parser = new xml2js.Parser();\n\n\n //waterfall(tasks, [callback])\n //use the name and the url to find if the name is in the database already\n async.waterfall([\n function(callback){\n request.get(characterIdLookupUrl,function(err,request,xml){\n if(err)return next(err);\n //parse the XML reponse\n parser.parseString(xml,function(err,parsedXml){\n if (err) return next (err);\n try{\n\n var characterId = parsedXml.eveapi.result[0].row[0].$.characterID;\n\n\n Character.findOne({ characterId: character }, function(err,character){\n if(err) return next (err);\n\n if (character) {\n return res.status(409).send({ message: character.name +'is already in database'})\n }\n\n callback(err,characterId);\n });\n\n }catch (e){\n return res.status(400).send({message: 'XML Parse Error'});\n }\n });\n });\n },//pass the CharacterID to the next function in the async .waterfall stage\n function(characterId){\n var characterInfoUrl = 'https://api.eveonline.com/eve/CharacterInfo.xml.aspx?characterID=' + characterId;\n\n //get basic character information from a character ID\n request.get({ url:characterInfoUrl},function(err,request,xml){\n if (err) return next (err);\n parser.parseString(xml,function(err,parsedXml){\n if (err) return res.send(err);\n try{\n var name = parsedXml.eveapi.result[0].characterName[0];\n var race = parsedXml.eveapi.result[0].race[0];\n var bloodline = parsedXml.eveapi.result[0].bloodline[0];\n\n var character = new Character({\n characterId: characterId,\n name: name,\n race:race,\n bloodline:bloodline,\n gender:gender,\n random: [Math.random(),0]\n });//Add a new character to the database\n character.save(function (err) {\n if (err) return next (err);\n res.send({ message:characterName + 'has been added successfully'});\n });\n }catch (e){\n res.status(404).send({ message: characterName + 'is not a registered citzen of Faces of Space'})\n }\n });\n });\n }\n\n ]);\n});\n\n\n\n\n/**\n * PUT /api/characters\n * Update winning and losing count for both characters.\n */\njuice.put('/api/characters', function(req, res, next) {\n var winner = req.body.winner;\n var loser = req.body.loser;\n\n if (!winner || !loser) {\n return res.status(400).send({ message: 'Voting requires two characters.' });\n }\n\n if (winner === loser) {\n return res.status(400).send({ message: 'Cannot vote for and against the same character.' });\n }\n\n async.parallel([\n function(callback) {\n Character.findOne({ characterId: winner }, function(err, winner) {\n callback(err, winner);\n });\n },\n function(callback) {\n Character.findOne({ characterId: loser }, function(err, loser) {\n callback(err, loser);\n });\n }\n ],\n function(err, results) {\n if (err) return next(err);\n\n var winner = results[0];\n var loser = results[1];\n\n if (!winner || !loser) {\n return res.status(404).send({ message: 'One of the characters no longer exists.' });\n }\n\n if (winner.voted || loser.voted) {\n return res.status(200).end();\n }\n //We are using Async parallel to make two database queries\n // simultaneously, since one query does not depend on another\n // however, because we have two separate MongoDB documents,\n // that's two independent asynchronous operations, hence\n // another async.parallel. Basically, we respond with a success only when\n // both characters have finished updating and there were no errors\n\n async.parallel([\n function(callback) {\n winner.wins++;\n winner.voted = true;\n winner.random = [Math.random(), 0];\n winner.save(function(err) {\n callback(err);\n });\n },\n function(callback) {\n loser.losses++;\n loser.voted = true;\n loser.random = [Math.random(), 0];\n loser.save(function(err) {\n callback(err);\n });\n }\n ], function(err) {\n if (err) return next(err);\n res.status(200).end();\n });\n });\n});\n\n\n/**\n * GET /api/characters/count\n * Returns the total number of characters.\n */\n\njuice.get('/api/characters/count', function(req, res, next) {\n Character.count({}, function(err, count) {\n if (err) return next(err);\n res.send({ count: count });\n });\n});\n\n\n/**\n *\n * GET /api/characters/top\n * return top 50 Highest ranked characters. Filter by gender, race and bloodline.\n *\n *\n *\n */\n\njuice.get('/api/characters/top', function(req,res,next){\n var params = req.query;\n var conditions = {};\n\n _.each(params, function(value,key){\n conditions[key] = new RegExp('^' + value + '$', 'i');\n });\n\n Character\n .find(conditions)\n .sort('-wins') // Sort in descending order (highest wins on top)\n .limit(50)\n .exec(function(err,characters){\n if (err) return next (err);\n\n\n // Sort by winning percentage\n characters.sort(function(a,b){\n if(a.wins / (a.wins + a.losses) < b.wins / (b.wins + b.losses)) {return 1;}\n if(a.wins / (a.wins + a.losses) > b.wins / (b.wins + b.losses)) {return -1;}\n return 0;\n });\n res.send(characters);\n\n });\n\n});\n\n\n\n\n\n\n/**\n * GET /api/characters/shame\n * Returns 100 lowest ranked characters.\n */\njuice.get('/api/characters/shame', function(req, res, next) {\n Character\n .find()\n .sort('-losses')\n .limit(100)\n .exec(function(err, characters) {\n if (err) return next(err);\n res.send(characters);\n });\n});\n\n\n\n\n\n// Express middleware components\n// WILL BE EXECUTED ON EVERY REQUEST TO THE SERVER.\njuice.use(function(req,res){\n Router.run(routes, req.path,function(Handler){\n var html = React.renderToString(React.createElement(Handler));\n var page = swig.renderFile('views/index.html',{html:html});\n res.send(page);\n });\n});\n\n/**\n * Socket.io stuff.\n */\nvar server = require('http').createServer(juice);\nvar io = require('socket.io')(server);\nvar onlineUsers = 0;\n\nio.sockets.on('connection', function(socket) {\n onlineUsers++;\n console.log(onlineUsers);\n\n io.sockets.emit('onlineUsers', { onlineUsers: onlineUsers });\n\n socket.on('disconnect', function() {\n onlineUsers--;\n io.sockets.emit('onlineUsers', { onlineUsers: onlineUsers });\n });\n});\n\nserver.listen(juice.get('port'), function() {\n console.log('Express server listening on port ' + juice.get('port'));\n});\n"]}