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)); }
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")); }
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); }
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")); }
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")); }