33using IntegrationEngine . Client ;
44using IntegrationEngine . Model ;
55using System ;
6+ using System . Collections ;
67using System . Collections . Generic ;
78using System . Linq ;
89using System . Text ;
@@ -14,29 +15,58 @@ class Program
1415 static void Main ( string [ ] args )
1516 {
1617 var options = new Options ( ) ;
17- if ( ! CommandLine . Parser . Default . ParseArguments ( args , options ) )
18- return ;
18+ if ( args . Length <= 1 ) {
19+ Console . WriteLine ( options . GetUsage ( ) ) ;
20+ Environment . Exit ( CommandLine . Parser . DefaultExitCodeFail ) ;
21+ }
22+ var invokedVerb = "" ;
23+ var invokedVerbInstance = new object ( ) ;
24+ if ( ! CommandLine . Parser . Default . ParseArguments ( args , options , ( verb , subOptions ) => {
25+ invokedVerb = verb ;
26+ invokedVerbInstance = subOptions ;
27+ } ) )
28+ {
29+ Console . WriteLine ( options . GetUsage ( ) ) ;
30+ Environment . Exit ( CommandLine . Parser . DefaultExitCodeFail ) ;
31+ }
32+
1933 var client = ! string . IsNullOrWhiteSpace ( options . WebApiUrl ) ?
2034 new InEngineClient ( options . WebApiUrl ) :
2135 new InEngineClient ( ) ;
22- var type = client . GetType ( ) ;
23- if ( ! type . GetMethods ( ) . Where ( x => x . Name == options . MethodName && ! x . GetParameters ( ) . Any ( ) ) . Any ( ) )
24- {
25- Console . WriteLine ( "Method '{0}' does not exist" , options . MethodName ) ;
26- var availableMethods = typeof ( IInEngineClient ) . GetMethods ( )
27- . Where ( x => ! x . GetParameters ( ) . Any ( ) )
28- . Select ( x => x . Name )
29- . ToList ( ) ;
30- Console . WriteLine ( "Available methods: '{0}'" , string . Join ( ", " , availableMethods ) ) ;
31- return ;
36+
37+ if ( invokedVerb == "get" ) {
38+ var getSubOptions = ( GetSubOptions ) invokedVerbInstance ;
39+ switch ( getSubOptions . Resource )
40+ {
41+ case Endpoint . CronTrigger :
42+ ResolveResult ( client . GetCollection < CronTrigger > ( ) ) ;
43+ break ;
44+ case Endpoint . SimpleTrigger :
45+ ResolveResult ( client . GetCollection < SimpleTrigger > ( ) ) ;
46+ break ;
47+ case Endpoint . JobType :
48+ ResolveResult ( client . GetCollection < JobType > ( ) ) ;
49+ break ;
50+ case Endpoint . TimeZone :
51+ ResolveResult ( client . GetCollection < IntegrationEngine . Model . TimeZone > ( ) ) ;
52+ break ;
53+ case Endpoint . HealthStatus :
54+ ResolveResult ( client . GetHealthStatus ( ) ) ;
55+ break ;
56+ }
3257 }
33- var method = type . GetMethod ( options . MethodName ) ;
34- dynamic result = method . Invoke ( client , null ) ;
58+ }
59+
60+ public static void ResolveResult ( dynamic result )
61+ {
3562 if ( result == null )
3663 Console . WriteLine ( "The web API did not return a result. Is the URL correct and the server online? Try -mPing." ) ;
37- else if ( method . ReturnType . GetInterface ( "IEnumerable" ) != null )
64+ else if ( result is IEnumerable )
65+ {
66+ Console . WriteLine ( "Number of items: {0}" , result . Count ) ;
3867 foreach ( var item in result )
3968 Console . WriteLine ( item ) ;
69+ }
4070 else
4171 Console . WriteLine ( result ) ;
4272 }
0 commit comments