• 
      

    Add Student Sonar backend code.

    Review Request #6896 — Created Feb. 3, 2015 and submitted

    Information

    student-sonar
    master
    d5477b4...

    Reviewers

    This contains several pieces:

    • server.js and lib/routes.js define the basic web server side of things. There
      are currently a few API endpoints, and navigating to / will deliver an HTML
      page (which is included in the frontend change).
    • lib/slack.js has code to query our Slack logs from Amazon DynamoDB, as well
      as get the user list from the Slack API.
    • lib/students.js has code to load the students.json file as well as merge in
      Slack avatars.
    • lib/reviewboard.js has code to query the Review Board API.

    Exercised all of this via the frontend.

    Description From Last Updated

    With ES6 let, you don't need to declare your variables at the top of the functions anymore. Just declare when …

    mike_conleymike_conley

    If you're going full-on ES6, I think you can use for-of: for (let item of logs.Items) { // ... } …

    mike_conleymike_conley

    Worth pulling this port number from the config.js file as well?

    mike_conleymike_conley
    reviewbot
    1. Tool: Pyflakes
      Ignored Files:
          lib/students.js
          lib/routes.js
          lib/reviewboard.js
          server.js
          lib/slack.js
      
      
      
      Tool: PEP8 Style Checker
      Ignored Files:
          lib/students.js
          lib/routes.js
          lib/reviewboard.js
          server.js
          lib/slack.js
      
      
    2. 
        
    mike_conley
    1. 
        
    2. lib/routes.js (Diff revision 1)
       
       
       
       
       
       
      Show all issues

      With ES6 let, you don't need to declare your variables at the top of the functions anymore. Just declare when you need them.

    3. lib/routes.js (Diff revision 1)
       
       
      Show all issues

      If you're going full-on ES6, I think you can use for-of:

      for (let item of logs.Items) {
        // ...
      }
      

      Alternatively, since you're mapping from the log items to an array of results, I think you could use:

      let result = logs.Items.map(function(item) {
        let timestamp = moment.unix(parseFloat(item.timestamp.S)).startOf('day');
        return {
          channel_name: item.channel_name.S,
          text: item.text.S,
          timestamp: timestamp.unix()
        };
      });
      
      1. D'oh - I forgot we were on the server-side here.

    4. server.js (Diff revision 1)
       
       
      Show all issues

      Worth pulling this port number from the config.js file as well?

    5. 
        
    david
    reviewbot
    1. Tool: Pyflakes
      Ignored Files:
          lib/students.js
          lib/routes.js
          lib/reviewboard.js
          server.js
          lib/slack.js
      
      
      
      Tool: PEP8 Style Checker
      Ignored Files:
          lib/students.js
          lib/routes.js
          lib/reviewboard.js
          server.js
          lib/slack.js
      
      
    2. 
        
    mike_conley
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (4c0f191)