﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Ojibwe.Public.Sdk.Objects;

namespace Ojibwe.Public.Sdk.Interfaces
{
    public interface IOjibweApi
    {
        string BaseUrl { get; }
        ICredentials Credentials { get; }

        void SetCredentials(string username, string password, bool windowsAuthentication);
        T Execute<T>(object data, HttpMethod method, string resource, params string[] args);
        Stream ExecuteStream(HttpMethod method, string resource, params string[] args);
        Task ExecuteSocketStreamAsync(bool isSend, HttpMethod method, string resource, Func<Stream> getStreamFunc);
        IEnumerable<T> ExecuteList<T>(string resource, int count, PageSizes pageSizes, params string[] args);
    }
}