using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace STAFF_API.Services
{
public interface IWebAPIClient
{
#region Properties
///
/// Specify base address to use on http client
///
string BaseAddress { get; set; }
///
/// Access token to call web api
///
string AccessToken { get; set; }
Dictionary Headers { get; set; }
#endregion
#region Methods
///
/// Call web api with HTTP GET method
///
///
/// The part of the web api serevice.
/// For example: BookingPromotion/GetPromotion?promotionId=49
///
/// Return as generic class
Task GetAsync(string actionPart);
///
/// Call web api with HTTP POST method
///
///
/// The part of the web api serevice.
/// For example: BookingPromotion/AddNewGeneralPromotion
///
/// Input to call web api
/// Return as generic class
Task PostAsync(string actionPart, object inputModel);
///
/// Call web api with HTTP POST method with file uploading
///
///
/// The part of the web api serevice.
/// For example: BookingPromotion/AddNewGeneralPromotion
///
/// Multipart Form Data Content
/// Return as generic class
Task PostFileAsync(string actionPart, MultipartFormDataContent formData);
///
/// Call web api with HTTP POST method with file uploading
///
/// The part of the web api serevice.
/// For example: BookingPromotion/AddNewGeneralPromotion
///
/// Input to call web api
/// Expected file downloaded path
/// Return file download path
Task PostDownloadAsync(string actionPart, object inputModel, string returnPhysicalFilePath);
///
/// Call web api with HTTP Put method
///
///
/// The part of the web api serevice.
/// For example: BookingPromotion/UpdateGeneralPromotion?promotionId=49
///
/// Input to call web api
/// Return as generic class
Task PutAsync(string actionPart, object inputModel);
///
/// Call web api with HTTP Delete method
///
///
/// The part of the web api serevice.
/// For example: BookingPromotion/DeleteGeneralPromotion?promotionId=49
///
///
Task DeleteAsync(string actionPart);
#endregion
}
}