Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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();
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        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();
            }
        }