|
@@ -1,3 +1,7 @@
|
|
|
|
|
+import 'dart:async';
|
|
|
|
|
+import 'dart:typed_data';
|
|
|
|
|
+
|
|
|
|
|
+import 'package:common_pub/model/game_map.dart';
|
|
|
import 'package:get/get.dart';
|
|
import 'package:get/get.dart';
|
|
|
import 'package:grpc/grpc.dart';
|
|
import 'package:grpc/grpc.dart';
|
|
|
import '../logger.dart';
|
|
import '../logger.dart';
|
|
@@ -121,5 +125,49 @@ class ApiService extends GetxService{
|
|
|
info('getSmsSendLeftTime: $phone - ${r.second}s');
|
|
info('getSmsSendLeftTime: $phone - ${r.second}s');
|
|
|
return r.second.seconds;
|
|
return r.second.seconds;
|
|
|
}
|
|
}
|
|
|
|
|
+ Future<BinReader> getBinReaderByMd5(Uint8List md5) async {
|
|
|
|
|
+ final stream = stub.toGetBinaryByMd5(pb.ToGetBinaryByMd5Request()..md5=md5);
|
|
|
|
|
+ final controller = StreamController<List<int>>();
|
|
|
|
|
+ controller.onCancel = (){
|
|
|
|
|
+ stream.cancel();
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ Future<void> rcv()async{
|
|
|
|
|
+ try{
|
|
|
|
|
+ await for(final one in stream){
|
|
|
|
|
+ controller.add(one.data);
|
|
|
|
|
+ }
|
|
|
|
|
+ }finally{
|
|
|
|
|
+ controller.close();
|
|
|
|
|
+ stream.cancel();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ rcv();
|
|
|
|
|
+ stream.headers.then((value) => debug(value));
|
|
|
|
|
+ final headers = await stream.headers;
|
|
|
|
|
+ final lenStr = headers['all-length']!;
|
|
|
|
|
+ final length = int.parse(lenStr);
|
|
|
|
|
+ final nonce = headers['nonce']!;
|
|
|
|
|
+ final ext = headers['ext']!;
|
|
|
|
|
+
|
|
|
|
|
+ return BinReader(
|
|
|
|
|
+ data: controller.stream,
|
|
|
|
|
+ length: length,
|
|
|
|
|
+ ext: ext,
|
|
|
|
|
+ nonce: nonce
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
+extension NetImageExt on pb.NetImage{
|
|
|
|
|
+ GameMap toGameMap(){
|
|
|
|
|
+ final md5Data = Uint8List.fromList(md5);
|
|
|
|
|
+
|
|
|
|
|
+ return GameMap()
|
|
|
|
|
+ ..url = url
|
|
|
|
|
+ ..md5 = md5Data
|
|
|
|
|
+ ..readerBuilder = ()=> ApiService.to.getBinReaderByMd5(md5Data);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|