import 'dart:convert';
import 'dart:io';

import 'package:http/http.dart' as http;
import 'package:http/http.dart';

import '../../../model/accountData.dart';
import '../../../model/endpointData.dart';
import 'autocompleteResponse.dart';

class AutocompleteApi {
  Future<AutocompleteResponse> find(String query) async {
    Map<String, dynamic> getParameters = {
      "search": query,
      "itemType": " ",
      "itemId": " ",
      "shareTypes[]": ["0"],
      "limit": "10",
    };

    Map<String, String> headers = {};
    headers.putIfAbsent("Accept", () => "application/json");
    headers.putIfAbsent("OCS-APIRequest", () => "true");

    Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@${EndpointData().nextcloud().domain}", "${EndpointData().nextcloud().path}/ocs/v2.php/core/autocomplete/get", getParameters);

    Response response = await http.get(endpoint, headers: headers);
    if(response.statusCode != HttpStatus.ok) throw Exception("Api call failed with ${response.statusCode}: ${response.body}");
    String result = response.body;
    return AutocompleteResponse.fromJson(jsonDecode(result)['ocs']);
  }

}