11using System ;
2+ using System . Text . Json ;
23using AutoMapper ;
34using GitReleaseManager . Core . Extensions ;
45
@@ -8,10 +9,11 @@ public class GitHubProfile : Profile
89 {
910 public GitHubProfile ( )
1011 {
12+ // These mappings convert the result of Octokit queries to model classes
1113 CreateMap < Octokit . Issue , Model . Issue > ( )
1214 . ForMember ( dest => dest . PublicNumber , act => act . MapFrom ( src => src . Number ) )
1315 . ForMember ( dest => dest . InternalNumber , act => act . MapFrom ( src => src . Id ) )
14- . ForMember ( dest => dest . IsPullRequest , act => act . MapFrom ( src => src . HtmlUrl . IndexOf ( "/pull/" , StringComparison . OrdinalIgnoreCase ) >= 0 ) )
16+ . ForMember ( dest => dest . IsPullRequest , act => act . MapFrom ( src => src . HtmlUrl . Contains ( "/pull/" , StringComparison . OrdinalIgnoreCase ) ) )
1517 . ReverseMap ( ) ;
1618 CreateMap < Model . IssueComment , Octokit . IssueComment > ( ) . ReverseMap ( ) ;
1719 CreateMap < Model . ItemState , Octokit . ItemState > ( ) . ReverseMap ( ) ;
@@ -23,11 +25,35 @@ public GitHubProfile()
2325 CreateMap < Model . ReleaseAssetUpload , Octokit . ReleaseAssetUpload > ( ) . ReverseMap ( ) ;
2426 CreateMap < Model . Label , Octokit . Label > ( ) . ReverseMap ( ) ;
2527 CreateMap < Model . Label , Octokit . NewLabel > ( ) . ReverseMap ( ) ;
28+ CreateMap < Model . User , Octokit . User > ( ) . ReverseMap ( ) ;
2629 CreateMap < Model . Milestone , Octokit . Milestone > ( ) ;
2730 CreateMap < Octokit . Milestone , Model . Milestone > ( )
2831 . ForMember ( dest => dest . PublicNumber , act => act . MapFrom ( src => src . Number ) )
2932 . ForMember ( dest => dest . InternalNumber , act => act . MapFrom ( src => src . Number ) )
3033 . AfterMap ( ( src , dest ) => dest . Version = src . Version ( ) ) ;
34+
35+ // These mappings convert the result of GraphQL queries to model classes
36+ CreateMap < JsonElement , Model . Issue > ( )
37+ . ForMember ( dest => dest . PublicNumber , act => act . MapFrom ( src => src . GetProperty ( "number" ) . GetInt32 ( ) ) )
38+ . ForMember ( dest => dest . InternalNumber , act => act . MapFrom ( src => - 1 ) ) // Not available in graphQL (there's a "id" property but it contains a string which represents the Node ID of the object).
39+ . ForMember ( dest => dest . Title , act => act . MapFrom ( src => src . GetProperty ( "title" ) . GetString ( ) ) )
40+ . ForMember ( dest => dest . HtmlUrl , act => act . MapFrom ( src => src . GetProperty ( "url" ) . GetString ( ) ) )
41+ . ForMember ( dest => dest . IsPullRequest , act => act . MapFrom ( src => src . GetProperty ( "url" ) . GetString ( ) . Contains ( "/pull/" , StringComparison . OrdinalIgnoreCase ) ) )
42+ . ForMember ( dest => dest . User , act => act . MapFrom ( src => src . GetProperty ( "author" ) ) )
43+ . ForMember ( dest => dest . Labels , act => act . MapFrom ( src => src . GetJsonElement ( "labels.nodes" ) . EnumerateArray ( ) ) )
44+ . ReverseMap ( ) ;
45+
46+ CreateMap < JsonElement , Model . Label > ( )
47+ . ForMember ( dest => dest . Name , act => act . MapFrom ( src => src . GetProperty ( "name" ) . GetString ( ) ) )
48+ . ForMember ( dest => dest . Color , act => act . MapFrom ( src => src . GetProperty ( "color" ) . GetString ( ) ) )
49+ . ForMember ( dest => dest . Description , act => act . MapFrom ( src => src . GetProperty ( "description" ) . GetString ( ) ) )
50+ . ReverseMap ( ) ;
51+
52+ CreateMap < JsonElement , Model . User > ( )
53+ . ForMember ( dest => dest . Login , act => act . MapFrom ( src => src . GetProperty ( "login" ) . GetString ( ) ) )
54+ . ForMember ( dest => dest . HtmlUrl , act => act . MapFrom ( src => $ "https://github.com{ src . GetProperty ( "resourcePath" ) . GetString ( ) } ") ) // The resourcePath contains a value similar to "/jericho". That's why we must manually prepend "https://github.com
55+ . ForMember ( dest => dest . AvatarUrl , act => act . MapFrom ( src => src . GetProperty ( "avatarUrl" ) . GetString ( ) ) )
56+ . ReverseMap ( ) ;
3157 }
3258 }
3359}
0 commit comments