예제 #1
0
        /// <summary>
        /// 新規スレッドを投稿
        /// </summary>
        /// <param name="board">投稿先の板</param>
        /// <param name="thread">投稿する内容</param>
        public override void Post(BoardInfo board, PostThread thread)
        {
            try {
                // 投稿時刻を作成
                int time = GetTime(Time);

                string[] dirbbs = board.Path.Split('/');

                // CGIの存在するURLを作成
                string uri = String.Format("http://{0}/bbs/write.cgi/{1}/new/", board.Server, board.Path);

                // 送信データを作成
                StringBuilder sb = new StringBuilder();
                sb.Append("SUBJECT=" + UrlEncode(thread.Subject));
                sb.Append("&submit=" + UrlEncode("新規書き込み"));
                sb.Append("&NAME=" + UrlEncode(thread.From));
                sb.Append("&MAIL=" + UrlEncode(thread.Email));
                sb.Append("&MESSAGE=" + UrlEncode(thread.Body));
                sb.Append("&DIR=" + dirbbs[0]);
                sb.Append("&BBS=" + dirbbs[1]);
                sb.Append("&TIME=" + time);

                bool   retried = false;
                byte[] bytes   = Encoding.GetBytes(sb.ToString());

                Posting(board, bytes, uri, ref retried);
            }
            catch (Exception ex) {
                TwinDll.Output(ex);
                throw ex;
            }
        }
예제 #2
0
        /// <summary>
        /// 新規スレッドを投稿
        /// </summary>
        /// <param name="board">投稿先の板</param>
        /// <param name="thread">投稿する内容</param>
        public override void Post(BoardInfo board, PostThread thread)
        {
            try {
                // 投稿時刻を作成
                int time = GetTime(Time);

                // 送信データを作成
                bool retried = false;

                // CGIの存在するURLを作成
                string uri = String.Format("http://{0}/cgi-bin/test/bbs.cgi", board.Server);

                StringBuilder sb = new StringBuilder();
                sb.Append("subject=" + UrlEncode(thread.Subject));
                sb.Append("&submit=" + UrlEncode("新規スレッド作成"));
                sb.Append("&FROM=" + UrlEncode(thread.From));
                sb.Append("&mail=" + UrlEncode(thread.Email));
                sb.Append("&MESSAGE=" + UrlEncode(thread.Body));
                sb.Append("&bbs=" + board.Path);
                sb.Append("&time=" + time);

                byte[] bytes = Encoding.GetBytes(sb.ToString());
                Posting(board, bytes, uri, ref retried);
            }
            catch (Exception ex) {
                TwinDll.Output(ex);
                throw ex;
            }
        }
예제 #3
0
 public IActionResult CreatePostThread([FromBody] PostThread postThread)
 {
     try
     {
         var data = _postService.CreatePostThread(postThread);
         return(new OkObjectResult(data));
     }
     catch (Exception ex)
     {
         _logger.LogError($"POST /v1/Post/Thread endpoint caught exception: { ex.Message } Details: { ex.ToString() }");
         return(NotFound());
     }
 }
예제 #4
0
        /// <summary>
        /// 新規スレッドを投稿
        /// </summary>
        /// <param name="board">投稿先の板</param>
        /// <param name="thread">投稿する内容</param>
        public override void Post(BoardInfo board, PostThread thread)
        {
            try {
                // 投稿時刻を作成
                int time = GetTime(Time);

                // 送信データを作成
                bool retried = false;
Retry:
                if (retried)
                {
                    Thread.Sleep(1000);
                }

                // CGIの存在するURLを作成
                string uri = String.Format("http://{0}/{1}", board.Server, postCGIPath);

                StringBuilder sb = new StringBuilder();
                sb.Append("subject=" + UrlEncode(thread.Subject));
//				sb.Append("&submit=" + (retried ? UrlEncode("全責任を負うことを承諾して書き込む") : UrlEncode("新規スレッド作成")));
                sb.Append("&submit=" + UrlEncode("新規スレッド作成"));
                sb.Append("&FROM=" + UrlEncode(thread.From));
                sb.Append("&mail=" + UrlEncode(thread.Email));
                sb.Append("&MESSAGE=" + UrlEncode(thread.Body));
                sb.Append("&bbs=" + board.Path);
                sb.Append("&time=" + time);

                sb.Append(TwinDll.AditionalAgreementField);
                sb.Append(TwinDll.AddWriteSection);

                AddSessionId(sb);

                byte[] bytes = Encoding.GetBytes(sb.ToString());
                Posting(board, bytes, uri, ref retried);

                if (retried)
                {
                    goto Retry;
                }
            }
            catch (Exception ex) {
                TwinDll.Output(ex);
                throw ex;
            }
        }
예제 #5
0
        public PostThread CreatePostThread(PostThread thread)
        {
            thread.AuthorId  = _accountService.GetCurrentUserId();
            thread.Timestamp = DateTime.Now.ToUniversalTime();

            //Make sure  there's a first post
            var firstPost = thread.Posts.First();

            firstPost.Content = firstPost.Content?.Trim();
            if (firstPost.Content == null)
            {
                throw new Exception("Post must contain content");
            }
            firstPost.AuthorId  = thread.AuthorId;
            firstPost.Timestamp = DateTime.Now.ToUniversalTime();

            return(_aquariumDao.CreatePostThread(thread));
        }
예제 #6
0
 /// <summary>
 /// 新規スレッドを投稿
 /// </summary>
 /// <param name="board">投稿先の板</param>
 /// <param name="thread">投稿する内容</param>
 public override void Post(BoardInfo board, PostThread thread)
 {
     throw new NotSupportedException("このメソッドはサポートしていません");
 }