1
1
using System ;
2
+ using System . Text . Json ;
2
3
using AutoMapper ;
3
4
using GitReleaseManager . Core . Extensions ;
4
5
@@ -8,10 +9,11 @@ public class GitHubProfile : Profile
8
9
{
9
10
public GitHubProfile ( )
10
11
{
12
+ // These mappings convert the result of Octokit queries to model classes
11
13
CreateMap < Octokit . Issue , Model . Issue > ( )
12
14
. ForMember ( dest => dest . PublicNumber , act => act . MapFrom ( src => src . Number ) )
13
15
. 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 ) ) )
15
17
. ReverseMap ( ) ;
16
18
CreateMap < Model . IssueComment , Octokit . IssueComment > ( ) . ReverseMap ( ) ;
17
19
CreateMap < Model . ItemState , Octokit . ItemState > ( ) . ReverseMap ( ) ;
@@ -23,11 +25,35 @@ public GitHubProfile()
23
25
CreateMap < Model . ReleaseAssetUpload , Octokit . ReleaseAssetUpload > ( ) . ReverseMap ( ) ;
24
26
CreateMap < Model . Label , Octokit . Label > ( ) . ReverseMap ( ) ;
25
27
CreateMap < Model . Label , Octokit . NewLabel > ( ) . ReverseMap ( ) ;
28
+ CreateMap < Model . User , Octokit . User > ( ) . ReverseMap ( ) ;
26
29
CreateMap < Model . Milestone , Octokit . Milestone > ( ) ;
27
30
CreateMap < Octokit . Milestone , Model . Milestone > ( )
28
31
. ForMember ( dest => dest . PublicNumber , act => act . MapFrom ( src => src . Number ) )
29
32
. ForMember ( dest => dest . InternalNumber , act => act . MapFrom ( src => src . Number ) )
30
33
. 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 ( ) ;
31
57
}
32
58
}
33
59
}
0 commit comments