Advertisement
Guest User

Untitled

a guest
Jun 4th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.20 KB | None | 0 0
  1. namespace FormsLdap
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Configuration;
  6.     using System.IO;
  7.     using System.Net;
  8.     using System.Threading.Tasks;
  9.     using System.Windows.Forms;
  10.     using Newtonsoft.Json;
  11.     using Newtonsoft.Json.Linq;
  12.  
  13.     public class WebApiService
  14.     {
  15.         public TResult CreateUsersPostRequest<TResult>(CreateUsersModel model, string accessToken)
  16.         {
  17.             string url = ConfigurationManager.AppSettings[AppConfigKeys.CreateUsersUrl];
  18.             const string contentType = @"application/json";
  19.  
  20.             var request = (HttpWebRequest)WebRequest.Create(url);
  21.             request.ContentType = contentType;
  22.             request.Method = "POST";
  23.             request.Headers.Add("Authorization", $"Bearer {accessToken}");
  24.  
  25.             using (var writer = new StreamWriter(request.GetRequestStream()))
  26.             {
  27.                 string json = JsonConvert.SerializeObject(model);
  28.                 writer.Write(json);
  29.             }
  30.  
  31.             var response = (HttpWebResponse)request.GetResponse();
  32.             using (var streamReader = new StreamReader(response.GetResponseStream()))
  33.             {
  34.                 var result = streamReader.ReadToEnd();
  35.                 var jsonResult = JsonConvert.DeserializeObject<TResult>(result);
  36.  
  37.                 return jsonResult;
  38.             }
  39.         }
  40.  
  41.         public async Task<JObject> CreateAuthenticationPostRequest(string userName, string password)
  42.         {
  43.             string url = ConfigurationManager.AppSettings[AppConfigKeys.OAuthUrl];
  44.             string contentType = @"application/x-www-form-urlencoded";
  45.  
  46.             var request = WebRequest.Create(url) as HttpWebRequest;
  47.             request.ContentType = contentType;
  48.             request.Method = "POST";
  49.             request.Headers.Add("app_id", "1");
  50.             request.Headers.Add("device_id", "test123");
  51.  
  52.             using (var writer = new StreamWriter(request.GetRequestStream()))
  53.             {
  54.                 string postData = $"username={userName}&password={password}&grant_type=password";
  55.                 await writer.WriteAsync(postData);
  56.             }
  57.  
  58.             try
  59.             {
  60.                 var response = await request.GetResponseAsync() as HttpWebResponse;
  61.                 using (var reader = new StreamReader(response.GetResponseStream()))
  62.                 {
  63.                     var result = await reader.ReadToEndAsync();
  64.                     return (JObject)JsonConvert.DeserializeObject(result);
  65.                 }
  66.             }
  67.             catch (WebException ex)
  68.             {
  69.                 MessageBox.Show($"Invalid username or password.{Environment.NewLine} Please try again",
  70.                     "Login Error",
  71.                     MessageBoxButtons.OK,
  72.                     MessageBoxIcon.Error);
  73.  
  74.                 return null;
  75.             }
  76.         }
  77.  
  78.         public async Task<UserInfo> GetUserInfo(string userName, string accessToken)
  79.         {
  80.             string url = ConfigurationManager.AppSettings[AppConfigKeys.GetUserInfoUrl];
  81.             var userInfo = new UserInfo();
  82.  
  83.             var request = WebRequest.Create(url) as HttpWebRequest;
  84.             request.Method = "GET";
  85.             request.Headers.Add("Authorization", $"Bearer {accessToken}");
  86.  
  87.             var response = request.GetResponse() as HttpWebResponse;
  88.             using (var streamReader = new StreamReader(response.GetResponseStream()))
  89.             {
  90.                 var result = await streamReader.ReadToEndAsync();
  91.                 var parsedResult = JObject.Parse(result);
  92.                 userInfo.IsMutisite = parsedResult["isMutisite"].Value<bool>();
  93.                 if (userInfo.IsMutisite)
  94.                 {
  95.                     var jToken = parsedResult["properties"];
  96.                     userInfo.Properties = jToken.ToObject<Dictionary<int, string>>();
  97.                 }
  98.                 else
  99.                 {
  100.                     userInfo.DefaultPropertyKey = parsedResult["defaultPropertyKey"].Value<int>();
  101.                     userInfo.DefaultProperty = parsedResult["defaultProperty"].Value<string>();
  102.                 }
  103.  
  104.                 return userInfo;
  105.             }
  106.         }
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement