// // GET: /Home/ public ActionResult Index() { var api = new AppHarborApi(new AuthInfo { AccessToken = ConfigurationManager.AppSettings["authToken"] }); var model = new HomeModel(); // Fetch data var builds = api.GetBuilds(Constants.AppHarborAppName); if (builds != null) { bool first = true; ; foreach (var build in builds) { // Get tests var tests = new List<AppHarbor.Model.Test>(); if (first) { tests.AddRange(api.GetTests(Constants.AppHarborAppName, build.ID)); first = false; } model.Builds.Add(build, tests); } } return View(model); }
private Response CheckAuth(NancyContext ctx) { var token = ctx.Request.Session[SessionKeys.ACCESS_TOKEN] as string; if (String.IsNullOrEmpty(token)) return Response.AsRedirect("/SignIn?redirect=" + Uri.EscapeDataString(ctx.Request.Path)); _Api = new AppHarborApi(new AuthInfo { AccessToken = token, TokenType = "Bearer" }); return null; }
public ActionResult Irc() { var api = new AppHarborApi(new AuthInfo { AccessToken = ConfigurationManager.AppSettings["authToken"] }); var latestBuild = api.GetBuilds(Constants.AppHarborAppName).First(); var testResults = api.GetTests(Constants.AppHarborAppName, latestBuild.ID); List<AppHarbor.Model.Test> allTests = new List<AppHarbor.Model.Test>(); foreach (var testresult in testResults) { FillTests(allTests, testresult); } AutoResetEvent are = new AutoResetEvent(false); IrcDotNet.IrcClient client = new IrcDotNet.IrcClient(); try { client.Connect("irc.gamesurge.net", false, new IrcUserRegistrationInfo() { NickName = "crymono-build", RealName = "crymono", UserName = "******" }); client.ClientInfoReceived += (s, e) => are.Set(); are.WaitOne(); client.Channels.Join(new string[] { "#crymono" }); Thread.Sleep(200); string msg = latestBuild.Commit.Message.Replace("\n", "").Replace("\r", ""); client.LocalUser.SendMessage("#crymono", "Build finished, latest commit: " + msg); Thread.Sleep(200); int numPassedTests = allTests.Count(t => t.Status == "Passed"); float percentage = (float)numPassedTests / allTests.Count * 100; client.LocalUser.SendMessage("#crymono", String.Format("Test results: {0} of {1} passed ({2:0}%) - http://crymono.apphb.com/#!/{3} - AppHB: https://appharbor.com/applications/crymonobuild/builds/{3}/tests", numPassedTests, allTests.Count, percentage, latestBuild.ID )); Thread.Sleep(200); } finally { if (client != null && client.IsConnected) { client.Quit("to the hills!"); Thread.Sleep(200); client.Disconnect(); } } return Content("OK"); }
// // GET: /Build/ public ActionResult Index(string buildId) { long longBuildId; if (!long.TryParse(buildId, out longBuildId)) return Content("Invalid build id"); ViewBag.BuildId = buildId; var api = new AppHarborApi(new AuthInfo { AccessToken = ConfigurationManager.AppSettings["authToken"] }); ViewBag.Tests = api.GetTests(Constants.AppHarborAppName, longBuildId); return View(); }
public static DeploymentResult Deploy(AppHarborApi api, string access_token, string siteName, App application, Dictionary<string, string> variables, out string slug) { bool variablesOk = true; bool addonsOk = true; slug = ""; // Create the application at AppHarbor and store away the slug var createResult = api.CreateApplication(siteName, "amazon-web-services::us-east-1"); if (createResult.Status != CreateStatus.Created) return DeploymentResult.UnableToCreateApplication; slug = createResult.ID; // Attempt to disable precompilation. Not fatal if it fails. ApiService.DisablePreCompilation(access_token, slug); // Configure file system access if (application.EnableFileSystem) ApiService.EnableFileSystem(access_token, slug); // Set configuration variables foreach (var variable in variables) { if (api.CreateConfigurationVariable(slug, variable.Key, variable.Value).Status != CreateStatus.Created) variablesOk = false; } // Deploy the first code bundle if (!ApiService.DeployBuild(access_token, slug, application.DownloadUrl)) return DeploymentResult.UnableToDeployCode; // Install addons foreach (var addon in application.Addons) { if (Addons.Supported.ContainsKey(addon)) { if (!ApiService.EnableAddon(access_token, slug, addon, Addons.Supported[addon])) addonsOk = false; } else { addonsOk = false; } } // Check for non-critical failures if (!variablesOk) return DeploymentResult.ErrorSettingVariables; if (!addonsOk) return DeploymentResult.ErrorInstallingAddons; return DeploymentResult.Success; }
public static void TestInit(TestContext context) { if (string.IsNullOrWhiteSpace(AccessToken)) Assert.Inconclusive("Please specify a valid AccessToken"); // zzzintegration + first 20 chracters of newly created guid // this should result in a fairly unique applicationid ApplicationID = "zzzintegration" + Guid.NewGuid() .ToString("N") .ToLower() .Substring(0, 20); Api = new AppHarborApi(new AuthInfo() { AccessToken = AccessToken, }); }
public static void InitTest(TestContext context) { var authInfo = new AuthInfo() { AccessToken = "unittest" }; var client = new RestSharp.RestClient(MockHttp.BaseURL); client.HttpFactory = new RestSharp.SimpleFactory<SampleDataMockHttp>(); Api = new AppHarborApi(authInfo, client); var clientEmptyListData = new RestSharp.RestClient(MockHttp.BaseURL); clientEmptyListData.HttpFactory = new RestSharp.SimpleFactory<EmptyListDataMockHttp>(); EmptyListDataApi = new AppHarborApi(authInfo, clientEmptyListData); var clientExistingData = new RestSharp.RestClient(MockHttp.BaseURL); clientExistingData.HttpFactory = new RestSharp.SimpleFactory<ExistingDataMockHttp>(); ExistingDataDataApi = new AppHarborApi(authInfo, clientExistingData); ApplicationID = ":application"; }
public AppHarborApiAdapter(AppHarborApi api) { _api = api; }
public SitesViewModel(AppHarborApi api, ISession session) : base("Sites", session) { Sites = api.GetApplications(); }