實用程式系列-LineNotify

實用程式系列

筆者這次要介紹服務是比較常用的LineNotify服務,因為往往很簡單的東西,許多人其實會非常瞧不起它,如果發揮創意的話,其實它的特性就會相當好用,也很強大!
 

筆者會常用在

1.系統通知服務(懶人自動化)
2.股價機器人通知

來體驗一下它的流程吧!




其實這一段API調用也是很簡易,寫法如下:

   public class LineNotifyService
   {

        public async Task<HttpResponseMessage> CallLineNotifyApi(string token, string message)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://notify-api.line.me/api/notify");
                client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);

                var form = new FormUrlEncodedContent(new[]
                {
                   new KeyValuePair<string, string>("message", message)
               });
                return await client.PostAsync("", form);
            }
        }


        //void CallLineNotifyApi(string token) 
        //{
        //    var enc = Encoding.UTF8;
        //    var payload = "message=" + HttpUtility.UrlEncode("測試!", enc);
        //    using (var wc = new WebClient())
        //    {
        //        wc.Encoding = enc;
        //        wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        //        wc.Headers.Add("Authorization", "Bearer " + token);
        //        var response = wc.UploadString(lineUrl, payload);
        //    }
        //}
    }

最後我要進行幾個測試情境調用,開始進行測試嚕!

    public class LineNotifyServiceTest
    {
        private string myToken = "";
        [SetUp]
        public void Setup()
        {

        }

        [Test]
        public async Task CallLineNotifyApi_Success_ReturnStatus200()
        {
            LineNotifyService _lineNotifyService = new LineNotifyService();
            var result = await _lineNotifyService.CallLineNotifyApi(myToken, "test");
            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
        [Test]
        public async Task CallLineNotifyApi_Unauthorized_ReturnStatus401()
        {
            LineNotifyService _lineNotifyService = new LineNotifyService();
            var result = await _lineNotifyService.CallLineNotifyApi("", "test");
            Assert.AreEqual(HttpStatusCode.Unauthorized, result.StatusCode);
        }
    }

其實這個功能實用性滿高的,假設未來開始進行副業的IT人,可以進一步思考怎麼打造自己產品系統,強化它是真的滿好的。

元哥的筆記