/* * Spreed WebRTC. * Copyright (C) 2013-2016 struktur AG * * This file is part of Spreed WebRTC. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ "use strict"; define(["jquery"], function($) { var geoRequestTimeout = 30000; // Timeout for geo requests in milliseconds. var geoFastRetryTimeout = 45000; // Refresh timer in milliseconds, after which GEO requests should be retried if failed before. var refreshPercentile = 90; // Percent of the TTL when TURN credentials should be refreshed. // turnData return ["$timeout", "$http", "api", "randomGen", "appData", function($timeout, $http, api, randomGen, appData) { var ttlTimeout = null; var geoRefresh = null; var geoPreferred = null; var service = this; service.e = $({}); service.data = {}; service.apply = function() { var turn = service.data; var turnData = { "username": turn.username, "password": turn.password, "ttl": turn.ttl }; if (turn && turn.servers) { // Multiple options, need to sort and use settings. if (!turn.serverMap) { var servers = {}; turn.servers.sort(function(a, b) { servers[a.id] = a; servers[b.id] = b; return (a.prio > b.prio) ? 1 : ((a.prio < b.prio) ? -1 : 0); }); turn.first = turn.servers[0]; if (turn.geo_uri) { turn.servers.unshift({ "id": "auto" }) } turn.serverMap = servers; } var urls; if (turn.preferred) { for (var i=0; i