添加项目文件。

This commit is contained in:
杨皓
2020-04-03 11:55:02 +08:00
parent f8a6829e30
commit d4e7a559f2
178 changed files with 20595 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Xamarin.Essentials;
using XXCpzs.Models;
namespace XXCpzs.Services
{
public class AzureDataStore : IDataStore<Item>
{
HttpClient client;
IEnumerable<Item> items;
public AzureDataStore()
{
client = new HttpClient();
client.BaseAddress = new Uri($"{App.AzureBackendUrl}/");
items = new List<Item>();
}
bool IsConnected => Connectivity.NetworkAccess == NetworkAccess.Internet;
public async Task<IEnumerable<Item>> GetItemsAsync(bool forceRefresh = false)
{
if (forceRefresh && IsConnected)
{
var json = await client.GetStringAsync($"api/item");
items = await Task.Run(() => JsonConvert.DeserializeObject<IEnumerable<Item>>(json));
}
return items;
}
public async Task<Item> GetItemAsync(string id)
{
if (id != null && IsConnected)
{
var json = await client.GetStringAsync($"api/item/{id}");
return await Task.Run(() => JsonConvert.DeserializeObject<Item>(json));
}
return null;
}
public async Task<bool> AddItemAsync(Item item)
{
if (item == null || !IsConnected)
return false;
var serializedItem = JsonConvert.SerializeObject(item);
var response = await client.PostAsync($"api/item", new StringContent(serializedItem, Encoding.UTF8, "application/json"));
return response.IsSuccessStatusCode;
}
public async Task<bool> UpdateItemAsync(Item item)
{
if (item == null || item.Id == null || !IsConnected)
return false;
var serializedItem = JsonConvert.SerializeObject(item);
var buffer = Encoding.UTF8.GetBytes(serializedItem);
var byteContent = new ByteArrayContent(buffer);
var response = await client.PutAsync(new Uri($"api/item/{item.Id}"), byteContent);
return response.IsSuccessStatusCode;
}
public async Task<bool> DeleteItemAsync(string id)
{
if (string.IsNullOrEmpty(id) && !IsConnected)
return false;
var response = await client.DeleteAsync($"api/item/{id}");
return response.IsSuccessStatusCode;
}
}
}