<commit_before>/**
 demo.js
 Copyright (c) 2014 NTT DOCOMO,INC.
 Released under the MIT license
 http://opensource.org/licenses/mit-license.php
 */

/** Revision of this apps. */
var versionRev = 'V2.0.0 Rev.9';
/** BASE URI. */
var BASE_URI;
/** Client ID. */
var currentClientId = null;
/** AccessTonen. */
var accessToken = null;
/** IPアドレスを保持する. */
var ip;
/** 削除モード. */
var deleteMode = false;
/** 画像読み込み中Flag. */
var loadFlag = false;
/** アプリ名. */
var myAppName = 'DemoHTML5';

var body = '';
/** Logメッセージを表示 */
var DEBUG = true;
/** デバイス名をキャッシュ */
var myDeviceName = '';

/** Manager起動待機タイマー */
var launchTimerId;

/**
 * 初期化処理.
 */
function init() {
  // Versionを表示
  $('#version').html(versionRev);

  // 接続先ipアドレスを取得(指定がない場合は、localhost)
  ip = getIpString();

  // accessTokenをcookieから取得
  accessToken = getCookie('accessToken' + ip);

  // 接続先IPアドレスをページに表示
  $('#host').html('connecting:' + ip);

  // Tokenをページに表示
  $('#token').html('accessToken:' + accessToken);

  // 接続先のBASE_URIを作成
  BASE_URI = 'http://' + ip + ':4035/gotapi/';

  $(window).on('hashchange', function() {
    if (location.hash === '#demo' && accessToken == null) {
      authorization();
    }
  });

  dConnect.setAntiSpoofing(true);
}

/**
 * Device Connect Managerを起動後、デモ画面に遷移する.
 */
function startManagerAndDemo() {
  startManager(function(apiVersion) {
    if (DEBUG) {
      console.log('Manager has been available already. version=' + apiVersion);
    }
    location.hash = '#demo';
    if (DEBUG) {
      console.log('URL: ' + location.href);
    }
  });
}

/**
 * Device Connect Managerが起動していることを確認する.
 */
function checkDeviceConnect() {
  startManager(function(apiVersion) {
    alert('Device Connect API version:' + apiVersion);
  });
}

/**
 * Device Connect Managerが起動していることを確認する.
 * @param {function} onavailable
 *                すでに起動していた場合、または起動された場合に呼ばれる関数
 */
function startManager(onavailable) {
  var requested = false;
  var appId = ''; // TODO: DeviceConnect対応アプリが公開されたらApp IDを設定する
  var errorCallback = function(errorCode, errorMessage) {
    switch (errorCode) {
      case dConnect.constants.ErrorCode.ACCESS_FAILED:
        if (!requested) {
          requested = true;
          dConnect.startManager();
          alert('Requested to start Device Connect Manager.');
          
          var userAgent = navigator.userAgent.toLowerCase();
          if (userAgent.search(/iphone|ipad|ipod/) > -1) {
            setTimeout(function() {
              location.href = 'itmss://itunes.apple.com/us/app/dconnect/' +
                      appId + '?ls=1&mt=8';
            }, 250);
          }
        }
        setTimeout(function() {
          dConnect.checkDeviceConnect(onavailable, errorCallback);
        }, 500);
        break;
      case dConnect.constants.ErrorCode.INVALID_SERVER:
        alert('WARNING: Device Connect Manager may be spoofed.');
        break;
      case dConnect.constants.ErrorCode.INVALID_ORIGIN:
        alert('WARNING: Origin of this app is invalid. Maybe the origin is not registered in whitelist.');
        break;
      default:
        alert(errorMessage);
        break;
    }
  };

  dConnect.checkDeviceConnect(onavailable, errorCallback);
}

/**
 * Local OAuthのアクセストークンを取得する.
 */
