using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Net.Http.Json; using System.Text; using System.Text.Json; using System.Threading.Tasks; using TEAMModelOS.SDK.Extension; namespace TEAMModelOS.SDK { public class CoreAPIHttpService { private readonly HttpClient _httpClient; public CoreAPIHttpService(HttpClient httpClient) { _httpClient = httpClient; } /// /// 隐式登录 /// /// /// /// /// /// /// public async Task Implicit( Dictionary data,string location, IConfiguration _configuration) { var url = _configuration.GetValue("HaBookAuth:CoreAPI"); //url = "https://api2-rc.teammodel.cn"; url = $"{url}/oauth2/implicit"; var clientID = _configuration.GetValue("HaBookAuth:CoreService:clientID"); var clientSecret = _configuration.GetValue("HaBookAuth:CoreService:clientSecret"); if (location.Contains("China")) { location = "China"; } else if (location.Contains("Global")) { location = "Global"; } var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location); if (_httpClient.DefaultRequestHeaders.Contains("Authorization")) { _httpClient.DefaultRequestHeaders.Remove("Authorization"); } _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}"); HttpResponseMessage responseMessage = await _httpClient.PostAsJsonAsync(url, data); if (responseMessage.StatusCode == HttpStatusCode.OK) { string content=await responseMessage.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(content)) { TmdidImplicit tmdidImplicit = content.ToObject(); return tmdidImplicit; } else { return null; } } else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized) { return null; } else { return null; } } /// /// 获取多个用户信息 /// /// /// /// /// /// /// public async Task GetUserInfos(StringContent scontent, string location, IConfiguration _configuration) { var url = _configuration.GetValue("HaBookAuth:CoreAPI"); //url = "https://api2-rc.teammodel.cn"; url = $"{url}/oauth2/getuserinfos"; var clientID = _configuration.GetValue("HaBookAuth:CoreService:clientID"); var clientSecret = _configuration.GetValue("HaBookAuth:CoreService:clientSecret"); if (location.Contains("China")) { location = "China"; } else if (location.Contains("Global")) { location = "Global"; } var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location); if (_httpClient.DefaultRequestHeaders.Contains("Authorization")) { _httpClient.DefaultRequestHeaders.Remove("Authorization"); } _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}"); HttpResponseMessage responseMessage = await _httpClient.PostAsync(url, scontent); if (responseMessage.StatusCode == HttpStatusCode.OK) { string content = await responseMessage.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(content)) { return content; } else { return null; } } else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized) { return null; } else { return null; } } /// /// 获取单个用户信息 /// /// /// /// /// /// /// public async Task GetUserInfo(Dictionary data, string location, IConfiguration _configuration) { var url = _configuration.GetValue("HaBookAuth:CoreAPI"); //url = "https://api2-rc.teammodel.cn"; url = $"{url}/oauth2/getuserinfo"; var clientID = _configuration.GetValue("HaBookAuth:CoreService:clientID"); var clientSecret = _configuration.GetValue("HaBookAuth:CoreService:clientSecret"); if (location.Contains("China")) { location = "China"; } else if (location.Contains("Global")) { location = "Global"; } var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location); if (_httpClient.DefaultRequestHeaders.Contains("Authorization")) { _httpClient.DefaultRequestHeaders.Remove("Authorization"); } _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}"); HttpResponseMessage responseMessage = await _httpClient.PostAsJsonAsync(url, data); if (responseMessage.StatusCode == HttpStatusCode.OK) { string content = await responseMessage.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(content)) { CoreUserInfo coreUserInfo = content.ToObject(); if (coreUserInfo != null) { bool isActivate = !string.IsNullOrWhiteSpace(coreUserInfo.password) || !string.IsNullOrWhiteSpace(coreUserInfo.passwordOld); CoreUser coreUser = new CoreUser { isActivate = isActivate, id = coreUserInfo.id, vid = coreUserInfo.vid, mail = coreUserInfo.mail, mobile = coreUserInfo.mobile, name = coreUserInfo.name, picture = coreUserInfo.picture, habook = coreUserInfo.habook, wechat = coreUserInfo.wechat, facebook = coreUserInfo.facebook, google = coreUserInfo.google, ding = coreUserInfo.ding, apple = coreUserInfo.apple, }; return coreUser; } else { return null; } } else { return null; } } else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized) { return null; } else { return null; } } } public class TmdidImplicit { public string id_token { get; set; } public string access_token { get; set; } public string expires_in { get; set; } public string token_type { get; set; } } public class CoreUser { public string id { get; set; } public string vid { get; set; } public string mail { get; set; } public string mobile { get; set; } public string name { get; set; } public string picture { get; set; } public string habook { get; set; } public string wechat { get; set; } public string facebook { get; set; } public string google { get; set; } public string ding { get; set; } public string apple { get; set; } public bool isActivate { get; set; } } public class CoreUserInfo : CoreUser { public string area { get; set; } public string country { get; set; } public string type { get; set; } public string password { get; set; } public string salt { get; set; } public string passwordOld { get; set; } public string saltOld { get; set; } } }