Ejemplo n.º 1
0
        public IEnumerable<Project> AppHarborBuilds(string readOnlyToken)
        {
            string accessToken = null;
            using (var db = new CcTrayDbContext())
            {
                Key key = db.Keys.FirstOrDefault(k => k.ReadonlyToken == readOnlyToken);
                if (key != null)
                {
                    accessToken = key.AccessToken;
                }
            }

            if (accessToken != null)
            {
                IEnumerable<AppHarborApplication> applications = GetApplications(accessToken);

                foreach (AppHarborApplication app in applications)
                {
                    bool building = app.GetBuildingBuilds().FirstOrDefault() != null;

                    Build latest = app.Builds.OrderByDescending(b => b.Created).FirstOrDefault();
                    if(latest!=null)
                    {
                        yield return (new Project
                                      {
                                          name = app.Name,
                                          webUrl = app.Url,
                                          activity = building ? "Building" : "Sleeping",
                                          lastBuildStatus = latest.IsSuccessful() ? "Success" : "Failure",
                                          lastBuildLabel = latest.CommitId.Substring(0, 7) + "...",
                                          lastBuildTime = latest.Created.Value.ToString(),
                                      });}
                }
            }
        }
Ejemplo n.º 2
0
        public IEnumerable<Project> AzureWebsiteBuilds(string readOnlyToken)
        {
            var sites = new AzureSite[0];
            using (var db = new CcTrayDbContext())
            {
                sites = db.AzureSites.Where(s => s.ReadOnlyToken == readOnlyToken).ToArray();
            }

            foreach (AzureSite site in sites)
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue("application/json"));

                    string authInfo = string.Format("{0}:{1}", site.Username, site.Password);
                    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authInfo);

                    string responseBody = string.Empty;
                    try
                    {
                        HttpResponseMessage response =
                            httpClient.GetAsync(string.Format("https://{0}.scm.azurewebsites.net/deployments",
                                                              site.Name))
                                .Result;
                        responseBody = response.Content.ReadAsStringAsync().Result;
                    }
                    catch (Exception)
                    {
                    }
                    var json = JsonConvert.DeserializeObject(responseBody) as dynamic;
                    var applicationArray = json as IEnumerable<dynamic>;
                    dynamic build = applicationArray.OrderByDescending(c=>c.start_time).FirstOrDefault();
                    if (build != null)
                    {
                        yield return (new Project
                                          {
                                              name = site.Name,
                                              webUrl = build.Url,
                                              activity = (bool) build.complete ? "Sleeping" : "Building",
                                              lastBuildStatus = build.status == 4 ? "Success" : "Failure",
                                              lastBuildLabel = build.message,
                                              lastBuildTime = build.end_time.ToString(),
                                          });
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public ActionResult Index()
 {
     var model = new HomeViewModel();
     if (User.Identity.IsAuthenticated)
     {
         using (var db = new CcTrayDbContext())
         {
             Key key = db.Keys.Where(k => k.Username == User.Identity.Name).FirstOrDefault();
             if (key != null)
             {
                 model.ReadOnlyToken = key.ReadonlyToken;
             }
         }
     }
     return View(model);
 }
Ejemplo n.º 4
0
        public ActionResult Callback(string code)
        {
            string accessToken = string.Empty;

            if (TryGetAccessToken(code, out accessToken))
            {
                string username = GetAppHarborUsername(accessToken);
                using (var db = new CcTrayDbContext())
                {
                    Key key = db.Keys.FirstOrDefault(k => k.AccessToken == accessToken);
                    if (key == null)
                    {
                        key = new Key {AccessToken = accessToken};
                        key.ReadonlyToken = Guid.NewGuid().ToString();
                        db.Keys.Add(key);
                    }
                    key.Username = username;
                    db.SaveChanges();
                }
                AppendCookieToResponse(accessToken, username);
                return RedirectToAction("index", "Home");
            }
            else
            {
                return RedirectToAction("index","Home");
            }
        }