public ITentRequestDate FromPost(ITentRequestPost post, TentFeedRequestSort sortBy) { Ensure.Argument.IsNotNull(post, nameof(post)); Ensure.Argument.IsNotNull(post.Post, nameof(post.Post)); // Create the resulting Request Date object. var result = new TentRequestDate(this.uriHelpers) { Version = post.Post.Version.Id }; // Pick the correct date on the specified post. switch (sortBy) { case TentFeedRequestSort.VersionPublishedAt: result.Date = post.Post.Version.PublishedAt.GetValueOrDefault(); break; case TentFeedRequestSort.VersionReceivedAt: result.Date = post.Post.Version.ReceivedAt.GetValueOrDefault(); break; case TentFeedRequestSort.PublishedAt: result.Date = post.Post.PublishedAt.GetValueOrDefault(); break; default: result.Date = post.Post.ReceivedAt.GetValueOrDefault(); break; } return result; }
public ITentRequestDate FromString(string date) { Ensure.Argument.IsNotNullOrWhiteSpace(date, nameof(date)); var requestDateParts = date.Split('+'); // Make sure we have something in the array. if (!requestDateParts.Any()) throw new ArgumentOutOfRangeException(nameof(date), "The provided Tent date isn't valid."); // Try to extract the date. var dateValue = requestDateParts[0].TryParseLong(); if (!dateValue.HasValue) throw new ArgumentOutOfRangeException(nameof(date), "The provided Tent date isn't valid."); // Create the resulting Request Date object. var result = new TentRequestDate(this.uriHelpers) { Date = dateValue.Value.FromUnixTime() }; // Extract the version, if any. if (requestDateParts.Length > 1) result.Version = this.uriHelpers.UrlDecode(requestDateParts[1]); return result; }