Skip to content

Commit

Permalink
#75 Added serialization support for RelationshipDetails
Browse files Browse the repository at this point in the history
  • Loading branch information
linvi committed Aug 15, 2016
1 parent c478e84 commit d46bda1
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 5 deletions.
1 change: 1 addition & 0 deletions Tweetinvi.Core/Core/Factories/IFriendshipFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ public interface IFriendshipFactory

// Generate RelationshipAuthorizations
IFriendshipAuthorizations GenerateFriendshipAuthorizations(bool retweetsEnabled, bool deviceNotificationEnabled);
IRelationshipDetails GenerateFriendshipDetailsFromJson(string json);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Tweetinvi.Models
using Tweetinvi.Models.DTO;

namespace Tweetinvi.Models
{
public interface IRelationshipDetails
{
Expand Down Expand Up @@ -88,5 +90,7 @@ public interface IRelationshipDetails
/// Informs if the source has marked the user as being a spammer.
/// </summary>
bool MarkedSpam { get; }

IRelationshipDetailsDTO RelationshipDetailsDTO { get; set; }
}
}
4 changes: 1 addition & 3 deletions Tweetinvi.Core/Tweetinvi.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -365,9 +365,7 @@
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Core\Controllers\Transactions\" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
Expand Down
12 changes: 11 additions & 1 deletion Tweetinvi.Factories/Friendship/FriendshipFactory.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using Tweetinvi.Core.Factories;
using Tweetinvi.Core.Helpers;
using Tweetinvi.Core.Injectinvi;
using Tweetinvi.Models;
using Tweetinvi.Models.DTO;
Expand All @@ -12,16 +13,19 @@ public class FriendshipFactory : IFriendshipFactory
private readonly IFactory<IRelationshipDetails> _unityRelationshipFactory;
private readonly IFactory<IRelationshipState> _unityRelationshipStateFactory;
private readonly IFactory<IFriendshipAuthorizations> _friendshipAuthorizationUnityFactory;
private readonly IJsonObjectConverter _jsonObjectConverter;


public FriendshipFactory(
IFactory<IRelationshipDetails> unityRelationshipFactory,
IFactory<IRelationshipState> unityRelationshipStateFactory,
IFactory<IFriendshipAuthorizations> friendshipAuthorizationUnityFactory)
IFactory<IFriendshipAuthorizations> friendshipAuthorizationUnityFactory,
IJsonObjectConverter jsonObjectConverter)
{
_unityRelationshipFactory = unityRelationshipFactory;
_unityRelationshipStateFactory = unityRelationshipStateFactory;
_friendshipAuthorizationUnityFactory = friendshipAuthorizationUnityFactory;
_jsonObjectConverter = jsonObjectConverter;
}

// Generate From DTO
Expand All @@ -37,6 +41,12 @@ public IRelationshipDetails GenerateRelationshipFromRelationshipDTO(IRelationshi
return _unityRelationshipFactory.Create(relationshipParameter);
}

public IRelationshipDetails GenerateFriendshipDetailsFromJson(string json)
{
var dto = _jsonObjectConverter.DeserializeObject<IRelationshipDetailsDTO>(json);
return GenerateRelationshipFromRelationshipDTO(dto);
}

public IEnumerable<IRelationshipDetails> GenerateRelationshipsFromRelationshipsDTO(IEnumerable<IRelationshipDetailsDTO> relationshipDTOs)
{
if (relationshipDTOs == null)
Expand Down
2 changes: 2 additions & 0 deletions Tweetinvi/JsonExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ static JsonExtensions()
var twitterListFactory = TweetinviContainer.Resolve<ITwitterListFactory>();
var savedSearchFactory = TweetinviContainer.Resolve<ISavedSearchFactory>();
var accountSettingsFactory = TweetinviContainer.Resolve<IAccountController>();
var friendshipFactory = TweetinviContainer.Resolve<IFriendshipFactory>();

_getSerializableObject = new Dictionary<Type, IJsonSerializer>();

Expand All @@ -83,6 +84,7 @@ static JsonExtensions()
Map<ISavedSearch, ISavedSearchDTO>(s => s.SavedSearchDTO, savedSearchFactory.GenerateSavedSearchFromJson);
Map<IAccountSettings, IAccountSettingsDTO>(s => s.AccountSettingsDTO, accountSettingsFactory.GenerateAccountSettingsFromJson);
Map<IOEmbedTweet, IOEmbedTweetDTO>(t => t.OembedTweetDTO, tweetFactory.GenerateOEmbedTweetFromJson);
Map<IRelationshipDetails, IRelationshipDetailsDTO>(r => r.RelationshipDetailsDTO, friendshipFactory.GenerateFriendshipDetailsFromJson);
// ReSharper restore RedundantTypeArgumentsOfMethod
}

Expand Down

0 comments on commit d46bda1

Please sign in to comment.