// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

var uuid = require('uuid');

module.exports = Identity;

function Identity(accountName) {
  var account = processAccountName(accountName);

  this.account = account.name;
  this.username = account.username;
  this.deviceType = 'desktop';
  this.deviceId = uuid.v4();

  this.deviceName = this.deviceType + '_' + this.deviceId;
  this.entityName = this.username + '/' + this.deviceName;
}

function autoUsername() {
  return uuid.v4();
}

var ACCOUNT_REGEX = /(dev\.v\.io\/u\/([^\/]+)).*/;

function processAccountName(accountName) {
  if (!accountName || accountName === 'unknown') {
    return {
      name: '...',
      username: autoUsername()
    };
  }

  var match = ACCOUNT_REGEX.exec(accountName);
  return match? {
    name: match[1],
    username: match[2]
  } : {
    name: accountName,
    username: accountName
  };
}