function authorization() {
  dConnect.setHost(ip);
  var scopes = Array('servicediscovery', 'serviceinformation', 'system',
              'battery', 'connect', 'deviceorientation', 'file_descriptor',
              'file', 'media_player', 'mediastream_recording', 'notification',
              'phone', 'proximity', 'settings', 'vibration', 'light',
              'remote_controller', 'drive_controller', 'mhealth', 'sphero',
              'dice', 'temperature', 'camera', 'canvas', 'health',
               "touch", 'humandetect', 'keyevent');
  dConnect.authorization(scopes, 'サンプル',
      function(clientId, newAccessToken) {
        // Client ID
        currentClientId = clientId;

        // accessToken
        accessToken = newAccessToken;

        // debug log
        console.log('accessToken:' + accessToken);

        // add cookie
        document.cookie = 'accessToken' + ip + '=' + accessToken;

        if (dConnect.isConnectedWebSocket()) {
          dConnect.disconnectWebSocket();
        }
        dConnect.connectWebSocket(clientId, function(errorCode, errorMessage) {
        });

        // rewrite html
        $('#token').html('accessToken:' + accessToken);
      },
      function(errorCode, errorMessage) {
        alert('Failed to get accessToken.');<commit_msg>Fixed bug that event if no authentication is does not occur.<commit_after>/**
 demo.js
 Copyright (c) 2014 NTT DOCOMO,INC.
 Released under the MIT license
 http://opensource.org/licenses/mit-license.php
 */

/** Revision of this apps. */
var versionRev = 'V2.0.0 Rev.9';
/** BASE URI. */
var BASE_URI;
/** Client ID. */
var currentClientId = null;
/** AccessTonen. */
var accessToken = null;
/** IPアドレスを保持する. */
var ip;
/** 削除モード. */
var deleteMode = false;
/** 画像読み込み中Flag. */
var loadFlag = false;
/** アプリ名. */
var myAppName = 'DemoHTML5';

var body = '';
/** Logメッセージを表示 */
var DEBUG = true;
/** デバイス名をキャッシュ */
var myDeviceName = '';

/** Manager起動待機タイマー */
var launchTimerId;

/**
 * 初期化処理.
 */
function init() {
  var length = 8
  var sessionKey = Math.random().toString(36).slice(-length);
  currentClientId = sessionKey;

  // Versionを表示
  $('#version').html(versionRev);

  // 接続先ipアドレスを取得(指定がない場合は、localhost)
  ip = getIpString();

  // accessTokenをcookieから取得
  accessToken = getCookie('accessToken' + ip);

  // 接続先IPアドレスをページに表示
  $('#host').html('connecting:' + ip);

  // Tokenをページに表示
  $('#token').html('accessToken:' + accessToken);

  // 接続先のBASE_URIを作成
  BASE_URI = 'http://' + ip + ':4035/gotapi/';

  $(window).on('hashchange', function() {
    if (location.hash === '#demo' && accessToken == null) {
      authorization();
    }
  });

  dConnect.setAntiSpoofing(true);
  dConnect.setHost(ip);
  if (dConnect.isConnectedWebSocket()) {
    dConnect.disconnectWebSocket();
  }
  dConnect.connectWebSocket(currentClientId, function(errorCode, errorMessage) {
  });

}

/**
 * Device Connect Managerを起動後、デモ画面に遷移する.
 */
function startManagerAndDemo() {
  startManager(function(apiVersion) {
    if (DEBUG) {
      console.log('Manager has been available already. version=' + apiVersion);
    }
    location.hash = '#demo';
    if (DEBUG) {
      console.log('URL: ' + location.href);
    }
  });
}

/**
 * Device Connect Managerが起動していることを確認する.
 */
function checkDeviceConnect() {
  startManager(function(apiVersion) {
    alert('Device Connect API version:' + apiVersion);
  });
}

/**
 * Device Connect Managerが起動していることを確認する.
 * @param {function} onavailable
 *                すでに起動していた場合、または起動された場合に呼ばれる関数
 */
function startManager(onavailable) {
  var requested = false;
  var appId = ''; // TODO: DeviceConnect対応アプリが公開されたらApp IDを設定する
  var errorCallback = function(errorCode, errorMessage) {
    switch (errorCode) {
      case dConnect.constants.ErrorCode.ACCESS_FAILED:
        if (!requested) {
          requested = true;
          dConnect.startManager();
          alert('Requested to start Device Connect Manager.');
          
          var userAgent = navigator.userAgent.toLowerCase();
          if (userAgent.search(/iphone|ipad|ipod/) > -1) {
            setTimeout(function() {
              location.href = 'itmss://itunes.apple.com/us/app/dconnect/' +
                      appId + '?ls=1&mt=8';
            }, 250);
          }
        }
        setTimeout(function() {
          dConnect.checkDeviceConnect(onavailable, errorCallback);
        }, 500);
        break;
      case dConnect.constants.ErrorCode.INVALID_SERVER:
        alert('WARNING: Device Connect Manager may be spoofed.');
        break;
      case dConnect.constants.ErrorCode.INVALID_ORIGIN:
        alert('WARNING: Origin of this app is invalid. Maybe the origin is not registered in whitelist.');
        break;
      default:
        alert(errorMessage);
        break;
    }
  };

  dConnect.checkDeviceConnect(onavailable, errorCallback);
}

/**
 * Local OAuthのアクセストークンを取得する.
 */
function authorization() {
  var scopes = Array('servicediscovery', 'serviceinformation', 'system',
              'battery', 'connect', 'deviceorientation', 'file_descriptor',
              'file', 'media_player', 'mediastream_recording', 'notification',
              'phone', 'proximity', 'settings', 'vibration', 'light',
              'remote_controller', 'drive_controller', 'mhealth', 'sphero',
              'dice', 'temperature', 'camera', 'canvas', 'health',
               "touch", 'humandetect', 'keyevent');
  dConnect.authorization(scopes, 'サンプル',
      function(clientId, newAccessToken) {
        // Client ID
        currentClientId = clientId;

        // accessToken
        accessToken = newAccessToken;

        // debug log
        console.log('accessToken:' + accessToken);

        // add cookie
        document.cookie = 'accessToken' + ip + '=' + accessToken;

        if (dConnect.isConnectedWebSocket()) {
          dConnect.disconnectWebSocket();
        }
        dConnect.connectWebSocket(currentClientId, function(errorCode, errorMessage) {
        });

        // rewrite html
        $('#token').html('accessToken:' + accessToken);
      },
      function(errorCode, errorMessage) {
        alert('Failed to get accessToken.');
{'fraction_non_alphanumeric': 0.14578660685677666, 'fraction_numerical': 0.00501975862437253, 'mean_word_length': 2.7758064516129033, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4759099', 'n_tokens_mistral': 3115, 'n_tokens_neox': 3055, 'n_words': 589}