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