PageRenderTime 26ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/Cloud/Library.Cloud/Util/PortletUtil.cs

#
C# | 258 lines | 232 code | 23 blank | 3 comment | 15 complexity | 0acf85ea109a45cbdc1db9195973ea9c MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1
  1. using System;
  2. using System.Data;
  3. using System.Globalization;
  4. using System.IO;
  5. using System.Net;
  6. using System.Text;
  7. using System.Xml;
  8. using Library.Util;
  9. namespace Library.Cloud.Util
  10. {
  11. public class PortletUtil
  12. {
  13. public static DataTable RssReader(string url)
  14. {
  15. XmlTextReader reader = null;
  16. var ds = new DataSet();
  17. try
  18. {
  19. reader = new XmlTextReader(url);
  20. ds.ReadXml(reader);
  21. return ds.Tables["item"];
  22. }
  23. catch (Exception ex)
  24. {
  25. var dt = new DataTable("item");
  26. dt.Columns.Add("title", typeof (string));
  27. dt.Columns.Add("description", typeof (string));
  28. dt.Columns.Add("pubDate", typeof (string));
  29. dt.Columns.Add("image", typeof (string));
  30. dt.Columns.Add("item_Id", typeof (string));
  31. dt.Columns.Add("link", typeof (string));
  32. dt.Columns.Add("guid", typeof (string));
  33. dt.Columns.Add("channel_Id", typeof (string));
  34. dt.Rows.Add(new[]
  35. {
  36. "Hata Oluştu", ExceptionUtil.ParseExceptions(ex), DateTime.Now.ToShortDateString(),
  37. "/Images/Common/Error.gif", "1", "", "", ""
  38. });
  39. return dt;
  40. }
  41. finally
  42. {
  43. if (reader != null)
  44. reader.Close();
  45. ds.Dispose();
  46. }
  47. }
  48. public static string TwitterReader(string userName, int count = 10)
  49. {
  50. XmlTextReader reader = null;
  51. try
  52. {
  53. reader = new XmlTextReader("http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=" + userName);
  54. var myxml = new XmlDocument();
  55. myxml.Load(reader);
  56. var nodes = myxml.SelectNodes("rss/channel/item/description");
  57. if (nodes == null)
  58. return "Akış bulunamadı.";
  59. var RFC822 = "ddd, dd MMM yyyy HH:mm:ss zzz";
  60. var sb = new StringBuilder();
  61. for (var i = 0; i < count; i++)
  62. {
  63. if (nodes[i] == null) break;
  64. var dt = DateTime.ParseExact(myxml.SelectNodes("rss/channel/item/pubDate")[i].InnerText, RFC822, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
  65. sb.Append("<span class=\"PubDate\">");
  66. sb.Append(userName + " " + dt.ToShortDateString() + " " + dt.ToShortTimeString() + " tarihinde dedi ki;<br />");
  67. sb.Append("</span>");
  68. sb.Append(nodes[i].InnerText);
  69. sb.Append("<br/>");
  70. sb.Append("<br/>");
  71. }
  72. return sb.ToString().Replace(userName + ":", "");
  73. //return myxml.SelectSingleNode("rss/channel/item/description").InnerText.Replace(userName + ":", "");
  74. } catch(Exception ex)
  75. {
  76. return ExceptionUtil.ParseExceptions(ex);
  77. }
  78. finally
  79. {
  80. if (reader != null)
  81. reader.Close();
  82. }
  83. }
  84. public static string HavaDurumu(string il)
  85. {
  86. try
  87. {
  88. const string template = @"
  89. <table cellpadding=""0"" cellspacing=""0"" border=""0"" class=""Weather"">
  90. <tr>
  91. <td style=""vertical-align:top; text-align:left;""><img width=""90px"" src=""{0}"" alt="""" /></span></td>
  92. <td style=""vertical-align:top"">
  93. <table cellpadding=""0"" cellspacing=""0"" border=""0"" style=""text-align:left;"">
  94. <tr>
  95. <td><span class=""Derece"">{1}</span></td>
  96. </tr>
  97. <tr>
  98. <td><span class=""Durum"">{2}</span></td>
  99. </tr>
  100. <tr>
  101. <td><span class=""Nem"">{3}</span></td>
  102. </tr>
  103. <tr>
  104. <td><span class=""Ruzgar"">{4}</span></td>
  105. </tr>
  106. </table>
  107. </td>
  108. </tr>
  109. <tr>
  110. <td colspan=""2"">
  111. <table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  112. <tr>
  113. <td><span class=""NextDayName"">{5}</span></td>
  114. <td><span class=""NextDayName"">{6}</span></td>
  115. <td><span class=""NextDayName"">{7}</span></td>
  116. <td><span class=""NextDayName"">{20}</span></td>
  117. </tr>
  118. <tr>
  119. <td><img width=""75"" src=""{8}"" class=""TipTip"" title=""{17}""/></td>
  120. <td><img width=""75"" src=""{9}"" class=""TipTip"" title=""{18}""/></td>
  121. <td><img width=""75"" src=""{10}"" class=""TipTip"" title=""{19}""/></td>
  122. <td><img width=""75"" src=""{21}"" class=""TipTip"" title=""{22}""/></td>
  123. </tr>
  124. <tr>
  125. <td><span class=""DayDeg"" >{11}</span><span class=""NightDeg"" >{12}</span></td>
  126. <td><span class=""DayDeg"" >{13}</span><span class=""NightDeg"" >{14}</span></td>
  127. <td><span class=""DayDeg"" >{15}</span><span class=""NightDeg"" >{16}</span></td>
  128. <td><span class=""DayDeg"" >{23}</span><span class=""NightDeg"" >{24}</span></td>
  129. </tr>
  130. </table>
  131. </td>
  132. </tr>
  133. </table>
  134. ";
  135. var strGelenIl = il;
  136. if (string.IsNullOrEmpty(strGelenIl))
  137. strGelenIl = "ANKARA";
  138. var webClient = new WebClient();
  139. var strKaynak = webClient.DownloadString("http://www.google.com/ig/api?weather=" + strGelenIl + "&hl=tr");
  140. var trOkuyucu = new StringReader(strKaynak);
  141. webClient.Dispose();
  142. var rdr = new XmlTextReader(trOkuyucu);
  143. var myxml = new XmlDocument();
  144. myxml.Load(rdr);
  145. var xnlHedef = myxml.SelectNodes("xml_api_reply/weather/current_conditions");
  146. if (xnlHedef == null)
  147. throw new NullReferenceException("Hava durumu bilgisi alınamadı.");
  148. if (xnlHedef.Item(0) == null)
  149. throw new NullReferenceException("Hava durumu bilgisi alınamadı.");
  150. // ReSharper disable PossibleNullReferenceException
  151. var icon = xnlHedef.Item(0).SelectSingleNode("icon").Attributes["data"].InnerText;
  152. var dayIcon = "/Images/Weather/" + icon.Substring(icon.LastIndexOf('/') + 1).Replace(".gif", ".png");
  153. var strDerece = xnlHedef.Item(0).SelectSingleNode("temp_c").Attributes["data"].InnerText + " °C";
  154. var strDurum = xnlHedef.Item(0).SelectSingleNode("condition").Attributes["data"].InnerText;
  155. var strNem = xnlHedef.Item(0).SelectSingleNode("humidity").Attributes["data"].InnerText;
  156. var strRuzgar = xnlHedef.Item(0).SelectSingleNode("wind_condition").Attributes["data"].InnerText;
  157. xnlHedef = myxml.SelectNodes("xml_api_reply/weather/forecast_conditions");
  158. var next1Day = xnlHedef.Item(0).SelectSingleNode("day_of_week").Attributes["data"].InnerText;
  159. var next2Day = xnlHedef.Item(1).SelectSingleNode("day_of_week").Attributes["data"].InnerText;
  160. var next3Day = xnlHedef.Item(2).SelectSingleNode("day_of_week").Attributes["data"].InnerText;
  161. var next4Day = xnlHedef.Item(3).SelectSingleNode("day_of_week").Attributes["data"].InnerText;
  162. icon = xnlHedef.Item(0).SelectSingleNode("icon").Attributes["data"].InnerText;
  163. var next1Image = "/Images/Weather/" + icon.Substring(icon.LastIndexOf('/') + 1).Replace(".gif", ".png");
  164. icon = xnlHedef.Item(1).SelectSingleNode("icon").Attributes["data"].InnerText;
  165. var next2Image = "/Images/Weather/" + icon.Substring(icon.LastIndexOf('/') + 1).Replace(".gif", ".png");
  166. icon = xnlHedef.Item(2).SelectSingleNode("icon").Attributes["data"].InnerText;
  167. var next3Image = "/Images/Weather/" + icon.Substring(icon.LastIndexOf('/') + 1).Replace(".gif", ".png");
  168. icon = xnlHedef.Item(3).SelectSingleNode("icon").Attributes["data"].InnerText;
  169. var next4Image = "/Images/Weather/" + icon.Substring(icon.LastIndexOf('/') + 1).Replace(".gif", ".png");
  170. var next1DayDeg = xnlHedef.Item(0).SelectSingleNode("high").Attributes["data"].InnerText + "°C ";
  171. var next2DayDeg = xnlHedef.Item(1).SelectSingleNode("high").Attributes["data"].InnerText + "°C ";
  172. var next3DayDeg = xnlHedef.Item(2).SelectSingleNode("high").Attributes["data"].InnerText + "°C ";
  173. var next4DayDeg = xnlHedef.Item(3).SelectSingleNode("high").Attributes["data"].InnerText + "°C ";
  174. var next1NightDeg = xnlHedef.Item(0).SelectSingleNode("low").Attributes["data"].InnerText + "°C";
  175. var next2NightDeg = xnlHedef.Item(1).SelectSingleNode("low").Attributes["data"].InnerText + "°C";
  176. var next3NightDeg = xnlHedef.Item(2).SelectSingleNode("low").Attributes["data"].InnerText + "°C";
  177. var next4NightDeg = xnlHedef.Item(3).SelectSingleNode("low").Attributes["data"].InnerText + "°C";
  178. var next1Comment = xnlHedef.Item(0).SelectSingleNode("condition").Attributes["data"].InnerText;
  179. var next2Comment = xnlHedef.Item(1).SelectSingleNode("condition").Attributes["data"].InnerText;
  180. var next3Comment = xnlHedef.Item(2).SelectSingleNode("condition").Attributes["data"].InnerText;
  181. var next4Comment = xnlHedef.Item(3).SelectSingleNode("condition").Attributes["data"].InnerText;
  182. // ReSharper restore PossibleNullReferenceException
  183. trOkuyucu.Dispose();
  184. rdr.Close();
  185. var param = new object[25];
  186. param[0] = dayIcon;
  187. param[1] = strDerece;
  188. param[2] = strDurum;
  189. param[3] = strNem;
  190. param[4] = strRuzgar;
  191. param[5] = "Bugün";
  192. param[6] = "Yarın";
  193. param[7] = DayNameConverter(next3Day);
  194. param[8] = next1Image;
  195. param[9] = next2Image;
  196. param[10] = next3Image;
  197. param[11] = next1DayDeg;
  198. param[12] = next1NightDeg;
  199. param[13] = next2DayDeg;
  200. param[14] = next2NightDeg;
  201. param[15] = next3DayDeg;
  202. param[16] = next3NightDeg;
  203. param[17] = next1Comment;
  204. param[18] = next2Comment;
  205. param[19] = next3Comment;
  206. param[20] = DayNameConverter(next4Day);
  207. param[21] = next4Image;
  208. param[22] = next4Comment;
  209. param[23] = next4DayDeg;
  210. param[24] = next4NightDeg;
  211. return String.Format(template, param);
  212. }
  213. catch (Exception ex)
  214. {
  215. return ExceptionUtil.ParseExceptions(ex);
  216. }
  217. }
  218. private static string DayNameConverter(string dayName)
  219. {
  220. switch (dayName)
  221. {
  222. case "Sal":
  223. return "Salı";
  224. case "Çar":
  225. return "Çarşamba";
  226. case "Per":
  227. return "Perşembe";
  228. case "Cum":
  229. return "Cuma";
  230. default:
  231. return dayName;
  232. }
  233. }
  234. }
  235. }