internal static Application CreateFromAPI(AppHarbor.Model.Application app) { return new Application { Name = app.Name, Slug = app.Slug, Url = app.Url }; }
public ProjectsController(ITweetHarborDbContext database, ITweetHarborTwitterService twitterService, ITweetHarborTextMessageService textMessageService, AppHarbor.Client.IAppHarborClient appHarborClient) { this.database = database; this.twitterService = twitterService; this.textMessageService = textMessageService; this.appHarborClient = appHarborClient; }
public virtual ActionResult Feed(int?page, int?pageSize) { var blogRoot = EnsureTrailingSlash(Configuration.GetSiteRoot(AppHarbor.IsSecureConnection(HttpContext))) + "blog"; var posts = GetPostsByMostRecentFirst(); if (page != null && pageSize != null) { int skip = page.GetValueOrDefault() * pageSize.GetValueOrDefault(1); posts = posts.Skip(skip).Take(pageSize.GetValueOrDefault(1)); } else if (pageSize != null) { posts = posts.Take(pageSize.GetValueOrDefault(1)); } var feed = new SyndicationFeed("Chocolatey Blog", "The official blog for Chocolatey, the package manager for Windows!", new Uri(blogRoot)); feed.Copyright = new TextSyndicationContent("Chocolatey copyright RealDimensions Software, LLC, posts copyright original author or authors."); feed.Language = "en-US"; feed.Authors.Add(new SyndicationPerson(string.Empty, "The Chocolatey Team", string.Empty)); var items = new List <SyndicationItem>(); foreach (var post in posts.OrEmptyListIfNull()) { var blogUrl = blogRoot + "/" + post.UrlPath; var item = new SyndicationItem(post.Title, post.Post, new Uri(blogUrl), post.UrlPath, post.Published.GetValueOrDefault()); item.PublishDate = post.Published.GetValueOrDefault(); item.Authors.Add(new SyndicationPerson(string.Empty, post.Author, string.Empty)); item.Copyright = new TextSyndicationContent("Copyright RealDimensions Software LLC and original author(s)."); items.Add(item); } try { var mostRecent = posts.FirstOrDefault(); feed.LastUpdatedTime = mostRecent == null ? DateTime.UtcNow : mostRecent.Published.GetValueOrDefault(); } catch (Exception) { feed.LastUpdatedTime = DateTime.UtcNow; } feed.Items = items; return(new RSSActionResult { Feed = feed }); //remove a10 - http://stackoverflow.com/a/15971300/18475 }
private User AppHarborCreateOrUpdateAccountIfNeeded(string AccessToken, AppHarbor.Client.User user, User returnUser) { //TODO: must have some kind of AppHb unique id-- username, etc --see twitter approach (screenname) (for now we used emailaddress) if (null == returnUser) { returnUser = (from u in database.Users where u.AuthenticationAccounts.FirstOrDefault(ac => ac.AccountProvider == "appharbor" && ac.UserName == user.UserName) != null select u).FirstOrDefault(); } if (null == returnUser) // CREATE { var existingUser = (from u in database.Users where u.UserName.ToLower() == user.UserName.ToLower() select u).FirstOrDefault(); returnUser = new User(); returnUser.UserName = null == existingUser ? user.UserName : ""; returnUser.EmailAddress = user.EmailAddress; returnUser.UpdateUniqueId(); database.Users.Add(returnUser); } var newAppHarborAccount = returnUser.AuthenticationAccounts.FirstOrDefault(ac => ac.AccountProvider == "appharbor" && ac.UserName == user.UserName); if (newAppHarborAccount == null) { newAppHarborAccount = new UserAuthenticationAccount(); newAppHarborAccount.AccountProvider = "appharbor"; newAppHarborAccount.UserName = user.UserName; newAppHarborAccount.UserName = user.UserName; newAppHarborAccount.ProfilePicUrl = "<not implemented>"; if (null == returnUser.AuthenticationAccounts) returnUser.AuthenticationAccounts = new Collection<UserAuthenticationAccount>(); returnUser.AuthenticationAccounts.Add(newAppHarborAccount); } //returnUser.UserProfilePicUrl = user.ProfileImageUrl; var appharborAccount = returnUser.AuthenticationAccounts.First(t => t.AccountProvider == "appharbor"); appharborAccount.OAuthToken = AccessToken; //appharborAccount.OAuthTokenSecret = accessToken.TokenSecret; //appharborAccount.ProfilePicUrl = user.ProfileImageUrl; try { database.SaveChanges(); } catch (Exception e) { Trace.WriteLine("Exception: " + e.Message); throw e; } return returnUser; }
public virtual ActionResult Feed(int?page, int?pageSize) { var siteRoot = EnsureTrailingSlash(Configuration.GetSiteRoot(AppHarbor.IsSecureConnection(HttpContext))); IEnumerable <Package> packageVersions = Cache.Get(string.Format("packageVersions-False"), DateTime.UtcNow.AddMinutes(Cache.DEFAULT_CACHE_TIME_MINUTES), () => packageSvc.GetPackagesForListing(includePrerelease: false).OrderByDescending(p => p.Published).ToList() ); if (page != null && pageSize != null) { int skip = page.GetValueOrDefault() * pageSize.GetValueOrDefault(1); packageVersions = packageVersions.Skip(skip).Take(pageSize.GetValueOrDefault(1)); } else if (pageSize != null) { packageVersions = packageVersions.Take(pageSize.GetValueOrDefault(1)); } var feed = new SyndicationFeed("Chocolatey", "Chocolatey Packages", new Uri(siteRoot)); feed.Copyright = new TextSyndicationContent("Chocolatey copyright RealDimensions Software, LLC, Packages copyright original maintainer(s), Products copyright original author(s)."); feed.Language = "en-US"; var items = new List <SyndicationItem>(); foreach (Package package in packageVersions.ToList().OrEmptyListIfNull()) { string title = string.Format("{0} ({1})", package.PackageRegistration.Id, package.Version); var galleryUrl = siteRoot + "packages/" + package.PackageRegistration.Id + "/" + package.Version; var item = new SyndicationItem(title, package.Summary, new Uri(galleryUrl), package.PackageRegistration.Id + "." + package.Version, package.Published); item.PublishDate = package.Published; items.Add(item); } try { var mostRecentPackage = packageVersions.FirstOrDefault(); feed.LastUpdatedTime = mostRecentPackage == null ? DateTime.UtcNow : mostRecentPackage.Published; } catch (Exception) { feed.LastUpdatedTime = DateTime.UtcNow; } feed.Items = items; return(new RSSActionResult { Feed = feed }); }
public static string PackageDownload(this UrlHelper url, int feedVersion, string id, string version) { string routeName = "v" + feedVersion + RouteName.DownloadPackage; string protocol = AppHarbor.IsSecureConnection(url.RequestContext.HttpContext) ? "https" : "http"; string returnUrl = url.RouteUrl( routeName, new { Id = id, Version = version }, protocol: protocol); //hack, replace removing port //return Regex.Replace(returnUrl, @"\:\d+\/", "/"); // Ensure trailing slashes for versionless package URLs, as a fix for package filenames that look like known file extensions return(version == null?EnsureTrailingSlash(returnUrl) : returnUrl); }
protected virtual bool UseHttps() { return(AppHarbor.IsSecureConnection(HttpContext)); }
private void FillTests(List<AppHarbor.Model.Test> list, AppHarbor.Model.Test test) { if (test.Kind.Equals("Test")) list.Add(test); if (test.Tests != null && test.Tests.Count > 0) { foreach (var childTest in test.Tests) { FillTests(list, childTest); } } }
private void UpdateBuildUI(AppHarbor.Model.Application application, Build build, BuildStatus status) { currentInfoTabPage.Invoke((Action)delegate { pictureBoxLoadingSpinner.Hide(); labelAppName.Text = application.Name; labelStatus.Text = build.Status; labelTime.Text = build.Created.ToString(); var isDeployed = (build.Deployed != DateTime.MinValue); labelDeployed.Text = isDeployed ? build.Deployed.ToString() : "NOT DEPLOYED"; labelDeployed.ForeColor = (isDeployed ? Color.Green : Color.Orange); SetupUrl(buildUrlLinkLabel, build.Url.AbsoluteUri); SetupUrl(applicationUrlLinkLabel, String.Format("http://{0}.apphb.com", application.Name.ToLowerInvariant())); labelCommit.Text = build.Commit.Message; var colour = GetColourForBuildStatus(status); labelStatus.ForeColor = colour; }); }