Guest User

Untitled

a guest
Jul 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. public class RedditFeedValueReader: IValueReader
  2. {
  3. public readonly string FieldName;
  4.  
  5. public bool UseValueProperty { get; set; }
  6.  
  7. public RedditFeedValueReader(string fieldName)
  8. {
  9. this.FieldName = fieldName;
  10.  
  11. }
  12.  
  13. public ReadResult CanRead(object source, DataAccessContext context)
  14. {
  15. bool flag = source != null && source is RedditSharp.Things.Post;
  16. return new ReadResult(DateTime.Now)
  17. {
  18. ReadValue = source,
  19. WasValueRead = flag,
  20.  
  21. };
  22. }
  23.  
  24. public ReadResult Read(object source, DataAccessContext context)
  25. {
  26. var flag = false;
  27. object readValue = (object) null;
  28. var feeditem = source as RedditSharp.Things.Post;
  29. if (feeditem != null)
  30. {
  31. if (FieldName == "Title" && !string.IsNullOrEmpty(feeditem.Title))
  32. {
  33. readValue = feeditem.Title;
  34. flag = true;
  35. }
  36. else if (FieldName == "AuthorName" && !string.IsNullOrEmpty(feeditem.AuthorName))
  37. {
  38. readValue = feeditem.AuthorName;
  39. flag = true;
  40. }
  41. else if (FieldName == "SelfText" && !string.IsNullOrEmpty(feeditem.SelfText))
  42. {
  43. readValue = feeditem.SelfText;
  44. flag = true;
  45. }
  46. else if (FieldName == "Url" && !string.IsNullOrEmpty(feeditem.Url.ToString()))
  47. {
  48. readValue = feeditem.Url;
  49. flag = true;
  50. }
  51. }
  52. return new ReadResult(DateTime.Now)
  53. {
  54. WasValueRead = flag,
  55. ReadValue = readValue
  56. };
  57. }
  58. }
  59.  
  60. private static readonly Guid TemplateId = Guid.Parse("{68BD9AAD-635F-40F3-9ACD-711662C59EEC}");
  61. private IValueReader ValueReader { get; set; }
  62. private IValueWriter ValueWriter { get; set; }
  63.  
  64. public RedditFeedFieldValueAccessorConverter(IItemModelRepository repository) : base(repository)
  65. {
  66. this.SupportedTemplateIds.Add(TemplateId);
  67. }
  68. protected override ConvertResult<IValueAccessor> ConvertSupportedItem(ItemModel source)
  69. {
  70. var accessor = base.Convert(source);
  71. if (accessor == null)
  72. {
  73. return null;
  74. }
  75.  
  76. var fieldName = base.GetStringValue(source, RedditFeedFieldValueValueAccessorItemModel.RedditFeedFieldName);
  77. if (string.IsNullOrEmpty(fieldName))
  78. {
  79. return null;
  80. }
  81.  
  82. ValueWriter = this.GetValueWriter(source);
  83. // ValueReader= this.GetValueReader(source) ?? new RedditFeedValueReader(fieldName);
  84. if (accessor.ValueReader == null)
  85. {
  86. accessor.ValueReader = new RedditFeedValueReader(fieldName);
  87. }
  88.  
  89. if (ValueWriter == null)
  90. {
  91. ValueWriter = new PropertyValueWriter(fieldName);
  92. }
  93. return this.PositiveResult((IValueAccessor) new ValueAccessor());
  94. }
  95. public class RedditFeedFieldValueAccessorConverter:ValueAccessorConverter
  96. {
  97. private static readonly Guid TemplateId = Guid.Parse("{68BD9AAD-635F-40F3-9ACD-711662C59EEC}");
  98. private IValueReader ValueReader { get; set; }
  99. private IValueWriter ValueWriter { get; set; }
  100.  
  101. public RedditFeedFieldValueAccessorConverter(IItemModelRepository repository) : base(repository)
  102. {
  103. this.SupportedTemplateIds.Add(TemplateId);
  104. }
  105. protected override ConvertResult<IValueAccessor> ConvertSupportedItem(ItemModel source)
  106. {
  107. var accessor = base.Convert(source);
  108. if (accessor == null)
  109. {
  110. return null;
  111. }
  112.  
  113. var fieldName = base.GetStringValue(source, RedditFeedFieldValueValueAccessorItemModel.RedditFeedFieldName);
  114. if (string.IsNullOrEmpty(fieldName))
  115. {
  116. return null;
  117. }
  118.  
  119. ValueWriter = this.GetValueWriter(source);
  120. // ValueReader= this.GetValueReader(source) ?? new RedditFeedValueReader(fieldName);
  121. if (accessor.ValueReader == null)
  122. {
  123. accessor.ValueReader = new RedditFeedValueReader(fieldName);
  124. }
  125.  
  126. if (ValueWriter == null)
  127. {
  128. ValueWriter = new PropertyValueWriter(fieldName);
  129. }
  130. return this.PositiveResult((IValueAccessor) new ValueAccessor());
  131. }
  132.  
  133. [SupportedIds("{68BD9AAD-635F-40F3-9ACD-711662C59EEC}")]
  134. public class RedditFeedFieldValueAccessorConverter : ValueAccessorConverter
  135. {
  136. public RedditFeedFieldValueAccessorConverter(IItemModelRepository repository) : base(repository)
  137. {
  138. }
  139.  
  140. protected override IValueReader GetValueReader(ItemModel source)
  141. {
  142. IValueReader valueReader = base.GetValueReader(source);
  143. if (valueReader != null)
  144. {
  145. return valueReader;
  146. }
  147.  
  148. var fieldName = base.GetStringValue(source, RedditFeedFieldValueValueAccessorItemModel.RedditFeedFieldName);
  149. if (string.IsNullOrEmpty(fieldName))
  150. {
  151. return null;
  152. }
  153.  
  154. return new RedditFeedValueReader(fieldName);
  155. }
  156.  
  157. protected override IValueWriter GetValueWriter(ItemModel source)
  158. {
  159. IValueWriter valueWriter = base.GetValueWriter(source);
  160. if (valueWriter != null)
  161. {
  162. return valueWriter;
  163. }
  164.  
  165. var fieldName = base.GetStringValue(source, RedditFeedFieldValueValueAccessorItemModel.RedditFeedFieldName);
  166. if (string.IsNullOrEmpty(fieldName))
  167. {
  168. return null;
  169. }
  170.  
  171. return new PropertyValueWriter(fieldName);
  172. }
  173. }
Add Comment
Please, Sign In to add comment