Beispiel #1
0
        /// <summary>マイリストを追加するストリームを取得する</summary>
        /// <param name="AddItem">追加するマイリスト</param>
        /// <param name="IsGetToken">トークンを取得するかどうか</param>
        public Streams <AddMylistResponse> OpenMylistAddStreams(Mylist.Mylist AddItem, bool IsGetToken = true)
        {
            var streamDataList       = new List <StreamData>();
            AddMylistResponse result = null;

            if (IsGetToken)
            {
                streamDataList.AddRange(host.GetToken());
            }

            var updateStreamDatas = context.Client.OpenUploadStreams(ApiUrls.AddMylist, ContentType.Form).GetStreamDatas();

            updateStreamDatas[0].GetWriteData = () =>
                                                Encoding.UTF8.GetBytes(string.Format(
                                                                           PostTexts.AddMylist,
                                                                           AddItem.Title,
                                                                           AddItem.Description,
                                                                           (AddItem.IsPublic) ? "1" : "0",
                                                                           host.token));

            updateStreamDatas[1].SetReadData = (data) =>
            {
                var serialize = new DataContractJsonSerializer(typeof(Serial.AddMylist.Contract));
                result = converter.ConvertAddMylist((Serial.AddMylist.Contract)serialize.ReadObject(new MemoryStream(data)));
                result.AddedMylist.Title       = AddItem.Title;
                result.AddedMylist.Description = AddItem.Description;
                result.AddedMylist.IsPublic    = AddItem.IsPublic;
            };
            streamDataList.AddRange(updateStreamDatas);

            return(new Streams <AddMylistResponse>(
                       streamDataList.ToArray(),
                       () => result));
        }
Beispiel #2
0
        /// <summary>マイリストを削除するストリームを取得する</summary>
        /// <param name="RemoveItem">削除するマイリスト</param>
        /// <param name="IsGetToken">トークンを取得するかどうか</param>
        public Streams <Response> OpenMylistRemoveStreams(Mylist.Mylist RemoveItem, bool IsGetToken = true)
        {
            var      streamDataList = new List <StreamData>();
            Response result         = null;

            if (IsGetToken)
            {
                streamDataList.AddRange(host.GetToken());
            }

            var updateStreamDatas = context.Client.OpenUploadStreams(ApiUrls.RemoveMylist, ContentType.Form).GetStreamDatas();

            updateStreamDatas[0].GetWriteData = () =>
                                                Encoding.UTF8.GetBytes(string.Format(
                                                                           PostTexts.RemoveMylist,
                                                                           RemoveItem.ID,
                                                                           host.token));

            updateStreamDatas[1].SetReadData = (data) =>
            {
                var str = Encoding.UTF8.GetString(data);

                var serialize = new DataContractJsonSerializer(typeof(Serial.RemoveMylist.Contract));
                result = converter.ConvertResponse((Serial.RemoveMylist.Contract)serialize.ReadObject(new MemoryStream(data)));
            };
            streamDataList.AddRange(updateStreamDatas);

            return(new Streams <Response>(
                       streamDataList.ToArray(),
                       () => result));
        }
Beispiel #3
0
 /// <summary>内部生成時、使用される</summary>
 /// <param name="Target">ターゲットマイリスト</param>
 /// <param name="Host">ページを取得できるクラス</param>
 /// <param name="Context">コンテキスト</param>
 internal MylistPage(Mylist.Mylist Target, VideoService Host, Context Context)
 {
     target = Target;
     context = Context;
     converter = new Serial.Converter(context);
     host = Host;
 }
Beispiel #4
0
 /// <summary>内部生成時、使用される</summary>
 /// <param name="Target">ターゲットマイリスト</param>
 /// <param name="Host">ページを取得できるクラス</param>
 /// <param name="Context">コンテキスト</param>
 internal MylistPage(Mylist.Mylist Target, VideoService Host, Context Context)
 {
     target    = Target;
     context   = Context;
     converter = new Serial.Converter(context);
     host      = Host;
 }
Beispiel #5
0
 /// <summary>ユーザーへアクセスするページを取得する</summary>
 /// <param name="Target">ターゲットユーザー</param>
 public MylistPage GetMylistPage(Mylist.Mylist Target)
 {
     if (Target.mylistPage != null)
     {
         return(Target.mylistPage);
     }
     else
     {
         return(Target.mylistPage = new MylistPage(Target, this, context));
     }
 }
Beispiel #6
0
        /// <summary>マイリストを削除する</summary>
        /// <param name="RemoveItem">削除するマイリスト</param>
        /// <param name="IsGetToken">トークンを取得するかどうか</param>
        public Response RemoveMylist(Mylist.Mylist RemoveItem, bool IsGetToken = true)
        {
            var streams = OpenMylistRemoveStreams(RemoveItem, IsGetToken);

            return(streams.Run(streams.UntreatedCount));
        }
Beispiel #7
0
        /// <summary>マイリストを追加する</summary>
        /// <param name="AddItem">追加するマイリスト</param>
        /// <param name="IsGetToken">トークンを取得するかどうか</param>
        public AddMylistResponse AddMylist(Mylist.Mylist AddItem, bool IsGetToken = true)
        {
            var streams = OpenMylistAddStreams(AddItem, IsGetToken);

            return(streams.Run(streams.UntreatedCount));
        }