public string GenerateToken(string sessionId, object options = null)
{
var paremeters = new RouteValueDictionary(options ?? new object()) {
{"session_id", sessionId},
{"create_time",(int) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds},
{"nonce", _random.Next(0, 999999)}
};
if (!paremeters.ContainsKey(TokenProperties.Role))
paremeters.Add(TokenProperties.Role, Roles.Publisher);
// Convert expire time to Unix Timestamp
if (paremeters.ContainsKey(TokenProperties.ExpireTime))
{
var origin = new DateTime(1970, 1, 1, 0, 0, 0);
var expireTime = (DateTime)paremeters[TokenProperties.ExpireTime];
var diff = expireTime - origin;
paremeters[TokenProperties.ExpireTime] = Math.Floor(diff.TotalSeconds);
}
var data = HttpUtility.ParseQueryString(string.Empty);
foreach (var pair in paremeters)
data.Add(CleanupKey(pair.Key), pair.Value.ToString());
var sig = SignString(data.ToString(), Secret);
var token = string.Format("{0}{1}", TokenSentinel, EncodeTo64(string.Format("partner_id={0}&sdk_version={1}&sig={2}:{3}", ApiKey, SdkVersion, sig, data)));
return token;
}