//
        // 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);
        }
Exemplo n.º 2
0
 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();
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        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,
            });
        }
Exemplo n.º 7
0
        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";
        }
Exemplo n.º 8
0
 public AppHarborApiAdapter(AppHarborApi api)
 {
     _api = api;
 }
Exemplo n.º 9
0
 public SitesViewModel(AppHarborApi api, ISession session)
     : base("Sites", session)
 {
     Sites = api.GetApplications();
 }