static void Main(string[] args) { var msgBus = new FakeMessageBus(); var fabService = new FabService(msgBus); var fcdService = new FcdService(msgBus); var fxService = new FxService(msgBus); var feService = new FeService(msgBus); var resultService = new ResultSaverService(msgBus); msgBus.RegisterHandler <XChanged>(fxService.When); msgBus.RegisterHandler <FXProcessed>(feService.When); msgBus.RegisterHandler <FEProcessed>(resultService.When); msgBus.RegisterHandler <AChanged>(fabService.When); msgBus.RegisterHandler <FABProcessed>(fcdService.When); msgBus.RegisterHandler <FCDProcessed>(feService.When); msgBus.RegisterHandler <CxChanged>(fcdService.When); msgBus.RegisterHandler <CxChanged>(fxService.When); msgBus.Publish(new XChanged(1)); msgBus.Publish(new AChanged(2)); msgBus.Publish(new CxChanged(5, 7)); Console.ReadLine(); }
/*--------------------------------------------------------------------------------------------*/ private static FabSpecService BuildService(FabService pSvc, Func <string, ApiEntry> pGetEntry) { var s = new FabSpecService(); s.Name = pSvc.Name; s.Uri = pSvc.Uri; s.Summary = ApiLang.Text <ServiceText>(s.Name + "Summ"); s.Description = ApiLang.Text <ServiceText>(s.Name + "Desc"); s.Operations = new List <FabSpecServiceOperation>(); foreach (FabServiceOperation svcOp in pSvc.Operations) { if (svcOp == null) { throw new Exception("Missing ServiceOperation for '" + pSvc.Name + "'."); } string key = svcOp.Method + " " + s.Uri + svcOp.Uri; ApiEntry ae; try { ae = pGetEntry(key); } catch (Exception e) { throw new Exception("No ApiEntry for '" + pSvc.Name + "' with key '" + key + "'.", e); } FabSpecServiceOperation sso = BuildServiceOp(s.Name, svcOp, ae); s.Operations.Add(sso); } return(s); }
/*--------------------------------------------------------------------------------------------*/ private static FabService BuildOauthMenu() { var s = new FabService(); s.Name = "Oauth"; s.Uri = "/Oauth"; if (OauthAt == null) { OauthAt = NewOperation <FabOauthAccess>("AccessToken"); OauthAtac = NewOperation <FabOauthAccess>("AccessTokenAuthCode"); OauthAtr = NewOperation <FabOauthAccess>("AccessTokenRefresh"); OauthAtcc = NewOperation <FabOauthAccess>("AccessTokenClientCredentials"); OauthLogin = NewOperation <FabOauthLogin>("Login"); OauthLogout = NewOperation <FabOauthLogout>("Logout"); } s.Operations.Add(OauthAt); s.Operations.Add(OauthAtac); s.Operations.Add(OauthAtr); s.Operations.Add(OauthAtcc); s.Operations.Add(OauthLogin); s.Operations.Add(OauthLogout); return(s); }
/*--------------------------------------------------------------------------------------------*/ private static FabService BuildModMenu() { var s = new FabService(); s.Name = "Modify"; s.Uri = "/Mod"; foreach (ApiEntry e in CreateExecutors.ApiEntries) { string name = e.Path.Replace(s.Uri + "/", ""); var op = NewOperation(name, e.ResponseType, e.RequestMethod); s.Operations.Add(op); } return(s); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private static FabService BuildMetaMenu() { var s = new FabService(); s.Name = "Meta"; s.Uri = "/Meta"; if (MetaSpec == null) { MetaSpec = NewOperation <FabResponse <FabSpec> >("Spec"); MetaVersion = NewOperation <FabResponse <FabMetaVersion> >("Version"); MetaTime = NewOperation <FabResponse <FabMetaTime> >("Time"); } s.Operations.Add(MetaSpec); s.Operations.Add(MetaVersion); s.Operations.Add(MetaTime); return(s); }
/*--------------------------------------------------------------------------------------------*/ private static FabService BuildTravMenu() { var s = new FabService(); s.Name = "Traversal"; s.Uri = "/Trav"; foreach (ApiEntry e in TraversalExecutors.ApiEntries) { if (e.Path.IndexOf("*") != -1) { continue; } string name = e.Path.Replace(s.Uri + "/", ""); var op = NewOperation(name, e.ResponseType, e.RequestMethod); s.Operations.Add(op); } return(s); }
/*--------------------------------------------------------------------------------------------*/ private static FabSpecService BuildTraversalService(FabService pSvc, Func <string, ApiEntry> pGetEntry) { IList <ITravRule> rules = TraversalUtil.GetTravRules(); var map = new Dictionary <SpecStepAttribute, IList <ITravRule> >(); foreach (ITravRule rule in rules) { SpecStepAttribute ssa = GetAttribute <SpecStepAttribute>(rule.Step.GetType()); if (!map.ContainsKey(ssa)) { map.Add(ssa, new List <ITravRule>()); } map[ssa].Add(rule); } //// FabSpecService svc = BuildService(pSvc, pGetEntry); svc.Steps = new List <FabSpecServiceStep>(); foreach (SpecStepAttribute ssa in map.Keys) { if (ssa.IsRoot) { continue; } svc.Steps.Add(BuildTraversalServiceStep(ssa, map[ssa])); } return(svc); }