refactoring

This commit is contained in:
Fabian Freund
2025-02-20 12:27:34 +01:00
parent b81fc1cc42
commit 490e13000b
138 changed files with 1392 additions and 3251 deletions
@@ -0,0 +1,38 @@
import 'dart:convert';
import 'package:exceptions/exceptions.dart';
import 'package:http/http.dart' as http;
import 'package:lensai/core/http_error_handler.dart';
import 'package:lensai/features/search/domain/entities/abstract/i_search_suggestion_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'kagi.g.dart';
@Riverpod(keepAlive: true)
class KagiAutosuggestService extends _$KagiAutosuggestService
implements ISearchSuggestionProvider {
static final _baseUrl = Uri.https('kagi.com', 'api/autosuggest');
late http.Client _client;
@override
void build() {
_client = http.Client();
}
@override
Future<Result<List<String>>> getSuggestions(String query) async {
return Result.fromAsync(() async {
final response = await _client
.get(_baseUrl.replace(queryParameters: {'q': query}))
.timeout(const Duration(seconds: 5));
final results = jsonDecode(utf8.decode(response.bodyBytes)) as List;
return switch (results.last) {
final String result => [result],
final List resultList => resultList.cast(),
_ => [],
};
}, exceptionHandler: handleHttpError);
}
}
@@ -0,0 +1,27 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'kagi.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$kagiAutosuggestServiceHash() =>
r'e1cb4ef730bcf5c4bf4c77617bb12a22228af576';
/// See also [KagiAutosuggestService].
@ProviderFor(KagiAutosuggestService)
final kagiAutosuggestServiceProvider =
NotifierProvider<KagiAutosuggestService, void>.internal(
KagiAutosuggestService.new,
name: r'kagiAutosuggestServiceProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$kagiAutosuggestServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$KagiAutosuggestService = Notifier<void>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package