コード例 #1
0
ファイル: NewsManager.cs プロジェクト: sotakarjut/frontend
 public void GetNews(bool forceReload, NewsReceivedCallback success, NoConnectionCallback noconnection, NewsReceivingError failure)
 {
     if (m_CachedNews == null || forceReload || IsTimeToReloadNews())
     {
         m_LastRefresh = Time.time;
         StartCoroutine(GetNewsCoroutine(success, noconnection, failure));
     }
     else
     {
         if (success != null)
         {
             success(m_CachedNews);
         }
     }
 }
コード例 #2
0
ファイル: NewsManager.cs プロジェクト: sotakarjut/frontend
    public IEnumerator GetNewsCoroutine(NewsReceivedCallback success, NoConnectionCallback noconnection, NewsReceivingError failure)
    {
        UnityWebRequest request;

        request = UnityWebRequest.Get(Constants.serverAddress + "api/news");

        yield return(request.SendWebRequest());

        while (!request.isDone)
        {
            yield return(new WaitForEndOfFrame());
        }

        if (request.isNetworkError)
        {
            Debug.Log("Network error: Cannot get news: " + request.error + ", Code = " + request.responseCode);
            if (noconnection != null)
            {
                noconnection();
            }
        }
        else if (request.isHttpError)
        {
            if (request.responseCode == 500)
            {
                Debug.Log("Http error: Database search failed: " + request.error + ", Code = " + request.responseCode);
                if (failure != null)
                {
                    failure();
                }
            }
        }
        else if (request.responseCode == 200)
        {
            // response contains the message
            //Debug.Log("News received: " + request.downloadHandler.text);

            Dictionary <string, News> newsData = null;
            try
            {
                newsData = JsonConvert.DeserializeObject <Dictionary <string, News> >(request.downloadHandler.text);
            } catch (Exception)
            {
                Debug.LogWarning("warning: Cannot deserialize news.");
            }

            if (newsData != null)
            {
                m_CachedNews = new List <News>();
                foreach (News n in newsData.Values)
                {
                    m_CachedNews.Add(n);
                }
                m_CachedNews.Sort((t1, t2) => { return(MessageManager.ParseTimeStamp(t2.createdAt).CompareTo(MessageManager.ParseTimeStamp(t1.createdAt))); });

                if (success != null)
                {
                    success(m_CachedNews);
                }
            }
        }
    }