Проблема :
мы не можем изменить класс Client из библиотеки bnoffer.owncloudsharp, поскольку он декомпилирован, но нам нужно добавлять пользовательские заголовки (например, User-Agent и Accept) к каждому запросу, сделанному этим клиентом, не меняя сигнатуры методов мои существующие методы. у нас есть около 30 ссылок в базе кода, где вызываются такие методы, как DirectoryExist, CreateDirectory, Upload и т. д.
Вот структура класса OwnCloud, который я использую:
Код: Выделить всё
using owncloudsharp;
using owncloudsharp.Types;
public class OwnCloud
{
private Client c;
public OwnCloud(string owncloudURL, string userId, string password)
{
c = new Client(owncloudURL, userId, password);
}
public bool DirectoryExist(string path)
{
return c.Exists(path);
}
public bool CreateDirectory(string path)
{
return c.CreateDirectory(path);
}
public bool Upload(string path, Stream data, string contentType)
{
return c.Upload(path, data, contentType);
}
// ... other methods
}
Код: Выделить всё
public Client(string url, string user_id, string password)
{
if (url != null && url.EndsWith("/"))
{
url = url.TrimEnd('/');
}
this.url = url;
rest = new RestClient();
rest.BaseUrl = new Uri(url + "/ocs/v1.php/");
rest.Authenticator = new HttpBasicAuthenticator(user_id, password);
rest.AddDefaultParameter("format", "xml");
dav = new WebDavManager();
dav.Credential = new WebDavCredential(user_id, password);
dav.Credential.AuthenticationType = AuthType.Basic;
}
Добавить пользовательские заголовки (User-Agent: app/1.0, Accept: application/json) к каждому запросу, сделанному классом Client, не изменяя сигнатуры методов. моего существующего класса OwnCloud или декомпилированного класса Client.
Попытки:
мы рассматриваем возможность обертывания класса Client для добавления заголовков, но мы хотим знать, есть ли лучший способ централизовать управление заголовками без изменения существующих подписей.
Будем признательны за любые советы о том, как этого добиться!
Подробнее здесь: https://stackoverflow.com/questions/790 ... offer-ownc
Мобильная версия