Пример #1
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <TechMeetState> FunctionHandler(TechMeetState input, ILambdaContext context)
        {
            var apitoken = ApiToken ?? Environment.GetEnvironmentVariable("apitoken");
            var meetup   = MeetupClient.WithApiToken(apitoken);

            var request = new GetEventsRequest(input.GroupName)
            {
                NoEarlierThan = DateTime.UtcNow.AddMonths(-1),
                NoLaterThan   = DateTime.UtcNow.AddMonths(2),
                Status        = EventStatus.Past | EventStatus.Upcoming,
                Descending    = true
            };

            var events = await meetup.Events.For(request);

            var inputEvents = await input.GetEventsFromS3();

            Console.WriteLine($"found {events.Data.Length} events in response");
            var finalList = events.Data.Concat(inputEvents).Distinct(new EventEquality()).OrderByDescending(e => DateTime.Parse(e.LocalDate));

            inputEvents = finalList.ToList();

            await input.SaveEventsToS3(inputEvents);

            return(input);
        }
Пример #2
0
        public async Task <SkillResponse> Handle(AlexaRequestInformation information)
        {
            var request     = information.SkillRequest as APLSkillRequest;
            var id          = ((IntentRequest)request.Request).Intent.Slots[Consts.SlotEvent].Id();
            var currentDate = LocalDate.FromDateTime(DateTime.Now);

            var meetup = new TechMeetState {
                GroupName = id
            };
            var rawEvents = await meetup.GetEventsFromS3();

            var groupData = await meetup.GetGroupFromS3();

            var events = rawEvents.ToLocalEventTime();

            information.State.ClearSession();
            information.State.SetSession(SessionKeys.CurrentActivity, SkillActivities.Event);
            information.State.SetSession(SessionKeys.CurrentGroup, id);
            if (!events.Any())
            {
                return(SpeechHelper.NoEvent());
            }

            var eventToRecognise =
                (events.Any(l => l.Date > currentDate)
                    ? events.Where(e => e.Date > currentDate)
                    : events).First();

            information.State.SetSession(SessionKeys.CurrentEvent, eventToRecognise.Event.Id);
            return(await SpeechHelper.SingleEventResponse(request, eventToRecognise, currentDate, groupData, "I've got information on a meetup event. "));
        }
Пример #3
0
        public async Task <SkillResponse> Handle(AlexaRequestInformation information)
        {
            information.State.ClearSession();
            var intent = ((IntentRequest)information.SkillRequest.Request).Intent;

            var dates       = AmazonDateParser.Parse(intent.Slots[Consts.SlotDateRange].Value);
            var currentDate = LocalDate.FromDateTime(DateTime.Now);
            var id          = intent.Slots[Consts.SlotEvent].Id();

            var meetup = new TechMeetState {
                GroupName = id
            };

            var rawEvents = await meetup.GetEventsFromS3();

            var groupData = await meetup.GetGroupFromS3();

            information.State.SetSession(SessionKeys.CurrentActivity, SkillActivities.Event);
            information.State.SetSession(SessionKeys.CurrentGroup, id);

            var eventToRecognise = rawEvents.ToLocalEventTime()
                                   .Where(d => d.Date >= dates.From && d.Date <= dates.To).Where(d => d.Date >= currentDate).ToArray();

            if (!eventToRecognise.Any())
            {
                return(SpeechHelper.NoEvent(true));
            }

            if (eventToRecognise.Length == 1)
            {
                return(await SpeechHelper.SingleEventResponse((APLSkillRequest)information.SkillRequest, eventToRecognise.First(), currentDate, groupData, "I've got information on a meetup event. "));
            }

            return(SpeechHelper.RespondToEvent(eventToRecognise, currentDate, groupData.Name));
        }
Пример #4
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="state"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <TechMeetState> FunctionHandler(TechMeetState state, ILambdaContext context)
        {
            var token  = System.Environment.GetEnvironmentVariable("apitoken");
            var meetup = MeetupClient.WithApiToken(token);
            var group  = await meetup.Groups.Get(state.GroupName, new [] { "plain_text_no_images_description" });

            await state.SaveFullGroupToS3(group.Data);

            return(state);
        }
Пример #5
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public TechMeetState FunctionHandler(TechMeetState input, ILambdaContext context)
        {
            if (input == null)
            {
                return(null);
            }

            try
            {
                var output = System.Environment.GetEnvironmentVariable(input.EnvSafeName);
                input.Active = !string.IsNullOrWhiteSpace(output);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Unknown issue with {input.GroupName}");
                Console.WriteLine(ex.Message);
                input.Active = false;
            }

            return(input);
        }
Пример #6
0
 /// <summary>
 /// A simple function that takes a string and does a ToUpper
 /// </summary>
 /// <param name="input"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public TechMeetState FunctionHandler(TechMeetState input, ILambdaContext context)
 {
     input.LastUpdated = DateTime.UtcNow;
     return(input);
 }