Client.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using FspWebApp.Entity.Client;
  2. using Newtonsoft.Json;
  3. using RestSharp;
  4. using System;
  5. using System.Threading.Tasks;
  6. namespace FspWebApp
  7. {
  8. public class Client
  9. {
  10. private static NLog.Logger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetLogger("FspWebApp");
  11. private static readonly Client instance = new Client();
  12. public static Client Default => instance;
  13. public string Token
  14. { get; set; }
  15. public async Task<string> GetAuthToken(string authServiceBaseUrl, string userName, string password)
  16. {
  17. var client = new RestClient();
  18. var request = new RestRequest(authServiceBaseUrl, Method.POST);
  19. request.AddHeader("Content-Type", "application/json");
  20. request.AddParameter("application/x-www-form-urlencoded",
  21. String.Format("grant_type=password&username={0}&password={1}", userName, password), ParameterType.RequestBody);
  22. var tokenResponse = await client.ExecuteTaskAsync<AccessToken>(request);
  23. if (tokenResponse == null || !tokenResponse.IsSuccessful)
  24. return string.Empty;
  25. return "bearer " + tokenResponse.Data.access_token;
  26. }
  27. public async Task<string> ChangeFuelPrice(string transactionServiceBaseUrl, string deviceSn, PosItem data)
  28. {
  29. var client = new RestClient();
  30. var request = new RestRequest(transactionServiceBaseUrl, Method.POST);
  31. request.AddHeader("Content-Type", "application/json");
  32. request.AddHeader("Authorization", Token);
  33. request.AddHeader("DeviceSN", deviceSn);
  34. request.AddJsonBody(data);
  35. var response = await client.ExecuteTaskAsync(request);
  36. logger.Debug("Response: " + response.Content);
  37. return response.StatusDescription;
  38. }
  39. /// <summary>
  40. /// async call will not block, can use this as `fire and go`.
  41. /// </summary>
  42. /// <param name="deviceSerialNumber"></param>
  43. /// <param name="data"></param>
  44. /// <param name="callback"></param>
  45. /// <param name="httpMethod"></param>
  46. /// <returns></returns>
  47. public RestRequestAsyncHandle UploadDataAsync(PumpUploadData data,
  48. Action<IRestResponse, RestRequestAsyncHandle> callback, string deviceServiceUrl)
  49. {
  50. var resourceRelativeUrl = "api/DeviceData";
  51. var client = new RestClient(deviceServiceUrl);
  52. var request = new RestRequest(resourceRelativeUrl, Method.POST);
  53. //request.AddHeader("Content-Type", "application/json;charset=utf-8");
  54. string jsonObj = ConvertFrom(data);
  55. logger.Debug("Upload device data: " + jsonObj);
  56. request.AddJsonBody(data);
  57. return client.ExecuteAsyncPost(request, callback, "POST");//.Execute<Configuration>(request);
  58. }
  59. private string ConvertFrom(object localUploadData)
  60. {
  61. //var ser = new RestSharp.Serializers.JsonSerializer();
  62. return JsonConvert.SerializeObject(localUploadData);
  63. }
  64. }
  65. }