/* global console */

function parsePostData(query) {
  var result = {};
  query.split("&").forEach(function(part) {
    var item = part.split("=");
    result[item[0]] = decodeURIComponent(item[1]);
  });
  return result;
}

function json(code, obj) {
  if (typeof code === "object") {
    obj = code;
    code = 200;
  }
  return [code, {"Content-Type": "application/json"}, JSON.stringify(obj)];
}

export default function() {
  var server = new Pretender(function() {
    this.post('/session', function(request) {
      var data = parsePostData(request.requestBody);

      if (data.password === 'correct') {
        return json({username: 'eviltrout'});
      }
      return json(400, {error: 'invalid login'});
    });

    this.get('/users/hp.json', function() {
      return json({"value":"32faff1b1ef1ac3","challenge":"61a3de0ccf086fb9604b76e884d75801"});
    });

    this.get('/users/check_username', function(request) {
      if (request.queryParams.username === 'taken') {
        return json({available: false, suggestion: 'nottaken'});
      }
      return json({available: true});
    });

    this.post('/users', function(request) {
      return json({success: true});
    });
  });

  server.unhandledRequest = function(verb, path) {
    console.error('Unhandled request in test environment: ' + path + ' (' + verb + ')');
  };

  return server;
}