using System;
using System.Linq;
using System.Collections.Generic;
using Microsoft.AspNet.Http;
using Yavsc.ViewModels.Account;

namespace Yavsc.Helpers
{
    public static class HttpContextExtensions {
        public static IEnumerable<YaAuthenticationDescription> GetExternalProviders(this HttpContext context) {
            if (context == null) {
                throw new ArgumentNullException(nameof(context));
            }

            return from description in context.Authentication.GetAuthenticationSchemes()
                   where !string.IsNullOrEmpty(description.DisplayName)
                   select 
                            ( new YaAuthenticationDescription 
                            {
                                DisplayName = description.DisplayName,
                                AuthenticationScheme = description.AuthenticationScheme,
                                Items = description.Items
                            });;
        }

        public static bool IsProviderSupported(this HttpContext context, string provider) {
            if (context == null) {
                throw new ArgumentNullException(nameof(context));
            }

            return (from description in context.GetExternalProviders()
                    where string.Equals(description.AuthenticationScheme, provider, StringComparison.OrdinalIgnoreCase)
                    select description).Any();
        }
    }


}