Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Переиспользование IssRequest #4

Closed
Kataane opened this issue Jul 22, 2022 · 1 comment
Closed

Переиспользование IssRequest #4

Kataane opened this issue Jul 22, 2022 · 1 comment

Comments

@Kataane
Copy link
Owner

Kataane commented Jul 22, 2022

Так как, IssRequestExtension является статическим методом расширения, с целью переиспользования IssRequest, чтобы использовать одну реализацию метода во всем проекте. Иногда необходимо очищать или обновлять данные в Queries, Paths.

Обновление пути необходимо в случаях когда запросы похожи, но имеют небольшие изменения: "engines/stock/markets/bonds/securities" и "engines/offboard/markets/bonds/securities". Можно обновить в Paths путь и пересобрать весь путь снова в ConstructUrl или заменить в итоговом пути необходимые строки, оптимальное решение пока не найдено, но смотрю в сторону StringBuilder.

Очищать путь необходимо для совершенно разных путей, так как IssRequest переиспользуется. Самый простой путь через IDisposable в IssRequest. Очищая в методе public void Dispose() Queries, Paths. Но это не самый оптимальный путь. Как и хранение динамических данных в List и Dictionary.

Необходимо найти оптимальное решения для замены строки, хранения динамических данных и их очищение.

@Kataane
Copy link
Owner Author

Kataane commented Apr 2, 2023

На данный момент реализован следующий механизм переиспользования. Для IssRequest добавлен Dispose и опции для настройки поведения очищения.

Что позволяет сделать следующее:

Инициализируем IssRequest.

IssRequestOptions IssRequestOptions = new()
{
    CleanBehaviorForPaths = CleanBehavior.RevertSnapshotState,
    CleanBehaviorForQueries = CleanBehavior.RevertSnapshotState
};

var request = new IssRequest(IssRequestOptions);
request.AddPath("path1");
request.AddPath("path2");
request.AddQuery("lang", "en");
request.TakeSnapshot();

Переиспользуем иницализированный request

using var newRequest = request;

После использования newRequest request вернется в состояние до снапшота. Такое поведение пригодится для запросов которые требуют подстановку значения, например следующий: iss/engines/[engine]/markets/[market]/securities/[security]

@Kataane Kataane closed this as completed Apr 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant