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

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

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

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

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

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

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

}