+}
diff --git a/OurUmbraco.Site/config/MeetupUmbracoGroups.txt b/OurUmbraco.Site/config/MeetupUmbracoGroups.txt
new file mode 100644
index 00000000..a7bc1b09
--- /dev/null
+++ b/OurUmbraco.Site/config/MeetupUmbracoGroups.txt
@@ -0,0 +1,7 @@
+umbracodk
+Dutch-Umbraco-User-Group
+Australian-Umbraco-Meetups
+Kent-Umbraco-Meetup
+Sydney-Umbraco-Meetup
+Umbraco-Meetup-RheinMain
+The-London-Umbraco-Meetup
\ No newline at end of file
diff --git a/OurUmbraco.Site/packages.config b/OurUmbraco.Site/packages.config
index a2526ef8..40c06703 100644
--- a/OurUmbraco.Site/packages.config
+++ b/OurUmbraco.Site/packages.config
@@ -56,6 +56,9 @@
+
+
+
diff --git a/OurUmbraco/Community/Controllers/MeetupsController.cs b/OurUmbraco/Community/Controllers/MeetupsController.cs
new file mode 100644
index 00000000..a4d3452f
--- /dev/null
+++ b/OurUmbraco/Community/Controllers/MeetupsController.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web.Mvc;
+using OurUmbraco.Community.Models;
+using Skybrud.Social.Meetup;
+using Skybrud.Social.Meetup.Models.Events;
+using Skybrud.Social.Meetup.Responses.Events;
+using Umbraco.Core.Logging;
+using Umbraco.Web.Mvc;
+using Umbraco.Core.Cache;
+
+namespace OurUmbraco.Community.Controllers {
+
+ public class MeetupsController : SurfaceController {
+
+ public ActionResult GetEvents() {
+
+ MeetupEventsModel model = new MeetupEventsModel {
+ Events = new MeetupEvent[0]
+ };
+
+ try {
+
+ string configPath = Server.MapPath("~/config/MeetupUmbracoGroups.txt");
+ if (!System.IO.File.Exists(configPath)) {
+ LogHelper.Debug("Config file was not found: " + configPath);
+ return PartialView("~/Views/Partials/Home/Meetups.cshtml", model);
+ }
+
+ // Get the alias (urlname) of each group from the config file
+ string[] aliases = System.IO.File.ReadAllLines(configPath);
+
+ model.Events =
+ ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem("UmbracoSearchedMeetups",
+ () => {
+
+ // Initialize a new service instance (we don't specify an API key since we're accessing public data)
+ MeetupService service = new MeetupService();
+
+ List aggregated = new List();
+
+ foreach (string alias in aliases) {
+
+ try {
+
+ // Make the call to the meetup.com API to get upcoming events
+ MeetupGetEventsResponse res = service.Events.GetEvents(alias);
+
+ // TODO: We should probably have some pagination, as the API only returns the first 20 events for a group (none of the groups currently have that much)
+
+ // Append the events from the reasponse to the aggregated list
+ aggregated.AddRange(res.Body);
+
+
+ } catch (Exception ex) {
+ LogHelper.Error("Could not get events from meetup.com for group with alias: " + alias, ex);
+ }
+
+ }
+
+ return aggregated.OrderBy(x => x.Time).ToArray();
+
+ }, TimeSpan.FromMinutes(30));
+
+
+ } catch (Exception ex) {
+ LogHelper.Error("Could not get events from meetup.com", ex);
+ }
+
+ return PartialView("~/Views/Partials/Home/Meetups.cshtml", model);
+
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/OurUmbraco/Community/Models/MeetupEventsModel.cs b/OurUmbraco/Community/Models/MeetupEventsModel.cs
new file mode 100644
index 00000000..1d5ad57f
--- /dev/null
+++ b/OurUmbraco/Community/Models/MeetupEventsModel.cs
@@ -0,0 +1,11 @@
+using Skybrud.Social.Meetup.Models.Events;
+
+namespace OurUmbraco.Community.Models {
+
+ public class MeetupEventsModel {
+
+ public MeetupEvent[] Events { get; set; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/OurUmbraco/OurUmbraco.csproj b/OurUmbraco/OurUmbraco.csproj
index 3250b40b..8a6ef83c 100644
--- a/OurUmbraco/OurUmbraco.csproj
+++ b/OurUmbraco/OurUmbraco.csproj
@@ -241,6 +241,18 @@
..\packages\semver.1.1.2\lib\net451\Semver.dllTrue
+
+ ..\packages\Skybrud.Essentials.1.0.8\lib\net45\Skybrud.Essentials.dll
+ True
+
+
+ ..\packages\Skybrud.Social.Core.1.0.0-beta9\lib\net45\Skybrud.Social.Core.dll
+ True
+
+
+ ..\packages\Skybrud.Social.Meetup.1.0.0-beta001\lib\net45\Skybrud.Social.Meetup.dll
+ True
+ ..\packages\UmbracoCms.Core.7.5.10\lib\SQLCE4Umbraco.dllTrue
@@ -391,7 +403,9 @@
+
+
diff --git a/OurUmbraco/packages.config b/OurUmbraco/packages.config
index 36f0e3a1..9bac4c67 100644
--- a/OurUmbraco/packages.config
+++ b/OurUmbraco/packages.config
@@ -55,6 +55,9 @@
+
+
+