コード例 #1
0
ファイル: SharingRepository.cs プロジェクト: vvuk/Emby
        public async Task CreateShare(SocialShareInfo info)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }
            if (string.IsNullOrWhiteSpace(info.Id))
            {
                throw new ArgumentNullException("info.Id");
            }

            using (WriteLock.Write())
            {
                using (var connection = CreateConnection())
                {
                    connection.RunInTransaction(db =>
                    {
                        var commandText = "replace into Shares (Id, ItemId, UserId, ExpirationDate) values (?, ?, ?, ?)";

                        db.Execute(commandText,
                                   info.Id.ToGuidParamValue(),
                                   info.ItemId,
                                   info.UserId,
                                   info.ExpirationDate.ToDateTimeParamValue());
                    }, TransactionMode);
                }
            }
        }
コード例 #2
0
ファイル: SharingRepository.cs プロジェクト: vvuk/Emby
        private SocialShareInfo GetSocialShareInfo(IReadOnlyList <IResultSetValue> reader)
        {
            var info = new SocialShareInfo();

            info.Id             = reader[0].ReadGuid().ToString("N");
            info.ItemId         = reader[1].ToString();
            info.UserId         = reader[2].ToString();
            info.ExpirationDate = reader[3].ReadDateTime();

            return(info);
        }
コード例 #3
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);
        }
コード例 #4
0
ファイル: SharingManager.cs プロジェクト: thirunjuguna/emby
        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);
            }
        }
コード例 #5
0
ファイル: SharingManager.cs プロジェクト: webcris77/Emby
        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);
            }
        }
コード例 #6
0
        public void share(SocialShareInfo info)
        {
            Debug.Log("share: " + info.ToString());

                        #if !UNITY_EDITOR
                        #if UNITY_ANDROID
            AndroidJavaObject activity = SocialShare._player.GetStatic <AndroidJavaObject>("currentActivity");
            if (null == activity)
            {
                Debug.Log("share activity is null");
                return;
            }
            activity.Call("runOnUiThread", new AndroidJavaRunnable(() => {
                sdkbox_socialshare_share(info.ToString());
            }));
                        #else
            sdkbox_socialshare_share(info.ToString());
                        #endif
                        #endif // !UNITY_EDITOR
        }
コード例 #7
0
ファイル: SharingManager.cs プロジェクト: thirunjuguna/emby
        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 = (await _appHost.GetSystemInfo().ConfigureAwait(false)).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, externalUrl);

            _repository.CreateShare(info);

            return(info);
        }
コード例 #8
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();
            }
        }
コード例 #9
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();
                        }
                    }
                }
            }
        }