public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            /* Set up http client to retrieve cookies */
            var cookies = new CookieContainer();
            var handler = new HttpClientHandler();

            handler.CookieContainer = cookies;
            var authClient = new HttpClient(handler);

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var    data        = JsonConvert.DeserializeObject <User>(requestBody);

            if (data == null || data.Username == null || data.Password == null)
            {
                var responseObject = new Dictionary <string, object>();

                responseObject.Add("errorMessage", "Please pass a valid object to endpoint with username and password");

                return(new BadRequestObjectResult(responseObject));
            }

            var endpoint = new MflEndpoint();
            var user     = new User()
            {
                Username = data.Username
            };

            var loginUrl = new Uri($"{endpoint.Host}/{endpoint.Year}/login?USERNAME={user.Username}&PASSWORD={data.Password}&XML=1");

            var loginResponse = await authClient.GetAsync(loginUrl);

            var authCookie = cookies.GetCookies(loginUrl).Cast <Cookie>().FirstOrDefault(x => x.Name == "MFL_USER_ID");

            user.UserId = authCookie?.Value;

            if (user.UserId == null)
            {
                log.LogError($"Authentication failed for: {user.Username}");

                var responseObject = new Dictionary <string, object>();

                responseObject.Add("errorMessage", "Authentication failed please check credentials and try again");

                return(new ObjectResult(user)
                {
                    StatusCode = StatusCodes.Status403Forbidden
                });
            }

            return(new OkObjectResult(user));
        }
Ejemplo n.º 2
0
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string userId          = req.Query["userid"].ToString();
            var    endpoint        = new MflEndpoint();
            var    leaguesEndpoint = new Uri($"{endpoint.Host}/{endpoint.Year}/export?TYPE=myleagues&FRANCHISE_NAMES=1&JSON=1");

            string leaguesResponse = MflEndpointController.GetResponseString(leaguesEndpoint, endpoint, userId).Result;;

            var leagues = new Leagues(leaguesResponse);

            return(userId != null
                ? (ActionResult) new OkObjectResult(leagues.LeagueList)
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body"));
        }
Ejemplo n.º 3
0
        public static async Task <string> GetResponseString(Uri uri, MflEndpoint endpoint, string userId, Dictionary <string, string> cookies = null)
        {
            if (cookies == null)
            {
                cookies = new Dictionary <string, string>()
                {
                    { "MFL_USER_ID", userId }
                };
            }
            else
            {
                cookies.Add("MFL_USER_ID", userId);
            }

            try
            {
                var cookieContainer = new CookieContainer();

                using (var httpClientHandler = new HttpClientHandler
                {
                    CookieContainer = cookieContainer
                })
                {
                    using (var httpClient = new HttpClient(httpClientHandler))
                    {
                        AddCookies(cookieContainer, new Uri(endpoint.Host), cookies);

                        var response = await httpClient.GetAsync(uri);

                        if (response != null)
                        {
                            var jsonString = await response.Content.ReadAsStringAsync();

                            return(jsonString);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error in GetResponseString: ", ex);
            }

            return(null);
        }
Ejemplo n.º 4
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string userId      = req.Query["userid"].ToString();
            string leagueId    = req.Query["leagueid"].ToString();
            string franchiseId = req.Query["franchiseid"].ToString();

            var endpoint       = new MflEndpoint();
            var rosterEndpoint = new Uri($"{endpoint.Host}/{endpoint.Year}/export?TYPE=rosters&L={leagueId}&FRANCHISE={franchiseId}&JSON=1");

            string rosterResponse = await MflEndpointController.GetResponseString(rosterEndpoint, endpoint, userId);

            var roster = new Roster(rosterResponse);

            return(userId != null
                ? (ActionResult) new OkObjectResult(roster.PlayerList)
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body"));
        }
Ejemplo n.º 5
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log
            )
        {
            var    userId    = req.Query["userId"].ToString();
            var    since     = req.Query["since"].ToString();
            var    endpoint  = new MflEndpoint();
            string arguments = "export?TYPE=players&DETAILS=1&JSON=1";

            if (!string.IsNullOrEmpty(since))
            {
                arguments += $"&since={since}";
            }
            var playerEndpoint = new Uri($"{endpoint.Host}/{endpoint.Year}/{arguments}");

            string playerResponse = await MflEndpointController.GetResponseString(playerEndpoint, endpoint, userId);

            var players = new Players(playerResponse);

            return(userId != null
                ? (ActionResult) new OkObjectResult(players.PlayerList)
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body"));
        }