private void AddShareInfo(SocialShareInfo info, string externalUrl) { info.ImageUrl = externalUrl + "/Social/Shares/Public/" + info.Id + "/Image"; info.Url = externalUrl + "/emby/web/shared.html?id=" + info.Id; var item = _libraryManager.GetItemById(info.ItemId); if (item != null) { info.Overview = item.Overview; info.Name = GetTitle(item); } }
private void AddShareInfo(SocialShareInfo info) { var externalUrl = _appHost.GetSystemInfo().WanAddress; info.ImageUrl = externalUrl + "/Social/Shares/Public/" + info.Id + "/Image"; info.Url = externalUrl + "/web/shared.html?id=" + info.Id; var item = _libraryManager.GetItemById(info.ItemId); if (item != null) { info.Overview = item.Overview; info.Name = GetTitle(item); } }
public async Task<SocialShareInfo> CreateShare(string itemId, string userId) { if (string.IsNullOrWhiteSpace(itemId)) { throw new ArgumentNullException("itemId"); } if (string.IsNullOrWhiteSpace(userId)) { throw new ArgumentNullException("userId"); } var item = _libraryManager.GetItemById(itemId); if (item == null) { throw new ResourceNotFoundException(); } var externalUrl = _appHost.GetSystemInfo().WanAddress; if (string.IsNullOrWhiteSpace(externalUrl)) { throw new InvalidOperationException("No external server address is currently available."); } var info = new SocialShareInfo { Id = Guid.NewGuid().ToString("N"), ExpirationDate = DateTime.UtcNow.AddDays(_config.Configuration.SharingExpirationDays), ItemId = itemId, UserId = userId }; AddShareInfo(info); await _repository.CreateShare(info).ConfigureAwait(false); return info; }
public async Task CreateShare(SocialShareInfo info) { if (info == null) { throw new ArgumentNullException("info"); } if (string.IsNullOrWhiteSpace(info.Id)) { throw new ArgumentNullException("info.Id"); } var cancellationToken = CancellationToken.None; cancellationToken.ThrowIfCancellationRequested(); using (var connection = await CreateConnection().ConfigureAwait(false)) { using (var saveShareCommand = connection.CreateCommand()) { saveShareCommand.CommandText = "replace into Shares (Id, ItemId, UserId, ExpirationDate) values (@Id, @ItemId, @UserId, @ExpirationDate)"; saveShareCommand.Parameters.Add(saveShareCommand, "@Id"); saveShareCommand.Parameters.Add(saveShareCommand, "@ItemId"); saveShareCommand.Parameters.Add(saveShareCommand, "@UserId"); saveShareCommand.Parameters.Add(saveShareCommand, "@ExpirationDate"); IDbTransaction transaction = null; try { transaction = connection.BeginTransaction(); saveShareCommand.GetParameter(0).Value = new Guid(info.Id); saveShareCommand.GetParameter(1).Value = info.ItemId; saveShareCommand.GetParameter(2).Value = info.UserId; saveShareCommand.GetParameter(3).Value = info.ExpirationDate; saveShareCommand.Transaction = transaction; saveShareCommand.ExecuteNonQuery(); transaction.Commit(); } catch (OperationCanceledException) { if (transaction != null) { transaction.Rollback(); } throw; } catch (Exception e) { Logger.ErrorException("Failed to save share:", e); if (transaction != null) { transaction.Rollback(); } throw; } finally { if (transaction != null) { transaction.Dispose(); } } } } }
private SocialShareInfo GetSocialShareInfo(IDataReader reader) { var info = new SocialShareInfo(); info.Id = reader.GetGuid(0).ToString("N"); info.ItemId = reader.GetString(1); info.UserId = reader.GetString(2); info.ExpirationDate = reader.GetDateTime(3).ToUniversalTime(); return info; }
public async Task CreateShare(SocialShareInfo info) { if (info == null) { throw new ArgumentNullException("info"); } if (string.IsNullOrWhiteSpace(info.Id)) { throw new ArgumentNullException("info.Id"); } var cancellationToken = CancellationToken.None; cancellationToken.ThrowIfCancellationRequested(); await WriteLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; try { transaction = _connection.BeginTransaction(); _saveShareCommand.GetParameter(0).Value = new Guid(info.Id); _saveShareCommand.GetParameter(1).Value = info.ItemId; _saveShareCommand.GetParameter(2).Value = info.UserId; _saveShareCommand.GetParameter(3).Value = info.ExpirationDate; _saveShareCommand.Transaction = transaction; _saveShareCommand.ExecuteNonQuery(); transaction.Commit(); } catch (OperationCanceledException) { if (transaction != null) { transaction.Rollback(); } throw; } catch (Exception e) { Logger.ErrorException("Failed to save share:", e); if (transaction != null) { transaction.Rollback(); } throw; } finally { if (transaction != null) { transaction.Dispose(); } WriteLock.Release(); } }