From d15a204c62214bd6c68d0a8c3ec402b7856d5cdc Mon Sep 17 00:00:00 2001 From: v7lin Date: Sat, 31 Jul 2021 18:46:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/lib/main.dart | 2 + .../lib/model/weibo_api_resp.dart | 24 +- .../lib/model/weibo_api_resp.g.dart | 2 +- example/lib/weibo.dart | 52 ++++ example/pubspec.lock | 261 +++++++++++++++++- example/pubspec.yaml | 5 + lib/src/model/api/weibo_api_resp.dart | 21 -- lib/src/model/{sdk => }/weibo_auth_resp.dart | 2 +- .../model/{sdk => }/weibo_auth_resp.g.dart | 0 lib/src/model/{sdk => }/weibo_sdk_resp.dart | 0 lib/src/model/{sdk => }/weibo_sdk_resp.g.dart | 0 lib/src/weibo.dart | 49 +--- lib/weibo_kit.dart | 6 +- 13 files changed, 347 insertions(+), 77 deletions(-) rename lib/src/model/api/weibo_user_info_resp.dart => example/lib/model/weibo_api_resp.dart (75%) rename lib/src/model/api/weibo_user_info_resp.g.dart => example/lib/model/weibo_api_resp.g.dart (97%) create mode 100644 example/lib/weibo.dart delete mode 100644 lib/src/model/api/weibo_api_resp.dart rename lib/src/model/{sdk => }/weibo_auth_resp.dart (91%) rename lib/src/model/{sdk => }/weibo_auth_resp.g.dart (100%) rename lib/src/model/{sdk => }/weibo_sdk_resp.dart (100%) rename lib/src/model/{sdk => }/weibo_sdk_resp.g.dart (100%) diff --git a/example/lib/main.dart b/example/lib/main.dart index 603f4bd..99ced1a 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -6,6 +6,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:image/image.dart' as image; import 'package:weibo_kit/weibo_kit.dart'; +import 'package:weibo_kit_example/model/weibo_api_resp.dart'; +import 'package:weibo_kit_example/weibo.dart'; const String _WEIBO_APP_KEY = 'your weibo app key'; const String _WEIBO_UNIVERSAL_LINK = 'your weibo universal link'; diff --git a/lib/src/model/api/weibo_user_info_resp.dart b/example/lib/model/weibo_api_resp.dart similarity index 75% rename from lib/src/model/api/weibo_user_info_resp.dart rename to example/lib/model/weibo_api_resp.dart index 5c7881d..d456019 100644 --- a/lib/src/model/api/weibo_user_info_resp.dart +++ b/example/lib/model/weibo_api_resp.dart @@ -1,7 +1,26 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:weibo_kit/src/model/api/weibo_api_resp.dart'; -part 'weibo_user_info_resp.g.dart'; +part 'weibo_api_resp.g.dart'; + +abstract class WeiboApiResp { + const WeiboApiResp({ + required this.errorCode, + this.error, + this.request, + }); + + static const int ERROR_CODE_SUCCESS = 0; + + /// https://open.weibo.com/wiki/Help/error + @JsonKey( + defaultValue: ERROR_CODE_SUCCESS, + ) + final int errorCode; + final String? error; + final String? request; + + bool get isSuccessful => errorCode == ERROR_CODE_SUCCESS; +} @JsonSerializable( explicitToJson: true, @@ -63,3 +82,4 @@ class WeiboUserInfoResp extends WeiboApiResp { Map toJson() => _$WeiboUserInfoRespToJson(this); } + diff --git a/lib/src/model/api/weibo_user_info_resp.g.dart b/example/lib/model/weibo_api_resp.g.dart similarity index 97% rename from lib/src/model/api/weibo_user_info_resp.g.dart rename to example/lib/model/weibo_api_resp.g.dart index c0ed1bf..f5c2c58 100644 --- a/lib/src/model/api/weibo_user_info_resp.g.dart +++ b/example/lib/model/weibo_api_resp.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'weibo_user_info_resp.dart'; +part of 'weibo_api_resp.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/example/lib/weibo.dart b/example/lib/weibo.dart new file mode 100644 index 0000000..455055a --- /dev/null +++ b/example/lib/weibo.dart @@ -0,0 +1,52 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'package:weibo_kit/weibo_kit.dart'; +import 'package:weibo_kit_example/model/weibo_api_resp.dart'; + +extension ApiWeibo on Weibo { + + /// 用户信息 + Future getUserInfo({ + required String appkey, + required String userId, + required String accessToken, + }) { + final Map params = { + 'uid': userId, + }; + return HttpClient() + .getUrl(_encodeUrl('https://api.weibo.com/2/users/show.json', appkey, + accessToken, params)) + .then((HttpClientRequest request) { + return request.close(); + }).then((HttpClientResponse response) async { + if (response.statusCode == HttpStatus.ok) { + final String content = await utf8.decodeStream(response); + return WeiboUserInfoResp.fromJson( + json.decode(content) as Map); + } + throw HttpException( + 'HttpResponse statusCode: ${response.statusCode}, reasonPhrase: ${response.reasonPhrase}.'); + }); + } + + Uri _encodeUrl( + String baseUrl, + String appkey, + String accessToken, + Map params, + ) { + params['source'] = appkey; + params['access_token'] = accessToken; + final Uri baseUri = Uri.parse(baseUrl); + final Map> queryParametersAll = + Map>.of(baseUri.queryParametersAll); + for (final MapEntry entry in params.entries) { + queryParametersAll.remove(entry.key); + queryParametersAll.putIfAbsent(entry.key, () => [entry.value]); + } + return baseUri.replace(queryParameters: queryParametersAll); + } +} diff --git a/example/pubspec.lock b/example/pubspec.lock index 9984a34..68cc62b 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -1,6 +1,20 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.flutter-io.cn" + source: hosted + version: "22.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.7.1" archive: dependency: transitive description: @@ -8,6 +22,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" + args: + dependency: transitive + description: + name: args + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0" async: dependency: transitive description: @@ -22,6 +43,62 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.3" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.7" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.10" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.4" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.12.2" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.1.12" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.1.0" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.flutter-io.cn" + source: hosted + version: "8.1.1" characters: dependency: transitive description: @@ -36,6 +113,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.3" clock: dependency: transitive description: @@ -43,6 +134,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.7.0" collection: dependency: transitive description: @@ -50,6 +148,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.15.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" crypto: dependency: transitive description: @@ -64,6 +169,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.14" fake_async: dependency: transitive description: @@ -85,6 +197,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "6.1.0" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" flutter: dependency: "direct main" description: flutter @@ -102,6 +221,20 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" http: dependency: transitive description: @@ -109,6 +242,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.13.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" http_parser: dependency: transitive description: @@ -123,13 +263,41 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" - json_annotation: + io: dependency: transitive + description: + name: io + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.3" + js: + dependency: transitive + description: + name: js + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.6.3" + json_annotation: + dependency: "direct main" description: name: json_annotation url: "https://pub.flutter-io.cn" source: hosted version: "4.0.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.3" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" matcher: dependency: transitive description: @@ -144,6 +312,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.3.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" path: dependency: transitive description: @@ -214,6 +396,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.5.0" process: dependency: transitive description: @@ -221,6 +410,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "4.1.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" rxdart: dependency: transitive description: @@ -228,11 +431,32 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.26.0" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.9.10+4" source_span: dependency: transitive description: @@ -268,6 +492,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" string_scanner: dependency: transitive description: @@ -296,6 +527,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.3.0" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" typed_data: dependency: transitive description: @@ -317,6 +555,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" weibo_kit: dependency: "direct main" description: @@ -345,6 +597,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "5.0.2" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.0" sdks: dart: ">=2.12.0 <3.0.0" flutter: ">=1.24.0-10" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 91a5564..d7121a8 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -29,12 +29,17 @@ dependencies: image: ^3.0.1 flutter_cache_manager: ^3.0.0-nullsafety.1 + json_annotation: ^4.0.0 + dev_dependencies: flutter_test: sdk: flutter pedantic: + build_runner: + json_serializable: + # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/lib/src/model/api/weibo_api_resp.dart b/lib/src/model/api/weibo_api_resp.dart deleted file mode 100644 index f62b131..0000000 --- a/lib/src/model/api/weibo_api_resp.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -abstract class WeiboApiResp { - const WeiboApiResp({ - required this.errorCode, - this.error, - this.request, - }); - - static const int ERROR_CODE_SUCCESS = 0; - - /// https://open.weibo.com/wiki/Help/error - @JsonKey( - defaultValue: ERROR_CODE_SUCCESS, - ) - final int errorCode; - final String? error; - final String? request; - - bool get isSuccessful => errorCode == ERROR_CODE_SUCCESS; -} diff --git a/lib/src/model/sdk/weibo_auth_resp.dart b/lib/src/model/weibo_auth_resp.dart similarity index 91% rename from lib/src/model/sdk/weibo_auth_resp.dart rename to lib/src/model/weibo_auth_resp.dart index b1e1176..a907a11 100644 --- a/lib/src/model/sdk/weibo_auth_resp.dart +++ b/lib/src/model/weibo_auth_resp.dart @@ -1,5 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:weibo_kit/src/model/sdk/weibo_sdk_resp.dart'; +import 'package:weibo_kit/src/model/weibo_sdk_resp.dart'; part 'weibo_auth_resp.g.dart'; diff --git a/lib/src/model/sdk/weibo_auth_resp.g.dart b/lib/src/model/weibo_auth_resp.g.dart similarity index 100% rename from lib/src/model/sdk/weibo_auth_resp.g.dart rename to lib/src/model/weibo_auth_resp.g.dart diff --git a/lib/src/model/sdk/weibo_sdk_resp.dart b/lib/src/model/weibo_sdk_resp.dart similarity index 100% rename from lib/src/model/sdk/weibo_sdk_resp.dart rename to lib/src/model/weibo_sdk_resp.dart diff --git a/lib/src/model/sdk/weibo_sdk_resp.g.dart b/lib/src/model/weibo_sdk_resp.g.dart similarity index 100% rename from lib/src/model/sdk/weibo_sdk_resp.g.dart rename to lib/src/model/weibo_sdk_resp.g.dart diff --git a/lib/src/weibo.dart b/lib/src/weibo.dart index fbf1d65..c1bcd87 100644 --- a/lib/src/weibo.dart +++ b/lib/src/weibo.dart @@ -1,12 +1,10 @@ import 'dart:async'; -import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/services.dart'; -import 'package:weibo_kit/src/model/api/weibo_user_info_resp.dart'; -import 'package:weibo_kit/src/model/sdk/weibo_auth_resp.dart'; -import 'package:weibo_kit/src/model/sdk/weibo_sdk_resp.dart'; +import 'package:weibo_kit/src/model/weibo_auth_resp.dart'; +import 'package:weibo_kit/src/model/weibo_sdk_resp.dart'; class Weibo { /// @@ -115,49 +113,6 @@ class Weibo { ); } - /// 用户信息 - Future getUserInfo({ - required String appkey, - required String userId, - required String accessToken, - }) { - final Map params = { - 'uid': userId, - }; - return HttpClient() - .getUrl(_encodeUrl('https://api.weibo.com/2/users/show.json', appkey, - accessToken, params)) - .then((HttpClientRequest request) { - return request.close(); - }).then((HttpClientResponse response) async { - if (response.statusCode == HttpStatus.ok) { - final String content = await utf8.decodeStream(response); - return WeiboUserInfoResp.fromJson( - json.decode(content) as Map); - } - throw HttpException( - 'HttpResponse statusCode: ${response.statusCode}, reasonPhrase: ${response.reasonPhrase}.'); - }); - } - - Uri _encodeUrl( - String baseUrl, - String appkey, - String accessToken, - Map params, - ) { - params['source'] = appkey; - params['access_token'] = accessToken; - final Uri baseUri = Uri.parse(baseUrl); - final Map> queryParametersAll = - Map>.of(baseUri.queryParametersAll); - for (final MapEntry entry in params.entries) { - queryParametersAll.remove(entry.key); - queryParametersAll.putIfAbsent(entry.key, () => [entry.value]); - } - return baseUri.replace(queryParameters: queryParametersAll); - } - /// 分享 - 文本 Future shareText({ required String text, diff --git a/lib/weibo_kit.dart b/lib/weibo_kit.dart index 832c008..b0aae97 100644 --- a/lib/weibo_kit.dart +++ b/lib/weibo_kit.dart @@ -1,8 +1,6 @@ library weibo_kit; -export 'src/model/api/weibo_api_resp.dart'; -export 'src/model/api/weibo_user_info_resp.dart'; -export 'src/model/sdk/weibo_auth_resp.dart'; -export 'src/model/sdk/weibo_sdk_resp.dart'; +export 'src/model/weibo_auth_resp.dart'; +export 'src/model/weibo_sdk_resp.dart'; export 'src/weibo.dart'; export 'src/weibo_constant.dart';