import 'dart:convert'; import '../../model/account_data.dart'; import '../../model/endpoint_data.dart'; /// Shared headers and URI builder for Nextcloud OCS v2 endpoints. Used by /// TalkApi, AutocompleteApi, FileSharingApi. class NextcloudOcs { NextcloudOcs._(); /// Decodes an OCS v2 JSON envelope and returns its `ocs` object (the wrapper /// every response nests its `meta`/`data` under). static Map decode(String raw) => (jsonDecode(raw) as Map)['ocs'] as Map; static Map headers() => { 'Accept': 'application/json', 'OCS-APIRequest': 'true', 'Authorization': AccountData().getBasicAuthHeader(), }; static Uri uri(String pathSuffix, {Map? queryParameters}) { final endpoint = EndpointData().nextcloud(); return Uri.https( endpoint.domain, '${endpoint.path}/ocs/v2.php/$pathSuffix', queryParameters?.map((key, value) => MapEntry(key, value.toString())), ); } }