Skip to content
Snippets Groups Projects
Commit 8ad96389 authored by xuty's avatar xuty
Browse files

init2

parent 2a09fe0a
Branches
Tags
No related merge requests found
......@@ -11,6 +11,12 @@ void main() async {
final result = '''
import 'package:xml/xml.dart';
XmlElement getProp(XmlElement xml, String name) {
final result = xml.findElements(name);
return result.isNotEmpty ? result.first : null;
}
${models.join('\n')}
''';
......@@ -58,23 +64,23 @@ Future<String> getModel(String url) async {
switch (field.type.name) {
case 'String':
buffer.writeln(
" ${field.dartName} = xml.findElements('${field.name}').first.text;");
" ${field.dartName} = getProp(xml, '${field.name}')?.text;");
break;
case 'int':
buffer.writeln(
" ${field.dartName} = int.parse(xml.findElements('${field.name}').first.text);");
" ${field.dartName} = int.tryParse(getProp(xml, '${field.name}')?.text);");
break;
case 'bool':
buffer.writeln(
" ${field.dartName} = xml.findElements('${field.name}').first.text == 'TRUE';");
" ${field.dartName} = getProp(xml, '${field.name}')?.text == 'TRUE';");
break;
case 'DateTime':
buffer.writeln(
" ${field.dartName} = DateTime.parse(xml.findElements('${field.name}').first.text);");
" ${field.dartName} = DateTime.parse(getProp(xml, '${field.name}')?.text);");
break;
default:
buffer.writeln(
" ${field.dartName} = ${field.type.name}.fromXml(xml.findElements('${field.name}').first);");
" ${field.dartName} = ${field.type.name}.fromXml(getProp(xml, '${field.name}'));");
}
}
buffer.writeln(' }');
......
This diff is collapsed.
import 'package:http/http.dart';
import 'package:minio/models.dart';
import 'package:minio/src/minio_errors.dart';
import 'package:minio/src/minio_helpers.dart';
import 'package:minio/src/minio_s3.dart';
import 'package:minio/src/minio_sign.dart';
import 'package:xml/xml.dart' as xml;
class MinioRequest extends Request {
MinioRequest(String method, Uri url) : super(method, url);
......@@ -144,13 +146,23 @@ class Minio {
Future<String> getBucketRegion(String bucket) async {
MinioInvalidBucketNameError.check(bucket);
if (region != null) return region;
final resp = await _client.request(
method: 'GET',
bucket: bucket,
region: 'us-east-1',
query: {'location': null},
);
validate(resp);
return resp.body;
}
}
void validate(Response response) {
if (response.statusCode >= 400) {
final body = xml.parse(response.body);
final error = Error.fromXml(body.rootElement);
throw MinioS3Error(error.message, error, response);
}
}
import 'package:http/http.dart';
import 'package:minio/models.dart';
import 'package:minio/src/minio_helpers.dart';
class MinioError {
......@@ -74,7 +75,8 @@ class MinioInvalidXMLError extends MinioError {
}
class MinioS3Error extends MinioError {
MinioS3Error(String message) : super(message);
MinioS3Error(String message, [this.error, this.response]) : super(message);
Error error;
Response response;
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment