initial
This commit is contained in:
64
lib/appflow/controller/network/wordpress.dart
Normal file
64
lib/appflow/controller/network/wordpress.dart
Normal file
@@ -0,0 +1,64 @@
|
||||
import 'dart:convert';
|
||||
import 'package:hiddingsel_app/appflow/model/represented_organisations.dart';
|
||||
|
||||
import '../../../services/network.dart';
|
||||
import '../../model/articles.dart';
|
||||
import 'package:http/http.dart';
|
||||
|
||||
class WordpressController {
|
||||
|
||||
static const String _baseUrl = 'www.hiddingsel.de';
|
||||
static const String _path = 'wp-json/wp/v2/posts';
|
||||
static const String _parameterPage = 'page';
|
||||
static const String _parameterPerPage = 'per_page';
|
||||
static const String _parameterSearch = 'search';
|
||||
static const String _parameterCategories = 'categories';
|
||||
static const String _parameterEmbed = '_embed';
|
||||
static const int _httpCodeKeineWeiterenArticel = 400;
|
||||
|
||||
static Future<List<ArticleModel>> getArticles(int page, int itemCount) =>
|
||||
BaseService.getSaveFromServer(
|
||||
() => _getArticles(page, itemCount),
|
||||
List<ArticleModel>.empty()
|
||||
);
|
||||
|
||||
static Future<List<ArticleModel>> searchArticles(int page, int itemCount, String searchWord) =>
|
||||
BaseService.getSaveFromServer(
|
||||
() => _getArticles(page, itemCount, searchWord: searchWord),
|
||||
List<ArticleModel>.empty()
|
||||
);
|
||||
|
||||
static Future<List<ArticleModel>> getArticlesFromOrganisations(int page, int itemCount, List<RepresentedOrganisationModel> organisations) =>
|
||||
BaseService.getSaveFromServer(
|
||||
() => _getArticles(page, itemCount, organisations: organisations),
|
||||
List<ArticleModel>.empty()
|
||||
);
|
||||
|
||||
static Future<List<ArticleModel>> _getArticles(int page, int itemCount, {String? searchWord, List<RepresentedOrganisationModel>? organisations}) async {
|
||||
|
||||
final parameters = <String, dynamic> {
|
||||
_parameterPage: (page + 1).toString(),
|
||||
_parameterPerPage: itemCount.toString(),
|
||||
_parameterSearch: searchWord,
|
||||
_parameterCategories: organisations?.map((e) => e.wordpressId).join(','),
|
||||
_parameterEmbed: null,
|
||||
};
|
||||
|
||||
if(searchWord?.isEmpty ?? true) {
|
||||
parameters.remove(_parameterSearch);
|
||||
}
|
||||
if(organisations?.isEmpty ?? true) {
|
||||
parameters.remove(_parameterCategories);
|
||||
}
|
||||
|
||||
final uri = Uri.https(_baseUrl, _path, parameters);
|
||||
final response = await get(uri);
|
||||
|
||||
if (response.statusCode == _httpCodeKeineWeiterenArticel) {
|
||||
return [];
|
||||
}
|
||||
|
||||
final jsonData = json.decode(response.body);
|
||||
return jsonData.map((article) => ArticleModel.fromWordpressJson(article)).cast<ArticleModel>().toList();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user