11using System ;
2+ using System . Collections . Generic ;
23using System . Linq ;
34using System . Net . Http ;
45using System . Threading . Tasks ;
@@ -9,28 +10,71 @@ class Program
910 {
1011 static async Task Main ( string [ ] args )
1112 {
13+ var epp = Client . TestClient . Episode . Empire ;
1214 // lets create a simple console application that can sho github data
1315
14- var accesstoken = args [ 0 ] ;
16+ // var accesstoken = args[0];
1517
16- var httpClient = new HttpClient ( )
18+ //var httpClient = new HttpClient()
19+ //{
20+ // BaseAddress = new Uri("https://api.github.com/graphql"),
21+ // DefaultRequestHeaders = {
22+ // { "User-Agent", "Tocsoft.GraphQLCodeGen.Sample" },
23+ // { "Authorization", $"Bearer {accesstoken}" }
24+ // }
25+ //};
26+
27+ //httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
28+ //var client = new Client.GitHub.GitHubClient(httpClient);
29+ //var result = await client.UsersRepositoresAsync("tocsoft", 10);
30+ //var repo = result.User.First.Nodes.First();
31+ //var id = repo.Id;
32+
33+ ////var hasStared = await client.AddStarAsync(id);
34+ //var user = await client.CurrentUserAsync();
35+ //var b = user.Viewer.Bio;
36+ }
37+ }
38+
39+ public class EnumClass
40+ {
41+ static Dictionary < string , EnumClass > lookup ;
42+
43+ public string Value { get ; }
44+ public bool IsDefined { get ; }
45+
46+ private EnumClass ( string value , bool isDefined )
47+ {
48+ this . Value = value ;
49+ this . IsDefined = isDefined ;
50+ }
51+
52+ private static EnumClass Create ( string value , bool isDefined )
53+ {
54+ if ( lookup . TryGetValue ( value , out var val ) )
55+ {
56+ return val ;
57+ }
58+
59+ lock ( lookup )
1760 {
18- BaseAddress = new Uri ( "https://api.github.com/graphql" ) ,
19- DefaultRequestHeaders = {
20- { "User-Agent" , "Tocsoft.GraphQLCodeGen.Sample" } ,
21- { "Authorization" , $ "Bearer { accesstoken } " }
61+ if ( lookup . TryGetValue ( value , out val ) )
62+ {
63+ return val ;
2264 }
23- } ;
24-
25- httpClient . DefaultRequestHeaders . Accept . Add ( new System . Net . Http . Headers . MediaTypeWithQualityHeaderValue ( "application/json" ) ) ;
26- var client = new Client . GitHub . GitHubClient ( httpClient ) ;
27- var result = await client . UsersRepositoresAsync ( "tocsoft" , 10 ) ;
28- var repo = result . User . First . Nodes . First ( ) ;
29- var id = repo . Id ;
30-
31- //var hasStared = await client.AddStarAsync(id);
32- var user = await client . CurrentUserAsync ( ) ;
33- var b = user . Viewer . Bio ;
65+
66+ val = new EnumClass ( value , isDefined ) ;
67+ lookup . Add ( value , val ) ;
68+
69+ return val ;
70+ }
3471 }
72+
73+ public static implicit operator EnumClass ( string value ) => Create ( value , false ) ;
74+ public static implicit operator string ( EnumClass value ) => value . Value ;
75+
76+ public static EnumClass Value1 = EnumClass . Create ( "VALUE1" , true ) ;
77+ public static EnumClass Value2 = EnumClass . Create ( "VALUE2" , true ) ;
78+ public static EnumClass Value3 = EnumClass . Create ( "VALUE3" , true ) ;
3579 }
3680}
0 commit comments