From d67f683083c8946979c58416becbb6870b1792c2 Mon Sep 17 00:00:00 2001 From: FrankH <4848285@qq.com> Date: Fri, 1 Nov 2019 19:33:16 +0800 Subject: [PATCH 1/4] release 2.2.403 --- README.md | 8 +- Weixin.sln | 9 - samples/Demo/Applications/IWeixinEventSink.cs | 23 -- samples/Demo/Applications/WeixinEventSink.cs | 312 ------------------ samples/Demo/Controllers/HomeController.cs | 103 ------ samples/Demo/Controllers/JssdkController.cs | 49 --- samples/Demo/Controllers/QrcodeController.cs | 49 --- .../WeixinAccessTokenController.cs | 27 -- .../Demo/Controllers/WeixinMenuController.cs | 66 ---- samples/Demo/Core/Entities/Entity.cs | 118 ------- samples/Demo/Core/Entities/IEntity.cs | 34 -- samples/Demo/Core/Entities/ShortGuid.cs | 283 ---------------- .../Core/ViewModels/ReturnableViewModel.cs | 25 -- .../Demo/Core/ViewModels/SearchViewModel.cs | 35 -- .../Demo/Data/Identity/IdentityDbContext.cs | 19 -- .../Data/Identity/IdentityDbInitializer.cs | 61 ---- .../Demo/Data/WebHostDatabaseExtensions.cs | 66 ---- samples/Demo/Data/Weixin/WeixinDbContext.cs | 22 -- samples/Demo/Demo.csproj | 49 --- samples/Demo/Entities/Identity/AppUser.cs | 12 - .../Demo/Entities/Identity/AppUserManager.cs | 93 ------ .../Entities/Weixin/ReceivedTextMessage.cs | 15 - .../Demo/Entities/Weixin/WeixinSubscriber.cs | 15 - .../AbsoluteActionUrlHelperExtensions.cs | 75 ----- .../20171228051742_Initial.Designer.cs | 245 -------------- .../Demo/Migrations/20171228051742_Initial.cs | 236 ------------- ...20190320025437_CleanIdentityDb.Designer.cs | 225 ------------- .../20190320025437_CleanIdentityDb.cs | 32 -- .../Migrations/AppDbContextModelSnapshot.cs | 223 ------------- ...320025259_AddWeixinSubscribers.Designer.cs | 59 ---- .../20190320025259_AddWeixinSubscribers.cs | 50 --- .../WeixinDb/WeixinDbContextModelSnapshot.cs | 57 ---- samples/Demo/Models/Home/IndexViewModel.cs | 13 - .../Demo/Models/Home/SendWeixinViewModel.cs | 19 -- .../Demo/Models/Weixin/JweixinViewModel.cs | 13 - .../Models/Weixin/ShareJweixinViewModel.cs | 15 - .../Demo/Models/Weixin/WeixinJsonViewModel.cs | 19 -- samples/Demo/Program.cs | 60 ---- samples/Demo/Properties/launchSettings.json | 26 -- samples/Demo/Startup.cs | 165 --------- samples/Demo/Views/Home/About.cshtml | 12 - samples/Demo/Views/Home/Index.cshtml | 26 -- samples/Demo/Views/Home/ReceivedText.cshtml | 45 --- samples/Demo/Views/Home/SendWeixin.cshtml | 26 -- samples/Demo/Views/Home/Subscribers.cshtml | 53 --- samples/Demo/Views/Jssdk/Index.cshtml | 46 --- samples/Demo/Views/Shared/Error.cshtml | 14 - samples/Demo/Views/Shared/_Layout.cshtml | 48 --- .../Demo/Views/Shared/_LayoutJweixin.cshtml | 49 --- .../Demo/Views/Shared/_LoginPartial.cshtml | 23 -- samples/Demo/Views/WeixinMenu/Index.cshtml | 57 ---- .../Views/WeixinMenu/UpdateMenuResult.cshtml | 9 - samples/Demo/Views/_ViewImports.cshtml | 6 - samples/Demo/Views/_ViewStart.cshtml | 3 - samples/Demo/appsettings.json | 41 --- samples/Demo/bundleconfig.json | 24 -- samples/Demo/libman.json | 51 --- samples/Demo/web.config | 14 - .../wwwroot/MP_verify_MQuINXpToN5ZYtjc.txt | 1 - samples/Demo/wwwroot/css/site.css | 43 --- samples/Demo/wwwroot/img/mp-test.jpg | Bin 22708 -> 0 bytes samples/Demo/wwwroot/js/site.js | 5 - samples/Demo/wxdemo.sqlite | Bin 118784 -> 0 bytes samples/db-schema-update-20190320.sql | 87 ----- samples/wxdemo.sqlite | Bin 118784 -> 0 bytes .../AspNetCore.Weixin.Jssdk.csproj | 23 -- .../Builder/WeixinJssdkOptions.cs | 2 +- .../WeixinJssdkServiceCollectionExtensions.cs | 2 +- src/Weixin.Jssdk/CardApi/CardEx.cs | 2 +- .../CardApiTicket/CardApiTicketApi.cs | 4 +- .../CardApiTicket/CardApiTicketJson.cs | 4 +- .../JsapiTicket/IWeixinJsapiTicket.cs | 2 +- .../JsapiTicket/JsapiTicketApi.cs | 4 +- .../JsapiTicket/JsapiTicketJson.cs | 4 +- .../MemoryCachedWeixinJsapiTicket.cs | 2 +- .../JsapiTicket/WeixinJsapiTicketError.cs | 2 +- .../JsapiTicket/WeixinJsapiTicketException.cs | 2 +- .../Myvas.AspNetCore.Weixin.Jssdk.csproj | 12 +- .../Signature/WeixinCardApiSignatureHelper.cs | 2 +- .../Signature/WeixinJssdkSignatureHelper.cs | 2 +- src/Weixin.Jssdk/WeixinJsConfig.cs | 2 +- src/Weixin/AccessToken/AccessTokenApi.cs | 2 +- src/Weixin/AccessToken/AccessTokenJson.cs | 2 +- src/Weixin/AccessToken/IWeixinAccessToken.cs | 2 +- .../MemoryCachedWeixinAccessToken.cs | 2 +- .../AccessToken/WeixinAccessTokenError.cs | 2 +- .../AccessToken/WeixinAccessTokenException.cs | 2 +- .../AccessToken/WeixinAccessTokenOptions.cs | 2 +- ...nAccessTokenServiceCollectionExtensions.cs | 2 +- src/Weixin/Apis/CustomerSupport/Custom.cs | 2 +- src/Weixin/Apis/GroupMessage/GroupMessage.cs | 2 +- .../Apis/GroupMessage/Models/NewsModel.cs | 2 +- .../Apis/GroupMessage/Models/SendResult.cs | 2 +- src/Weixin/Apis/Media/MediaApi.cs | 2 +- src/Weixin/Apis/Media/MediaApiHelper.cs | 2 +- .../Media/Models/BatchGetMaterialsJson.cs | 2 +- .../Apis/Media/Models/MaterialCountJson.cs | 2 +- src/Weixin/Apis/Media/Models/MaterialType.cs | 2 +- src/Weixin/Apis/Media/Models/MediaType.cs | 2 +- .../Media/Models/MediaUploadResultJson.cs | 2 +- .../Apis/Media/Models/UploadMediaType.cs | 2 +- src/Weixin/Apis/Media/WeixinApiHelper.cs | 2 +- src/Weixin/Apis/Menu/MenuApi.cs | 4 +- .../Apis/Menu/Models/AbstractMenuButton.cs | 2 +- src/Weixin/Apis/Menu/Models/ButtonGroup.cs | 2 +- .../Apis/Menu/Models/ClickMenuButton.cs | 2 +- src/Weixin/Apis/Menu/Models/GetMenuResult.cs | 2 +- .../Apis/Menu/Models/GetMenuResultJson.cs | 2 +- src/Weixin/Apis/Menu/Models/MenuButton.cs | 2 +- src/Weixin/Apis/Menu/Models/SubMenuButton.cs | 2 +- src/Weixin/Apis/Menu/Models/ViewMenuButton.cs | 2 +- .../Apis/Menu/Models/WeixinMenuResponse.cs | 2 +- .../Apis/QrCode/Models/CreateQrCodeResult.cs | 2 +- src/Weixin/Apis/QrCode/QrCode.cs | 6 +- src/Weixin/Apis/User/Models/UserGetJson.cs | 2 +- src/Weixin/Apis/User/Models/UserInfoJson.cs | 2 +- src/Weixin/Apis/User/Models/WeixinLanguage.cs | 2 +- src/Weixin/Apis/User/UserApi.cs | 2 +- src/Weixin/Apis/UserGroup/Groups.cs | 2 +- .../UserGroup/Models/CreateGroupResult.cs | 2 +- .../Apis/UserGroup/Models/GetGroupIdResult.cs | 2 +- .../Apis/UserGroup/Models/GroupsJson.cs | 2 +- src/Weixin/Apis/Wifi/Models/Ad.cs | 2 +- src/Weixin/Apis/Wifi/Models/AdDetail.cs | 2 +- .../Apis/Wifi/Models/AdDetail_Template1.cs | 2 +- .../Apis/Wifi/Models/AdDetail_Template2.cs | 2 +- src/Weixin/Apis/Wifi/Models/ApInfo.cs | 2 +- src/Weixin/Apis/Wifi/Models/ApOnlineData.cs | 2 +- src/Weixin/Apis/Wifi/Models/DailyStat.cs | 2 +- .../Wifi/Models/GetApplyShopResultJson.cs | 2 +- .../Wifi/Models/GetAuditStatusResultJson.cs | 2 +- .../Wifi/Models/GetPublishedAdResultJson.cs | 2 +- src/Weixin/Apis/Wifi/Models/GetQrcodeParam.cs | 2 +- .../Apis/Wifi/Models/GetQrcodeResultJson.cs | 2 +- .../Wifi/Models/GetWhiteListResultJson.cs | 2 +- src/Weixin/Apis/Wifi/Models/IconAd.cs | 2 +- src/Weixin/Apis/Wifi/Models/IconAd1.cs | 2 +- src/Weixin/Apis/Wifi/Models/IconAd2.cs | 2 +- .../Wifi/Models/NoticeWeixinInfoAction.cs | 2 +- .../Apis/Wifi/Models/SetAdResultJson.cs | 2 +- src/Weixin/Apis/Wifi/Models/SetApInfoParam.cs | 2 +- .../Apis/Wifi/Models/SetApResultJson.cs | 2 +- src/Weixin/Apis/Wifi/Models/ShopApplyForm.cs | 2 +- src/Weixin/Apis/Wifi/Models/WifiErrorJson.cs | 2 +- src/Weixin/Apis/Wifi/WifiApi.cs | 2 +- src/Weixin/Basic/Base/BaseApi.cs | 2 +- src/Weixin/Basic/Base/MessageSend.cs | 2 +- .../Basic/Base/RequestMessageFactory.cs | 2 +- .../Basic/Base/ResponseMessageFactory.cs | 2 +- src/Weixin/Basic/Context/MessageContext.cs | 2 +- .../Basic/Context/MessageQueueCollection.cs | 2 +- src/Weixin/Basic/Context/WeixinContext.cs | 2 +- .../Basic/Context/WeixinContextEventArgs.cs | 2 +- .../Basic/Context/WeixinMessageCollection.cs | 2 +- .../Entities/BaiduMap/BaiduMapMarkers.cs | 2 +- .../Entities/GoogleMap/GoogleMapMarkers.cs | 2 +- .../JsonResult/OAuthAccessTokenResult.cs | 2 +- .../Entities/JsonResult/UploadMediaResult.cs | 2 +- .../Entities/JsonResult/UserInfoResult.cs | 2 +- .../Basic/Entities/Message/MessageBase.cs | 2 +- .../Entities/Message/MessageCategorycs.cs | 2 +- .../Entities/Message/RequestMessageBase.cs | 2 +- .../Message/RequestMessageEventBase.cs | 2 +- .../Entities/Message/RequestMessageEvents.cs | 2 +- .../Basic/Entities/Message/RequestMessages.cs | 2 +- .../Entities/Message/ResponseMessageBase.cs | 2 +- .../Entities/Message/ResponseMessages.cs | 2 +- .../Basic/Events/Context/BaseContext.cs | 2 +- .../Basic/Events/Context/BaseWeixinContext.cs | 2 +- .../Events/Context/WeixinReceivedContext.cs | 2 +- .../EventArgs/EventReceivedEventArgs.cs | 2 +- .../Events/ClickMenuEventReceivedEventArgs.cs | 2 +- .../Events/EnterEventReceivedEventArgs.cs | 2 +- .../Events/LocationEventReceivedEventArgs.cs | 2 +- .../Events/QrscanEventReceivedEventArgs.cs | 2 +- .../Events/SubscribeEventReceivedEventArgs.cs | 2 +- .../UnsubscribeEventReceivedEventArgs.cs | 2 +- .../Events/ViewMenuEventReceivedEventArgs.cs | 2 +- .../EventArgs/MessageReceivedEventArgs.cs | 2 +- .../Messages/ImageMessageReceivedEventArgs.cs | 2 +- .../Messages/LinkMessageReceivedEventArgs.cs | 2 +- .../LocationMessageReceivedEventArgs.cs | 2 +- .../ShortVideoMessageReceivedEventArgs.cs | 2 +- .../Messages/TextMessageReceivedEventArgs.cs | 2 +- .../Messages/VideoMessageReceivedEventArgs.cs | 2 +- .../Messages/VoiceMessageReceivedEventArgs.cs | 2 +- .../Events/EventArgs/ReceivedEventArgs.cs | 2 +- .../EventArgs/_Types/ReceivedEventType.cs | 2 +- .../EventArgs/_Types/ReceivedMsgType.cs | 2 +- .../Basic/Events/WeixinMessageEvents.cs | 4 +- .../Exceptions/WeixinErrorResultException.cs | 2 +- .../Basic/Exceptions/WeixinMenuException.cs | 2 +- .../WeixinUnknownRequestMsgTypeException.cs | 2 +- src/Weixin/Basic/Models/CustomizedTypes.cs | 2 +- src/Weixin/Basic/TaskCache.cs | 2 +- src/Weixin/Builder/WeixinBuilder.cs | 2 +- src/Weixin/Builder/WeixinOptions.cs | 2 +- .../WeixinServiceCollectionExtensions.cs | 2 +- src/Weixin/Config.cs | 2 +- src/Weixin/Constants/WeixinApiServers.cs | 2 +- src/Weixin/Exceptions/WeiXinException.cs | 2 +- .../Extensions/Dictionary.GetQueryString.cs | 4 +- ...geEventBase.ConvertToRequestMessageText.cs | 4 +- .../Extras/Extensions/MessageBase.Xml.cs | 4 +- .../NameValueCollection.GetValue_T.cs | 4 +- .../Extras/Extensions/Object.ToNewtonJson.cs | 4 +- .../Extras/Extensions/String.FormatWith.cs | 4 +- .../Extensions/String.UrlEncodeAndDecode.cs | 4 +- ...ebHeaderCollection.GetFileExtensionName.cs | 4 +- src/Weixin/Extras/Helpers/BaiduMapHelper.cs | 2 +- src/Weixin/Extras/Helpers/EventHelper.cs | 2 +- src/Weixin/Extras/Helpers/FileStreamHelper.cs | 2 +- src/Weixin/Extras/Helpers/GetWeixinResult.cs | 2 +- src/Weixin/Extras/Helpers/GoogleMapHelper.cs | 2 +- src/Weixin/Extras/Helpers/GpsHelper.cs | 2 +- src/Weixin/Extras/Helpers/MsgTypeHelper.cs | 2 +- src/Weixin/Helpers/FileHelper.cs | 2 +- src/Weixin/Helpers/HttpUtility.cs | 2 +- src/Weixin/Helpers/WeixinJsonHelper.cs | 2 +- src/Weixin/Helpers/WeixinTimestampHelper.cs | 2 +- src/Weixin/Helpers/WeixinXmlConvert.cs | 2 +- src/Weixin/Models/WeixinErrorJson.cs | 2 +- src/Weixin/Models/WeixinJson.cs | 2 +- src/Weixin/Models/WeixinResponseStatus.cs | 2 +- src/Weixin/Myvas.AspNetCore.Weixin.csproj | 44 +-- src/Weixin/Signature/SignatureHelper.cs | 2 +- src/Weixin/Signature/WeixinClientValidator.cs | 2 +- src/Weixin/WeixinAccessTicket.cs | 2 +- src/Weixin/WeixinContentResult.cs | 2 +- .../MessageHandler/EventHandlerExtensions.cs | 2 +- .../MessageHandler/IMessageHandler.cs | 2 +- .../MessageHandler/IMessageHandlerDocument.cs | 2 +- .../WelcomePage/MessageHandler/Message.cs | 2 +- .../MessageHandler/MessageTypeUtility.cs | 2 +- .../WeixinMessageHandleResult.cs | 2 +- .../MessageHandler/WeixinMessageHandler.cs | 2 +- .../IWeixinMessageEncryptor.cs | 2 +- .../Internal/CryptographyHelper.cs | 2 +- .../WeixinMessageCryptographicException.cs | 2 +- .../WeixinMessageEncodingTypes.cs | 4 +- .../WeixinMessageEncryptor.cs | 2 +- .../WeixinMessageEncryptorError.cs | 2 +- .../WeixinMessageEncryptorErrorCode.cs | 2 +- ...geProtectionServiceCollectionExtensions.cs | 2 +- ...WelcomePageApplicationBuilderExtensions.cs | 2 +- .../WeixinWelcomePageMiddleware.cs | 2 +- .../WelcomePage/WeixinWelcomePageOptions.cs | 4 +- .../WeixinWelcomePageOptionsDefaults.cs | 2 +- ...nWelcomePageServiceCollectionExtensions.cs | 2 +- test/WeixinMessageEncryptor_Decrypt_Tests.cs | 2 +- test/WeixinXmlConvert_Deserialize_Tests.cs | 2 +- test/WeixinXmlConvert_Serialize_Tests.cs | 2 +- 252 files changed, 231 insertions(+), 3960 deletions(-) delete mode 100644 samples/Demo/Applications/IWeixinEventSink.cs delete mode 100644 samples/Demo/Applications/WeixinEventSink.cs delete mode 100644 samples/Demo/Controllers/HomeController.cs delete mode 100644 samples/Demo/Controllers/JssdkController.cs delete mode 100644 samples/Demo/Controllers/QrcodeController.cs delete mode 100644 samples/Demo/Controllers/WeixinAccessTokenController.cs delete mode 100644 samples/Demo/Controllers/WeixinMenuController.cs delete mode 100644 samples/Demo/Core/Entities/Entity.cs delete mode 100644 samples/Demo/Core/Entities/IEntity.cs delete mode 100644 samples/Demo/Core/Entities/ShortGuid.cs delete mode 100644 samples/Demo/Core/ViewModels/ReturnableViewModel.cs delete mode 100644 samples/Demo/Core/ViewModels/SearchViewModel.cs delete mode 100644 samples/Demo/Data/Identity/IdentityDbContext.cs delete mode 100644 samples/Demo/Data/Identity/IdentityDbInitializer.cs delete mode 100644 samples/Demo/Data/WebHostDatabaseExtensions.cs delete mode 100644 samples/Demo/Data/Weixin/WeixinDbContext.cs delete mode 100644 samples/Demo/Demo.csproj delete mode 100644 samples/Demo/Entities/Identity/AppUser.cs delete mode 100644 samples/Demo/Entities/Identity/AppUserManager.cs delete mode 100644 samples/Demo/Entities/Weixin/ReceivedTextMessage.cs delete mode 100644 samples/Demo/Entities/Weixin/WeixinSubscriber.cs delete mode 100644 samples/Demo/Extensions/AbsoluteActionUrlHelperExtensions.cs delete mode 100644 samples/Demo/Migrations/20171228051742_Initial.Designer.cs delete mode 100644 samples/Demo/Migrations/20171228051742_Initial.cs delete mode 100644 samples/Demo/Migrations/20190320025437_CleanIdentityDb.Designer.cs delete mode 100644 samples/Demo/Migrations/20190320025437_CleanIdentityDb.cs delete mode 100644 samples/Demo/Migrations/AppDbContextModelSnapshot.cs delete mode 100644 samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.Designer.cs delete mode 100644 samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.cs delete mode 100644 samples/Demo/Migrations/WeixinDb/WeixinDbContextModelSnapshot.cs delete mode 100644 samples/Demo/Models/Home/IndexViewModel.cs delete mode 100644 samples/Demo/Models/Home/SendWeixinViewModel.cs delete mode 100644 samples/Demo/Models/Weixin/JweixinViewModel.cs delete mode 100644 samples/Demo/Models/Weixin/ShareJweixinViewModel.cs delete mode 100644 samples/Demo/Models/Weixin/WeixinJsonViewModel.cs delete mode 100644 samples/Demo/Program.cs delete mode 100644 samples/Demo/Properties/launchSettings.json delete mode 100644 samples/Demo/Startup.cs delete mode 100644 samples/Demo/Views/Home/About.cshtml delete mode 100644 samples/Demo/Views/Home/Index.cshtml delete mode 100644 samples/Demo/Views/Home/ReceivedText.cshtml delete mode 100644 samples/Demo/Views/Home/SendWeixin.cshtml delete mode 100644 samples/Demo/Views/Home/Subscribers.cshtml delete mode 100644 samples/Demo/Views/Jssdk/Index.cshtml delete mode 100644 samples/Demo/Views/Shared/Error.cshtml delete mode 100644 samples/Demo/Views/Shared/_Layout.cshtml delete mode 100644 samples/Demo/Views/Shared/_LayoutJweixin.cshtml delete mode 100644 samples/Demo/Views/Shared/_LoginPartial.cshtml delete mode 100644 samples/Demo/Views/WeixinMenu/Index.cshtml delete mode 100644 samples/Demo/Views/WeixinMenu/UpdateMenuResult.cshtml delete mode 100644 samples/Demo/Views/_ViewImports.cshtml delete mode 100644 samples/Demo/Views/_ViewStart.cshtml delete mode 100644 samples/Demo/appsettings.json delete mode 100644 samples/Demo/bundleconfig.json delete mode 100644 samples/Demo/libman.json delete mode 100644 samples/Demo/web.config delete mode 100644 samples/Demo/wwwroot/MP_verify_MQuINXpToN5ZYtjc.txt delete mode 100644 samples/Demo/wwwroot/css/site.css delete mode 100644 samples/Demo/wwwroot/img/mp-test.jpg delete mode 100644 samples/Demo/wwwroot/js/site.js delete mode 100644 samples/Demo/wxdemo.sqlite delete mode 100644 samples/db-schema-update-20190320.sql delete mode 100644 samples/wxdemo.sqlite delete mode 100644 src/Weixin.Jssdk/AspNetCore.Weixin.Jssdk.csproj diff --git a/README.md b/README.md index 7705a56..82b18a4 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,11 @@ An ASP.NET Core middleware for Tencent Wechat/Weixin message handling and apis. 微信公众平台/接口调用服务:在微信公众平台上申请服务号或订阅号后,经配置部署可提供自定义菜单、即时信息交流、微信网页授权、模板消息通知等接口调用服务。 +## Demo +http://demo.auth.myvas.com (debian.9-x64) [[github]](https://github.com/myvas/AspNetCore.Authentication.Demo) + ## NuGet -https://www.nuget.org/packages/AspNetCore.Weixin/ +- Myvas.AspNetCore.Weixin [![NuGet](https://img.shields.io/nuget/v/Myvas.AspNetCore.Weixin.svg)](https://www.nuget.org/packages/Myvas.AspNetCore.Weixin) [[github]](https://github.com/myvas/AspNetCore.Weixin) ## Settings https://mp.weixin.qq.com @@ -159,9 +162,6 @@ $(document).ready(function () { ``` -## Demo -https://wx.myvas.com - ## Dev * [.NET Core SDK 2.1 LTS](https://dotnet.microsoft.com/download/dotnet-core/2.1) 2.1.802 * [微信开发者工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html) diff --git a/Weixin.sln b/Weixin.sln index 1af090a..66b20b9 100644 --- a/Weixin.sln +++ b/Weixin.sln @@ -18,12 +18,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{73FCFCF4-3 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "test", "test\test.csproj", "{74A3C863-09CC-4700-A688-1DF8B26C951B}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{6E6B9D58-9128-47E7-956E-8DB335D2247E}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Myvas.AspNetCore.Weixin", "src\Weixin\Myvas.AspNetCore.Weixin.csproj", "{9B8E8031-ACD1-43A4-98A0-4142CEA57B94}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo", "samples\Demo\Demo.csproj", "{927AD981-2993-4A9B-8210-FF249EC6A6F1}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Myvas.AspNetCore.Weixin.Jssdk", "src\Weixin.Jssdk\Myvas.AspNetCore.Weixin.Jssdk.csproj", "{6DE72631-538C-4F33-8891-D1F9E61634B6}" EndProject Global @@ -40,10 +36,6 @@ Global {9B8E8031-ACD1-43A4-98A0-4142CEA57B94}.Debug|Any CPU.Build.0 = Debug|Any CPU {9B8E8031-ACD1-43A4-98A0-4142CEA57B94}.Release|Any CPU.ActiveCfg = Release|Any CPU {9B8E8031-ACD1-43A4-98A0-4142CEA57B94}.Release|Any CPU.Build.0 = Release|Any CPU - {927AD981-2993-4A9B-8210-FF249EC6A6F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {927AD981-2993-4A9B-8210-FF249EC6A6F1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {927AD981-2993-4A9B-8210-FF249EC6A6F1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {927AD981-2993-4A9B-8210-FF249EC6A6F1}.Release|Any CPU.Build.0 = Release|Any CPU {6DE72631-538C-4F33-8891-D1F9E61634B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6DE72631-538C-4F33-8891-D1F9E61634B6}.Debug|Any CPU.Build.0 = Debug|Any CPU {6DE72631-538C-4F33-8891-D1F9E61634B6}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -55,7 +47,6 @@ Global GlobalSection(NestedProjects) = preSolution {74A3C863-09CC-4700-A688-1DF8B26C951B} = {73FCFCF4-3A1C-4D4D-939A-9CABDC2341DC} {9B8E8031-ACD1-43A4-98A0-4142CEA57B94} = {672FEA18-F072-4549-9C4C-DBD1F9CDC7BB} - {927AD981-2993-4A9B-8210-FF249EC6A6F1} = {6E6B9D58-9128-47E7-956E-8DB335D2247E} {6DE72631-538C-4F33-8891-D1F9E61634B6} = {672FEA18-F072-4549-9C4C-DBD1F9CDC7BB} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution diff --git a/samples/Demo/Applications/IWeixinEventSink.cs b/samples/Demo/Applications/IWeixinEventSink.cs deleted file mode 100644 index a8104bf..0000000 --- a/samples/Demo/Applications/IWeixinEventSink.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Threading.Tasks; -using AspNetCore.Weixin; - -namespace Demo.Applications -{ - public interface IWeixinEventSink - { - Task OnClickMenuEventReceived(object sender, ClickMenuEventReceivedEventArgs e); - Task OnEnterEventReceived(object sender, EnterEventReceivedEventArgs e); - Task OnImageMessageReceived(object sender, ImageMessageReceivedEventArgs e); - Task OnLinkMessageReceived(object sender, LinkMessageReceivedEventArgs e); - Task OnLocationEventReceived(object sender, LocationEventReceivedEventArgs e); - Task OnLocationMessageReceived(object sender, LocationMessageReceivedEventArgs e); - Task OnQrscanEventReceived(object sender, QrscanEventReceivedEventArgs e); - Task OnShortVideoMessageReceived(object sender, ShortVideoMessageReceivedEventArgs e); - Task OnSubscribeEventReceived(object sender, SubscribeEventReceivedEventArgs e); - Task OnTextMessageReceived(object sender, TextMessageReceivedEventArgs e); - Task OnUnsubscribeEventReceived(object sender, UnsubscribeEventReceivedEventArgs e); - Task OnVideoMessageReceived(object sender, VideoMessageReceivedEventArgs e); - Task OnViewMenuEventReceived(object sender, ViewMenuEventReceivedEventArgs e); - Task OnVoiceMessageReceived(object sender, VoiceMessageReceivedEventArgs e); - } -} \ No newline at end of file diff --git a/samples/Demo/Applications/WeixinEventSink.cs b/samples/Demo/Applications/WeixinEventSink.cs deleted file mode 100644 index a725342..0000000 --- a/samples/Demo/Applications/WeixinEventSink.cs +++ /dev/null @@ -1,312 +0,0 @@ -using AspNetCore.Weixin; -using Demo.Data; -using Demo.Entities; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Demo.Applications -{ - public class WeixinEventSink : IWeixinEventSink - { - private readonly ILogger _logger; - private readonly WeixinDbContext _db; - - public WeixinEventSink(ILoggerFactory loggerFactory, - WeixinDbContext db) - { - _logger = loggerFactory?.CreateLogger() ?? throw new ArgumentNullException(nameof(loggerFactory)); - _db = db ?? throw new ArgumentNullException(nameof(db)); - } - - public async Task OnTextMessageReceived(object sender, TextMessageReceivedEventArgs e) - { - _logger.LogDebug(XmlConvert.SerializeObject(e)); - - var msg = new ReceivedTextMessage(); - msg.Content = e.Content; - msg.From = e.FromUserName; - msg.To = e.ToUserName; - msg.ReceivedTime = new DateTimeOffset(WeixinTimestampHelper.ToUtcTime(e.CreateTimeStr)); - _db.ReceivedTextMessages.Add(msg); - var saveResult = await _db.SaveChangesAsync(); - if (saveResult > 0) - { - _logger.LogDebug($"已将微信文本消息存入数据库。Result:{saveResult}, From:{msg.From}, To:{msg.To}, Time:{msg.ReceivedTime}, Content:{msg.Content}"); - } - _logger.LogDebug($"微信文本消息在数据库中共{_db.ReceivedTextMessages.ToList().Count()}条记录。"); - - - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - { - var result = new StringBuilder(); - result.AppendFormat("您刚才发送了文本信息:{0}", e.Content); - - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = result.ToString(); - } - await messageHandler.WriteAsync(responseMessage); - - _logger.LogDebug(XmlConvert.SerializeObject(responseMessage)); - - return true; - } - - public async Task OnLinkMessageReceived(object sender, LinkMessageReceivedEventArgs e) - { - _logger.LogInformation($"OnLinkMessageReceived: {e.Url}"); - - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = string.Format(@"您发送了一条链接信息: - Title:{0} - Description:{1} - Url:{2}", e.Title, e.Description, e.Url); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnVideoMessageReceived(object sender, VideoMessageReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = "您发送了一条视频信息,ID:" + e.MediaId; - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnShortVideoMessageReceived(object sender, ShortVideoMessageReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = "您发送了一条小视频信息,ID:" + e.MediaId; - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnVoiceMessageReceived(object sender, VoiceMessageReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageVoice(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Voice.MediaId = e.MediaId; - //responseMessage.Music.MusicUrl = e.MediaId; - //responseMessage.Music.Title = "语音"; - //responseMessage.Music.Description = "这里是一条语音消息"; - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnImageMessageReceived(object sender, ImageMessageReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageNews(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Articles.Add(new Article() - { - Title = "您刚才发送了图片信息", - Description = "您发送的图片将会显示在边上", - PicUrl = e.PicUrl, - Url = "http://wx.demo.com" - }); - responseMessage.Articles.Add(new Article() - { - Title = "第二条", - Description = "第二条带链接的内容", - PicUrl = e.PicUrl, - Url = "http://wx.demo.com" - }); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnLocationMessageReceived(object sender, LocationMessageReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageNews(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - - var markersList = new List(); - markersList.Add(new GoogleMapMarkers() - { - Latitude = e.Latitude, - Longitude = e.Longitude, - Color = "red", - Label = "S", - Size = GoogleMapMarkerSize.Default, - }); - var mapSize = "480x600"; - var mapUrl = GoogleMapHelper.GetGoogleStaticMap(19 /*requestMessage.Scale*//*微信和GoogleMap的Scale不一致,这里建议使用固定值*/, - markersList, mapSize); - responseMessage.Articles.Add(new Article() - { - Description = string.Format("您刚才发送了地理位置信息。Location_X:{0},Location_Y:{1},Scale:{2},标签:{3}", - e.Latitude, e.Longitude, - e.Scale, e.Label), - PicUrl = mapUrl, - Title = "定位地点周边地图", - Url = mapUrl - }); - responseMessage.Articles.Add(new Article() - { - Title = "AspNetCore.Weixin", - Description = "AspNetCore.Weixin", - PicUrl = "http://wx.demo.com/logo.jpg", - Url = "http://wx.demo.com" - }); - - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnLocationEventReceived(object sender, LocationEventReceivedEventArgs e) - { - //这里是微信客户端(通过微信服务器)自动发送过来的位置信息 - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = string.Format("刚刚上报了一条定位信息:(Lat={0},Lon={1},Prc={2})", - e.Latitude, e.Longitude, e.Precision); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnClickMenuEventReceived(object sender, ClickMenuEventReceivedEventArgs e) - { - _logger.LogDebug("点击了子菜单按钮({0}): {1}", e.FromUserName, e.MenuItemKey); - - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = string.Format("点击了子菜单按钮({0}): {1}", e.FromUserName, e.MenuItemKey); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnViewMenuEventReceived(object sender, ViewMenuEventReceivedEventArgs e) - { - _logger.LogDebug("点击了子菜单按钮({0}): {1}", e.FromUserName, e.Url); - - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = string.Format("点击了子菜单按钮({0}): {1}", e.FromUserName, e.Url); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnUnsubscribeEventReceived(object sender, UnsubscribeEventReceivedEventArgs e) - { - _logger.LogDebug("Unsubscribe({0})", e.FromUserName); - - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = string.Format("Unsubscribe({0})", e.FromUserName); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnEnterEventReceived(object sender, EnterEventReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - _logger.LogDebug("Subscribe: from:{0}", e.FromUserName); - - var responseMessage = new ResponseMessageNews(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Articles.Add(new Article() - { - Title = "欢迎进入AspNetCore.Weixin演示系统", - Description = "由AspNetCore.Weixin提供", - PicUrl = "https://mp.weixin.qq.com/cgi-bin/getimgdata?mode=large&source=file&fileId=200121314%3E&token=977619473&lang=zh_CN", - Url = "http://wx.demo.com" - }); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - - public async Task OnSubscribeEventReceived(object sender, SubscribeEventReceivedEventArgs e) - { - var messageHandler = sender as WeixinMessageHandler; - if (string.IsNullOrWhiteSpace(e.EventKey)) - { - _logger.LogDebug("Subscribe: from:{0}", e.FromUserName); - - var responseMessage = new ResponseMessageNews(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Articles.Add(new Article() - { - Title = "欢迎体验AspNetCore.Weixin演示系统", - Description = "由AspNetCore.Weixin提供", - PicUrl = "https://mp.weixin.qq.com/cgi-bin/getimgdata?mode=large&source=file&fileId=200121314%3E&token=977619473&lang=zh_CN", - Url = "http://wx.demo.com" - }); - await messageHandler.WriteAsync(responseMessage); - } - else - { - _logger.LogDebug("Subscribe w/ scene({0}): {1}, {2}", e.FromUserName, e.EventKey, e.Ticket); - - - var responseMessage = new ResponseMessageNews(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Articles.Add(new Article() - { - Title = "欢迎体验AspNetCore.Weixin演示系统", - Description = "由AspNetCore.Weixin提供。此消息带场景({e.EventKey}, {e.Ticket})", - PicUrl = "https://mp.weixin.qq.com/cgi-bin/getimgdata?mode=large&source=file&fileId=200121314%3E&token=977619473&lang=zh_CN", - Url = "http://wx.demo.com" - }); - await messageHandler.WriteAsync(responseMessage); - } - - return true; - } - - public async Task OnQrscanEventReceived(object sender, QrscanEventReceivedEventArgs e) - { - _logger.LogDebug("Qrscan({0}): {1}, {2}", e.FromUserName, e.EventKey, e.Ticket); - - var messageHandler = sender as WeixinMessageHandler; - var responseMessage = new ResponseMessageText(); - responseMessage.FromUserName = e.ToUserName; - responseMessage.ToUserName = e.FromUserName; - responseMessage.Content = string.Format("Qrscan({0}): {1}, {2}", e.FromUserName, e.EventKey, e.Ticket); - await messageHandler.WriteAsync(responseMessage); - - return true; - } - } -} diff --git a/samples/Demo/Controllers/HomeController.cs b/samples/Demo/Controllers/HomeController.cs deleted file mode 100644 index c92a7f3..0000000 --- a/samples/Demo/Controllers/HomeController.cs +++ /dev/null @@ -1,103 +0,0 @@ -using AspNetCore.Weixin; -using Demo.Data; -using Demo.Entities; -using Demo.Models.Home; -using Demo.Models; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Controllers -{ - public class HomeController : Controller - { - private readonly WeixinDbContext _db; - private readonly ILogger _logger; - private readonly IWeixinAccessToken _weixinAccessToken; - - public HomeController( - WeixinDbContext db, - ILoggerFactory loggerFactory, - IWeixinAccessToken smsSender) - { - _db = db ?? throw new ArgumentNullException(nameof(db)); - _logger = loggerFactory?.CreateLogger() ?? throw new ArgumentNullException(nameof(loggerFactory)); - _weixinAccessToken = smsSender ?? throw new ArgumentNullException(nameof(smsSender)); - } - - public IActionResult Index() - { - var subscriberCount = _db.Subscribers.Count(); - var receivedTextCount = _db.ReceivedTextMessages.Count(); - var vm = new IndexViewModel() { SubscriberCount = subscriberCount, ReceivedTextCount = receivedTextCount }; - - return View(vm); - } - - public async Task Subscribers() - { - var vm = new ReturnableViewModel>(); - - var token = _weixinAccessToken.GetToken(); - var subscribers = await UserApi.GetAllUserInfo(token); - vm.Item = subscribers; - - return View(vm); - } - - - public async Task ReceivedText() - { - var items = await _db.ReceivedTextMessages.ToListAsync(); - _logger.LogDebug($"΢ıϢݿй{_db.ReceivedTextMessages.ToList().Count()}¼"); - return View(items); - } - - public async Task SendWeixin(string openId) - { - if (string.IsNullOrEmpty(openId)) - { - return View(); - } - - var vm = new SendWeixinViewModel(); - vm.Received = await _db.ReceivedTextMessages.Where(x => x.To == openId).ToListAsync(); - vm.OpenId = openId; - return View(vm); - } - - [HttpPost, ActionName(nameof(SendWeixin))] - [ValidateAntiForgeryToken] - public async Task SendWeixin_Post(SendWeixinViewModel vm) - { - if (!ModelState.IsValid) - { - return View(vm); - } - - var token = _weixinAccessToken.GetToken(); - var result = await Custom.SendText(token, vm.OpenId, vm.Content); - if (!result.Succeeded) - { - ModelState.AddModelError("", result.errmsg); - return View(vm); - } - - return RedirectToAction(nameof(Index)); - } - - public IActionResult About() - { - return View(); - } - - public IActionResult Error() - { - return View(); - } - } -} \ No newline at end of file diff --git a/samples/Demo/Controllers/JssdkController.cs b/samples/Demo/Controllers/JssdkController.cs deleted file mode 100644 index 8605cd0..0000000 --- a/samples/Demo/Controllers/JssdkController.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Demo.Entities; -using Demo.Models; -using AspNetCore.Weixin; -using Microsoft.Extensions.Options; - -namespace Demo.Controllers -{ - public class JssdkController : Controller - { - private readonly IWeixinAccessToken _weixinAccessToken; - private readonly IWeixinJsapiTicket _weixinJsapiTicket; - private readonly WeixinAccessTokenOptions _options; - - public JssdkController( - IWeixinAccessToken weixinAccessToken, - IWeixinJsapiTicket weixinJsapiTicket, - IOptions optionsAccessor) - { - _weixinAccessToken = weixinAccessToken ?? throw new ArgumentNullException(nameof(weixinAccessToken)); - _weixinJsapiTicket = weixinJsapiTicket ?? throw new ArgumentNullException(nameof(weixinJsapiTicket)); - _options = optionsAccessor?.Value ?? throw new ArgumentNullException(nameof(optionsAccessor)); - } - - public IActionResult Index() - { - var vm = new ShareJweixinViewModel(); - - var config = new WeixinJsConfig() - { - debug = true, - appId = _options.AppId - }; - var jsapiTicket = _weixinJsapiTicket.GetTicket(); - var refererUrl = Request.GetAbsoluteUri();// Url.AbsoluteContent(Url.Action()); - vm.ConfigJson = config.ToJson(jsapiTicket, refererUrl); - - vm.Title = "链接分享测试"; - vm.Url = "http://wx.steamlet.com/about"; - vm.Description = "链接分享测试"; - vm.ImgUrl = "http://wx.steamlet.com/img/mp-test.jpg"; - return View(vm); - } - } -} \ No newline at end of file diff --git a/samples/Demo/Controllers/QrcodeController.cs b/samples/Demo/Controllers/QrcodeController.cs deleted file mode 100644 index 418d337..0000000 --- a/samples/Demo/Controllers/QrcodeController.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using AspNetCore.Weixin; -using Microsoft.Extensions.Logging; -using System.IO; -using System.Net; - -namespace Demo.Controllers -{ - public class QrcodeController : Controller - { - private readonly ILogger _logger; - private readonly IWeixinAccessToken _weixinAccessToken; - - public QrcodeController(ILoggerFactory loggerFactory, - IWeixinAccessToken weixinAccessToken) - { - _logger = loggerFactory?.CreateLogger() ?? throw new ArgumentNullException(nameof(loggerFactory)); - _weixinAccessToken = weixinAccessToken ?? throw new ArgumentNullException(nameof(weixinAccessToken)); - } - - public IActionResult Index() - { - return View(); - } - - [HttpGet("[controller]/[action]/{scene}")] - public async Task UrlWithScene(string scene) - { - var accessToken = _weixinAccessToken.GetToken(); - var createQrcodeResult = await QrCode.Create(accessToken, "QR_LIMIT_STR_SCENE", scene); - return Json(createQrcodeResult); - } - - [HttpGet("[controller]/[action]/{scene}")] - public async Task QrcodeWithScene(string scene) - { - var accessToken = _weixinAccessToken.GetToken(); - var createQrcodeResult = await QrCode.Create(accessToken, "QR_LIMIT_STR_SCENE", scene); - - var url = QrCode.ShowQrcode(createQrcodeResult.ticket); - - return Content(url); - } - } -} \ No newline at end of file diff --git a/samples/Demo/Controllers/WeixinAccessTokenController.cs b/samples/Demo/Controllers/WeixinAccessTokenController.cs deleted file mode 100644 index 169139f..0000000 --- a/samples/Demo/Controllers/WeixinAccessTokenController.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using AspNetCore.Weixin; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; - -namespace Demo.Controllers -{ - [Route("api/[controller]")] - [ApiController] - public class WeixinAccessTokenController : ControllerBase - { - private readonly IWeixinAccessToken _weixinAccessToken; - - public WeixinAccessTokenController(IWeixinAccessToken weixinAccessToken) - { - _weixinAccessToken = weixinAccessToken; - } - - public string GetToken() - { - return _weixinAccessToken.GetToken(); - } - } -} \ No newline at end of file diff --git a/samples/Demo/Controllers/WeixinMenuController.cs b/samples/Demo/Controllers/WeixinMenuController.cs deleted file mode 100644 index d421ad3..0000000 --- a/samples/Demo/Controllers/WeixinMenuController.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using AspNetCore.Weixin; -using Demo.Data; -using Demo.Entities; -using Demo.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; - -namespace Demo.Controllers -{ - [Authorize]//(Policy = "WeixinMenuManager")] - public class WeixinMenuController : Controller - { - private readonly IdentityDbContext _context; - private readonly IWeixinAccessToken _weixinAccessToken; - private readonly ILogger _logger; - - public WeixinMenuController(IdentityDbContext context, - IWeixinAccessToken weixinAccessToken, - ILogger logger) - { - _context = context; - _weixinAccessToken = weixinAccessToken; - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - } - - public async Task Index() - { - var token = _weixinAccessToken.GetToken(); - var resultJson = await MenuApi.GetMenuAsync(token); - - var vm = new WeixinJsonViewModel - { - Token = token, - Json = JsonConvert.SerializeObject(resultJson, Formatting.Indented) - }; - return View(vm); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task UpdateWeixinMenu(WeixinJsonViewModel vm) - { - if (ModelState.IsValid) - { - if (!string.IsNullOrEmpty(vm.Json)) - { - var token = _weixinAccessToken.GetToken(); - var result = await MenuApi.CreateMenuAsync(token, vm.Json); - - _logger.LogDebug(result.ToString()); - - return View("UpdateMenuResult", result); - } - } - - // If we got this far, something failed; redisplay form. - return RedirectToAction(nameof(Index), new { input = vm.Json }); - } - } -} \ No newline at end of file diff --git a/samples/Demo/Core/Entities/Entity.cs b/samples/Demo/Core/Entities/Entity.cs deleted file mode 100644 index d0aa9ed..0000000 --- a/samples/Demo/Core/Entities/Entity.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; - -namespace System -{ - - /// - /// A shortcut of for most used primary key type (). - /// - public abstract class Entity : Entity - { - public Entity() - { - Id = ShortGuid.NewGuid().ToString(); - } - } - - /// - /// Basic implementation of IEntity interface. - /// An entity can inherit this class of directly implement to IEntity interface. - /// - /// Type of the primary key of the entity - public abstract class Entity : IEntity - where TKey : IEquatable - { - /// - /// Unique identifier for this entity. - /// - public virtual TKey Id { get; set; } - - /// - /// Checks if this entity is transient (it has not an Id). - /// - /// True, if this entity is transient - public virtual bool IsTransient() - { - if (EqualityComparer.Default.Equals(Id, default(TKey))) - { - return true; - } - - //Workaround for EF Core since it sets int/long to min value when attaching to dbcontext - if (typeof(TKey) == typeof(int)) - { - return Convert.ToInt32(Id) <= 0; - } - - if (typeof(TKey) == typeof(long)) - { - return Convert.ToInt64(Id) <= 0; - } - - return false; - } - - /// - public override bool Equals(object obj) - { - if (obj == null || !(obj is Entity)) - { - return false; - } - - //Same instances must be considered as equal - if (ReferenceEquals(this, obj)) - { - return true; - } - - //Transient objects are not considered as equal - var other = (Entity)obj; - if (IsTransient() && other.IsTransient()) - { - return false; - } - - //Must have a IS-A relation of types or must be same type - var typeOfThis = GetType(); - var typeOfOther = other.GetType(); - if (!typeOfThis.IsAssignableFrom(typeOfOther) && !typeOfOther.IsAssignableFrom(typeOfThis)) - { - return false; - } - - return Id.Equals(other.Id); - } - - /// - public override int GetHashCode() - { - return Id.GetHashCode(); - } - - /// - public static bool operator ==(Entity left, Entity right) - { - if (Equals(left, null)) - { - return Equals(right, null); - } - - return left.Equals(right); - } - - /// - public static bool operator !=(Entity left, Entity right) - { - return !(left == right); - } - - /// - public override string ToString() - { - return $"[{GetType().Name} {Id}]"; - } - } -} diff --git a/samples/Demo/Core/Entities/IEntity.cs b/samples/Demo/Core/Entities/IEntity.cs deleted file mode 100644 index e494475..0000000 --- a/samples/Demo/Core/Entities/IEntity.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace System -{ - /// - /// A shortcut of for most used primary key type (). - /// - public interface IEntity : IEntity - { - - } - - /// - /// Defines interface for base entity type. All entities in the system must implement this interface. - /// - /// Type of the primary key of the entity - public interface IEntity - where TKey : IEquatable - { - /// - /// Unique identifier for this entity. - /// - TKey Id { get; set; } - - /// - /// Checks if this entity is transient (not persisted to database and it has not an ). - /// - /// True, if this entity is transient - //bool IsTransient(); - } -} diff --git a/samples/Demo/Core/Entities/ShortGuid.cs b/samples/Demo/Core/Entities/ShortGuid.cs deleted file mode 100644 index 81eac8b..0000000 --- a/samples/Demo/Core/Entities/ShortGuid.cs +++ /dev/null @@ -1,283 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace System -{ - /// - /// A base64-like shorter and url friendly Guid class. - /// - /// It takes a standard GUID like this: - /// c9a646d3-9c61-4cb7-bfcd-ee2522c8f633 - /// And converts it into this smaller string: - /// 00amyWGct0y_ze4lIsj2Mw - /// - /// - /// - /// ref http://www.singular.co.nz/2007/12/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp/ - /// - - /// - /// Represents a globally unique identifier (GUID) with a - /// shorter string value. Sguid - /// - public struct ShortGuid - { - #region Static - - /// - /// A read-only instance of the ShortGuid class whose value - /// is guaranteed to be all zeroes. - /// - public static readonly ShortGuid Empty = new ShortGuid(Guid.Empty); - - #endregion - - #region Fields - - Guid _guid; - string _value; - - #endregion - - #region Contructors - - /// - /// Creates a ShortGuid from a base64 encoded string - /// - /// The encoded guid as a - /// base64 string - public ShortGuid(string value) - { - _value = value; - _guid = Decode(value); - } - - /// - /// Creates a ShortGuid from a Guid - /// - /// The Guid to encode - public ShortGuid(Guid guid) - { - _value = Encode(guid); - _guid = guid; - } - - #endregion - - #region Properties - - /// - /// Gets/sets the underlying Guid - /// - public Guid Guid - { - get { return _guid; } - set - { - if (value != _guid) - { - _guid = value; - _value = Encode(value); - } - } - } - - /// - /// Gets/sets the underlying base64 encoded string - /// - public string Value - { - get { return _value; } - set - { - if (value != _value) - { - _value = value; - _guid = Decode(value); - } - } - } - - #endregion - - #region ToString - - /// - /// Returns the base64 encoded guid as a string - /// - /// - public override string ToString() - { - return _value; - } - - #endregion - - #region Equals - - /// - /// Returns a value indicating whether this instance and a - /// specified Object represent the same type and value. - /// - /// The object to compare - /// - public override bool Equals(object obj) - { - if (obj is ShortGuid) - return _guid.Equals(((ShortGuid)obj)._guid); - if (obj is Guid) - return _guid.Equals((Guid)obj); - if (obj is string) - return _guid.Equals(((ShortGuid)obj)._guid); - return false; - } - - #endregion - - #region GetHashCode - - /// - /// Returns the HashCode for underlying Guid. - /// - /// - public override int GetHashCode() - { - return _guid.GetHashCode(); - } - - #endregion - - #region NewGuid - - /// - /// Initialises a new instance of the ShortGuid class - /// - /// - public static ShortGuid NewGuid() - { - return new ShortGuid(Guid.NewGuid()); - } - - #endregion - - #region Encode - - /// - /// Creates a new instance of a Guid using the string value, - /// then returns the base64 encoded version of the Guid. - /// - /// An actual Guid string (i.e. not a ShortGuid) - /// - public static string Encode(string value) - { - Guid guid = new Guid(value); - return Encode(guid); - } - - /// - /// Encodes the given Guid as a base64 string that is 22 - /// characters long. - /// - /// The Guid to encode - /// - public static string Encode(Guid guid) - { - string encoded = Convert.ToBase64String(guid.ToByteArray()); - encoded = encoded - .Replace("/", "_") - .Replace("+", "-"); - return encoded.Substring(0, 22); - } - - #endregion - - #region Decode - - /// - /// Decodes the given base64 string - /// - /// The base64 encoded string of a Guid - /// A new Guid - public static Guid Decode(string value) - { - value = value - .Replace("_", "/") - .Replace("-", "+"); - byte[] buffer = Convert.FromBase64String(value + "=="); - return new Guid(buffer); - } - - #endregion - - #region Operators - - /// - /// Determines if both ShortGuids have the same underlying - /// Guid value. - /// - /// - /// - /// - public static bool operator ==(ShortGuid x, ShortGuid y) - { - if ((object)x == null) return (object)y == null; - return x._guid == y._guid; - } - - /// - /// Determines if both ShortGuids do not have the - /// same underlying Guid value. - /// - /// - /// - /// - public static bool operator !=(ShortGuid x, ShortGuid y) - { - return !(x == y); - } - - /// - /// Implicitly converts the ShortGuid to it's string equivilent - /// - /// - /// - public static implicit operator string(ShortGuid shortGuid) - { - return shortGuid._value; - } - - /// - /// Implicitly converts the ShortGuid to it's Guid equivilent - /// - /// - /// - public static implicit operator Guid(ShortGuid shortGuid) - { - return shortGuid._guid; - } - - /// - /// Implicitly converts the string to a ShortGuid - /// - /// - /// - public static implicit operator ShortGuid(string shortGuid) - { - return new ShortGuid(shortGuid); - } - - /// - /// Implicitly converts the Guid to a ShortGuid - /// - /// - /// - public static implicit operator ShortGuid(Guid guid) - { - return new ShortGuid(guid); - } - - #endregion - } -} diff --git a/samples/Demo/Core/ViewModels/ReturnableViewModel.cs b/samples/Demo/Core/ViewModels/ReturnableViewModel.cs deleted file mode 100644 index ddebd92..0000000 --- a/samples/Demo/Core/ViewModels/ReturnableViewModel.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models -{ - public class ReturnableViewModel - { - //[Url] //相对路径不符合要求 - [Display(Name = "返回")] - public string ReturnUrl { get; set; } - } - - /// - /// - /// - /// 不允许接口,必须可以实例化。可以是值类型、基础类型、无参构造自定义类。 - public class ReturnableViewModel : ReturnableViewModel - where T : class - { - public T Item { get; set; } - } -} diff --git a/samples/Demo/Core/ViewModels/SearchViewModel.cs b/samples/Demo/Core/ViewModels/SearchViewModel.cs deleted file mode 100644 index 6a05549..0000000 --- a/samples/Demo/Core/ViewModels/SearchViewModel.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models -{ - public class SearchViewModel : ReturnableViewModel - { - [Display(Name = "搜索")] - public string SearchString { get; set; } - } - - public class SearchViewModel : SearchViewModel - where TEntity : IEntity - { - } - - - public class SearchViewModel : ReturnableViewModel - where TEntity : IEntity - where TKey : IEquatable - { - [Display(Name = "搜索")] - public string SearchString { get; set; } - - public IList Items { get; set; } - - public SearchViewModel() - { - Items = new List(); - } - } -} diff --git a/samples/Demo/Data/Identity/IdentityDbContext.cs b/samples/Demo/Data/Identity/IdentityDbContext.cs deleted file mode 100644 index 353c647..0000000 --- a/samples/Demo/Data/Identity/IdentityDbContext.cs +++ /dev/null @@ -1,19 +0,0 @@ -using AspNetCore.Weixin; -using Demo.Entities; -using Microsoft.AspNetCore.Identity.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Data -{ - public class IdentityDbContext : IdentityDbContext - { - public IdentityDbContext(DbContextOptions options) - : base(options) - { - } - } -} diff --git a/samples/Demo/Data/Identity/IdentityDbInitializer.cs b/samples/Demo/Data/Identity/IdentityDbInitializer.cs deleted file mode 100644 index 15c9ea0..0000000 --- a/samples/Demo/Data/Identity/IdentityDbInitializer.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Demo.Entities; -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Data -{ - public static class IdentityDbInitializer - { - public const string AdminUserName = "Admin"; - public const string AdminInitPassword = "P@ssw0rd"; - - public static async Task Initialize(IServiceProvider serviceProvider) - { - using (var db = new IdentityDbContext(serviceProvider.GetRequiredService>())) - { - await EnsureAdminUser(serviceProvider); - } - } - - private static async Task EnsureAdminUser(IServiceProvider serviceProvider) - { - var userManager = serviceProvider.GetRequiredService>(); - - var user = await userManager.FindByNameAsync(AdminUserName); - if (user == null) - { - user = new AppUser() - { - UserName = AdminUserName, - Email = "admin@myvas.com", - EmailConfirmed = true, - PhoneNumber = "13800138000", - PhoneNumberConfirmed = true, - }; - var result = await userManager.CreateAsync(user, AdminInitPassword); - if (!result.Succeeded) - { - throw new Exception(GetErrorMessage(result)); - } - } - } - - private static string GetErrorMessage(IdentityResult identityResult) - { - var result = ""; - - foreach (var error in identityResult.Errors) - { - result += $"[{error.Code}]{error.Description}" + Environment.NewLine; - } - return result; - } - - - } -} diff --git a/samples/Demo/Data/WebHostDatabaseExtensions.cs b/samples/Demo/Data/WebHostDatabaseExtensions.cs deleted file mode 100644 index 506902c..0000000 --- a/samples/Demo/Data/WebHostDatabaseExtensions.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Microsoft.AspNetCore.Hosting; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Data -{ - public static class WebHostDatabaseExtensions - { - public static IWebHost MigrateDatabase(this IWebHost webHost) - { - using (var scope = webHost.Services.CreateScope()) - { - var services = scope.ServiceProvider; - - try - { - var db = services.GetRequiredService(); - db.Database.Migrate(); - } - catch (Exception ex) - { - var logger = services.GetRequiredService>(); - logger.LogError(ex, "An error occurred while migrating the Identity db."); - } - - try - { - var db = services.GetRequiredService(); - db.Database.Migrate(); - } - catch (Exception ex) - { - var logger = services.GetRequiredService>(); - logger.LogError(ex, "An error occurred while migrating the Weixin db."); - } - } - - return webHost; - } - - public static IWebHost SeedDatabase(this IWebHost webHost) - { - using (var scope = webHost.Services.CreateScope()) - { - var services = scope.ServiceProvider; - - try - { - IdentityDbInitializer.Initialize(services).Wait(); - } - catch (Exception ex) - { - var logger = services.GetRequiredService>(); - logger.LogError(ex, "An error occurred while seeding the database."); - } - } - - return webHost; - } - } -} diff --git a/samples/Demo/Data/Weixin/WeixinDbContext.cs b/samples/Demo/Data/Weixin/WeixinDbContext.cs deleted file mode 100644 index 5583b5a..0000000 --- a/samples/Demo/Data/Weixin/WeixinDbContext.cs +++ /dev/null @@ -1,22 +0,0 @@ -using AspNetCore.Weixin; -using Demo.Entities; -using JetBrains.Annotations; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Data -{ - public class WeixinDbContext:DbContext - { - public WeixinDbContext(DbContextOptions options) : base(options) - { - } - - public DbSet Subscribers { get; set; } - - public DbSet ReceivedTextMessages { get; set; } - } -} diff --git a/samples/Demo/Demo.csproj b/samples/Demo/Demo.csproj deleted file mode 100644 index df4e393..0000000 --- a/samples/Demo/Demo.csproj +++ /dev/null @@ -1,49 +0,0 @@ - - - - netcoreapp2.2 - wxdemo - wxdemo - Demo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(IncludeRazorContentInPack) - - - PreserveNewest - - - - - - PreserveNewest - - - - diff --git a/samples/Demo/Entities/Identity/AppUser.cs b/samples/Demo/Entities/Identity/AppUser.cs deleted file mode 100644 index 4696452..0000000 --- a/samples/Demo/Entities/Identity/AppUser.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Microsoft.AspNetCore.Identity; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Entities -{ - public class AppUser : IdentityUser - { - } -} diff --git a/samples/Demo/Entities/Identity/AppUserManager.cs b/samples/Demo/Entities/Identity/AppUserManager.cs deleted file mode 100644 index 5a1ea62..0000000 --- a/samples/Demo/Entities/Identity/AppUserManager.cs +++ /dev/null @@ -1,93 +0,0 @@ -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Entities -{ - public class AppUserManager : UserManager - { - public AppUserManager(IUserStore store, - IOptions optionsAccessor, - IPasswordHasher passwordHasher, - IEnumerable> userValidators, - IEnumerable> passwordValidators, - ILookupNormalizer keyNormalizer, - IdentityErrorDescriber errors, - IServiceProvider services, - ILogger> logger) - : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger) - { - } - - public virtual async Task FindByPhoneNumberAsync(string phoneNumber) - { - return await Users.FirstOrDefaultAsync(x => x.PhoneNumber == phoneNumber); - } - - public virtual async Task VerifyAndConfirmPhoneNumberAsync(AppUser user, string code) - { - if (user == null) - { - throw new ArgumentNullException(nameof(user)); - } - - if (!await VerifyUserTokenAsync(user, Options.Tokens.ChangePhoneNumberTokenProvider, ChangePhoneNumberTokenPurpose + ":" + user.PhoneNumber, code)) - { - return IdentityResult.Failed(ErrorDescriber.InvalidToken()); - } - - user.PhoneNumberConfirmed = true; - return await UpdateAsync(user); - } - - public virtual async Task<(AppUser user, string code)> GenerateChangePhoneNumberTokenAsync(string phoneNumber) - { - var user = await FindByPhoneNumberAsync(phoneNumber); - if (user == null) - { - user = new AppUser { UserName = phoneNumber, PhoneNumber = phoneNumber }; - var identityResult = await CreateAsync(user); - if (!identityResult.Succeeded) - { - var errMsg = ""; - foreach (var err in identityResult.Errors) - { - errMsg += $"[{err.Code}]{err.Description}"; - } - throw new ApplicationException($"Failed on creating a user.{errMsg}"); - } - } - - var code = await GenerateChangePhoneNumberTokenAsync(user, phoneNumber); - return (user, code); - } - - - public virtual async Task<(AppUser user, IdentityResult result)> VerifyChangePhoneNumberTokenAsync(string phoneNumber, string token) - { - if (string.IsNullOrEmpty(phoneNumber)) - { - throw new ArgumentNullException(nameof(phoneNumber)); - } - if (string.IsNullOrEmpty(token)) - { - throw new ArgumentNullException(nameof(token)); - } - var user = await FindByPhoneNumberAsync(phoneNumber); - if (user == null) - { - throw new ArgumentNullException($"User associated with phone number {phoneNumber} not exists!"); - } - - // Make sure the token is valid and the stamp matches - //var result = VerifyUserTokenAsync(user, Options.Tokens.ChangePhoneNumberTokenProvider, ChangePhoneNumberTokenPurpose + ":" + phoneNumber, token).Result; - var result = await VerifyAndConfirmPhoneNumberAsync(user, token); - return (user, result); - } - } -} diff --git a/samples/Demo/Entities/Weixin/ReceivedTextMessage.cs b/samples/Demo/Entities/Weixin/ReceivedTextMessage.cs deleted file mode 100644 index 567a8d1..0000000 --- a/samples/Demo/Entities/Weixin/ReceivedTextMessage.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Entities -{ - public class ReceivedTextMessage : Entity - { - public string From { get; set; } - public string To { get; set; } - public DateTimeOffset ReceivedTime { get; set; } - public string Content { get; set; } - } -} diff --git a/samples/Demo/Entities/Weixin/WeixinSubscriber.cs b/samples/Demo/Entities/Weixin/WeixinSubscriber.cs deleted file mode 100644 index f626f36..0000000 --- a/samples/Demo/Entities/Weixin/WeixinSubscriber.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Entities -{ - public class WeixinSubscriber :Entity - { - public string OpenId { get; set; } - public string Gender { get; set; } - public string NickName { get; set; } - public string AvatorImage { get; set; } - } -} diff --git a/samples/Demo/Extensions/AbsoluteActionUrlHelperExtensions.cs b/samples/Demo/Extensions/AbsoluteActionUrlHelperExtensions.cs deleted file mode 100644 index d4f71f7..0000000 --- a/samples/Demo/Extensions/AbsoluteActionUrlHelperExtensions.cs +++ /dev/null @@ -1,75 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Routing; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo -{ - /// - /// extension methods. - /// - public static class UrlHelperExtensions - { - public static string GetAbsoluteUri(this HttpRequest request) - { - return string.Concat( -request.Scheme, -"://", -request.Host.ToUriComponent(), -request.PathBase.ToUriComponent(), -request.Path.ToUriComponent(), -request.QueryString.ToUriComponent()); - } - - /// - /// Generates a fully qualified URL to an action method by using the specified action name, controller name and - /// route values. - /// - /// The URL helper. - /// The name of the action method. - /// The name of the controller. - /// The route values. - /// The absolute URL. - public static string AbsoluteAction( - this IUrlHelper url, - string actionName, - string controllerName, - object routeValues = null) - { - return url.Action(actionName, controllerName, routeValues, url.ActionContext.HttpContext.Request.Scheme); - } - - /// - /// Generates a fully qualified URL to the specified content by using the specified content path. Converts a - /// virtual (relative) path to an application absolute path. - /// - /// The URL helper. - /// The content path. - /// The absolute URL. - public static string AbsoluteContent( - this IUrlHelper url, - string contentPath) - { - HttpRequest request = url.ActionContext.HttpContext.Request; - return new Uri(new Uri(request.Scheme + "://" + request.Host.Value), url.Content(contentPath)).ToString(); - } - - /// - /// Generates a fully qualified URL to the specified route by using the route name and route values. - /// - /// The URL helper. - /// Name of the route. - /// The route values. - /// The absolute URL. - public static string AbsoluteRouteUrl( - this IUrlHelper url, - string routeName, - object routeValues = null) - { - return url.RouteUrl(routeName, routeValues, url.ActionContext.HttpContext.Request.Scheme); - } - } -} diff --git a/samples/Demo/Migrations/20171228051742_Initial.Designer.cs b/samples/Demo/Migrations/20171228051742_Initial.Designer.cs deleted file mode 100644 index 882a4d8..0000000 --- a/samples/Demo/Migrations/20171228051742_Initial.Designer.cs +++ /dev/null @@ -1,245 +0,0 @@ -// -using Demo.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.EntityFrameworkCore.Storage.Internal; -using System; - -namespace Demo.Migrations -{ - [DbContext(typeof(IdentityDbContext))] - [Migration("20171228051742_Initial")] - partial class Initial - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.0.1-rtm-125"); - - modelBuilder.Entity("Demo.Models.AppUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Demo.Models.ReceivedTextMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("From"); - - b.Property("ReceivedTime"); - - b.Property("To"); - - b.HasKey("Id"); - - b.ToTable("ReceivedTextMessages"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/samples/Demo/Migrations/20171228051742_Initial.cs b/samples/Demo/Migrations/20171228051742_Initial.cs deleted file mode 100644 index bdb1e48..0000000 --- a/samples/Demo/Migrations/20171228051742_Initial.cs +++ /dev/null @@ -1,236 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using System; -using System.Collections.Generic; - -namespace Demo.Migrations -{ - public partial class Initial : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AspNetRoles", - columns: table => new - { - Id = table.Column(nullable: false), - ConcurrencyStamp = table.Column(nullable: true), - Name = table.Column(maxLength: 256, nullable: true), - NormalizedName = table.Column(maxLength: 256, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetUsers", - columns: table => new - { - Id = table.Column(nullable: false), - AccessFailedCount = table.Column(nullable: false), - ConcurrencyStamp = table.Column(nullable: true), - Email = table.Column(maxLength: 256, nullable: true), - EmailConfirmed = table.Column(nullable: false), - LockoutEnabled = table.Column(nullable: false), - LockoutEnd = table.Column(nullable: true), - NormalizedEmail = table.Column(maxLength: 256, nullable: true), - NormalizedUserName = table.Column(maxLength: 256, nullable: true), - PasswordHash = table.Column(nullable: true), - PhoneNumber = table.Column(nullable: true), - PhoneNumberConfirmed = table.Column(nullable: false), - SecurityStamp = table.Column(nullable: true), - TwoFactorEnabled = table.Column(nullable: false), - UserName = table.Column(maxLength: 256, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUsers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "ReceivedTextMessages", - columns: table => new - { - Id = table.Column(nullable: false), - Content = table.Column(nullable: true), - From = table.Column(nullable: true), - ReceivedTime = table.Column(nullable: false), - To = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ReceivedTextMessages", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetRoleClaims", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - ClaimType = table.Column(nullable: true), - ClaimValue = table.Column(nullable: true), - RoleId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); - table.ForeignKey( - name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", - column: x => x.RoleId, - principalTable: "AspNetRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserClaims", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - ClaimType = table.Column(nullable: true), - ClaimValue = table.Column(nullable: true), - UserId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); - table.ForeignKey( - name: "FK_AspNetUserClaims_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserLogins", - columns: table => new - { - LoginProvider = table.Column(nullable: false), - ProviderKey = table.Column(nullable: false), - ProviderDisplayName = table.Column(nullable: true), - UserId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); - table.ForeignKey( - name: "FK_AspNetUserLogins_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserRoles", - columns: table => new - { - UserId = table.Column(nullable: false), - RoleId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); - table.ForeignKey( - name: "FK_AspNetUserRoles_AspNetRoles_RoleId", - column: x => x.RoleId, - principalTable: "AspNetRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_AspNetUserRoles_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserTokens", - columns: table => new - { - UserId = table.Column(nullable: false), - LoginProvider = table.Column(nullable: false), - Name = table.Column(nullable: false), - Value = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); - table.ForeignKey( - name: "FK_AspNetUserTokens_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_AspNetRoleClaims_RoleId", - table: "AspNetRoleClaims", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "RoleNameIndex", - table: "AspNetRoles", - column: "NormalizedName", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserClaims_UserId", - table: "AspNetUserClaims", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserLogins_UserId", - table: "AspNetUserLogins", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserRoles_RoleId", - table: "AspNetUserRoles", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "EmailIndex", - table: "AspNetUsers", - column: "NormalizedEmail"); - - migrationBuilder.CreateIndex( - name: "UserNameIndex", - table: "AspNetUsers", - column: "NormalizedUserName", - unique: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "AspNetRoleClaims"); - - migrationBuilder.DropTable( - name: "AspNetUserClaims"); - - migrationBuilder.DropTable( - name: "AspNetUserLogins"); - - migrationBuilder.DropTable( - name: "AspNetUserRoles"); - - migrationBuilder.DropTable( - name: "AspNetUserTokens"); - - migrationBuilder.DropTable( - name: "ReceivedTextMessages"); - - migrationBuilder.DropTable( - name: "AspNetRoles"); - - migrationBuilder.DropTable( - name: "AspNetUsers"); - } - } -} diff --git a/samples/Demo/Migrations/20190320025437_CleanIdentityDb.Designer.cs b/samples/Demo/Migrations/20190320025437_CleanIdentityDb.Designer.cs deleted file mode 100644 index 9dab8bc..0000000 --- a/samples/Demo/Migrations/20190320025437_CleanIdentityDb.Designer.cs +++ /dev/null @@ -1,225 +0,0 @@ -// -using System; -using Demo.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -namespace Demo.Migrations -{ - [DbContext(typeof(IdentityDbContext))] - [Migration("20190320025437_CleanIdentityDb")] - partial class CleanIdentityDb - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.8-servicing-32085"); - - modelBuilder.Entity("Demo.Models.AppUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/samples/Demo/Migrations/20190320025437_CleanIdentityDb.cs b/samples/Demo/Migrations/20190320025437_CleanIdentityDb.cs deleted file mode 100644 index 14dc859..0000000 --- a/samples/Demo/Migrations/20190320025437_CleanIdentityDb.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Demo.Migrations -{ - public partial class CleanIdentityDb : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ReceivedTextMessages"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "ReceivedTextMessages", - columns: table => new - { - Id = table.Column(nullable: false), - Content = table.Column(nullable: true), - From = table.Column(nullable: true), - ReceivedTime = table.Column(nullable: false), - To = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ReceivedTextMessages", x => x.Id); - }); - } - } -} diff --git a/samples/Demo/Migrations/AppDbContextModelSnapshot.cs b/samples/Demo/Migrations/AppDbContextModelSnapshot.cs deleted file mode 100644 index 6533086..0000000 --- a/samples/Demo/Migrations/AppDbContextModelSnapshot.cs +++ /dev/null @@ -1,223 +0,0 @@ -// -using System; -using Demo.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -namespace Demo.Migrations -{ - [DbContext(typeof(IdentityDbContext))] - partial class AppDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.8-servicing-32085"); - - modelBuilder.Entity("Demo.Models.AppUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider"); - - b.Property("ProviderKey"); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider"); - - b.Property("Name"); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Demo.Models.AppUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.Designer.cs b/samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.Designer.cs deleted file mode 100644 index a53bea6..0000000 --- a/samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.Designer.cs +++ /dev/null @@ -1,59 +0,0 @@ -// -using System; -using Demo.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -namespace Demo.Migrations.WeixinDb -{ - [DbContext(typeof(WeixinDbContext))] - [Migration("20190320025259_AddWeixinSubscribers")] - partial class AddWeixinSubscribers - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.8-servicing-32085"); - - modelBuilder.Entity("Demo.Models.ReceivedTextMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("From"); - - b.Property("ReceivedTime"); - - b.Property("To"); - - b.HasKey("Id"); - - b.ToTable("ReceivedTextMessages"); - }); - - modelBuilder.Entity("Demo.Models.WeixinSubscriber", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AvatorImage"); - - b.Property("Gender"); - - b.Property("NickName"); - - b.Property("OpenId"); - - b.HasKey("Id"); - - b.ToTable("Subscribers"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.cs b/samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.cs deleted file mode 100644 index c5563d3..0000000 --- a/samples/Demo/Migrations/WeixinDb/20190320025259_AddWeixinSubscribers.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Demo.Migrations.WeixinDb -{ - public partial class AddWeixinSubscribers : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "ReceivedTextMessages", - columns: table => new - { - Id = table.Column(nullable: false), - From = table.Column(nullable: true), - To = table.Column(nullable: true), - ReceivedTime = table.Column(nullable: false), - Content = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ReceivedTextMessages", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Subscribers", - columns: table => new - { - Id = table.Column(nullable: false), - OpenId = table.Column(nullable: true), - Gender = table.Column(nullable: true), - NickName = table.Column(nullable: true), - AvatorImage = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Subscribers", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ReceivedTextMessages"); - - migrationBuilder.DropTable( - name: "Subscribers"); - } - } -} diff --git a/samples/Demo/Migrations/WeixinDb/WeixinDbContextModelSnapshot.cs b/samples/Demo/Migrations/WeixinDb/WeixinDbContextModelSnapshot.cs deleted file mode 100644 index b3c0849..0000000 --- a/samples/Demo/Migrations/WeixinDb/WeixinDbContextModelSnapshot.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -using System; -using Demo.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -namespace Demo.Migrations.WeixinDb -{ - [DbContext(typeof(WeixinDbContext))] - partial class WeixinDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.8-servicing-32085"); - - modelBuilder.Entity("Demo.Models.ReceivedTextMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Content"); - - b.Property("From"); - - b.Property("ReceivedTime"); - - b.Property("To"); - - b.HasKey("Id"); - - b.ToTable("ReceivedTextMessages"); - }); - - modelBuilder.Entity("Demo.Models.WeixinSubscriber", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AvatorImage"); - - b.Property("Gender"); - - b.Property("NickName"); - - b.Property("OpenId"); - - b.HasKey("Id"); - - b.ToTable("Subscribers"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/samples/Demo/Models/Home/IndexViewModel.cs b/samples/Demo/Models/Home/IndexViewModel.cs deleted file mode 100644 index 265068a..0000000 --- a/samples/Demo/Models/Home/IndexViewModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models.Home -{ - public class IndexViewModel - { - public int SubscriberCount { get; set; } - public int ReceivedTextCount { get; set; } - } -} diff --git a/samples/Demo/Models/Home/SendWeixinViewModel.cs b/samples/Demo/Models/Home/SendWeixinViewModel.cs deleted file mode 100644 index ea91072..0000000 --- a/samples/Demo/Models/Home/SendWeixinViewModel.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models -{ - public class SendWeixinViewModel - { - public IList Received { get; set; } - - [Required] - public string OpenId { get; set; } - - [Required] - public string Content { get; set; } - } -} diff --git a/samples/Demo/Models/Weixin/JweixinViewModel.cs b/samples/Demo/Models/Weixin/JweixinViewModel.cs deleted file mode 100644 index e04e5fe..0000000 --- a/samples/Demo/Models/Weixin/JweixinViewModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -using AspNetCore.Weixin; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models -{ - public class JweixinViewModel - { - public string ConfigJson { get; set; } - } -} diff --git a/samples/Demo/Models/Weixin/ShareJweixinViewModel.cs b/samples/Demo/Models/Weixin/ShareJweixinViewModel.cs deleted file mode 100644 index 03c2c81..0000000 --- a/samples/Demo/Models/Weixin/ShareJweixinViewModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models -{ - public class ShareJweixinViewModel : JweixinViewModel - { - public string Url { get; set; } - public string Title { get; set; } - public string Description { get; set; } - public string ImgUrl { get; set; } - } -} diff --git a/samples/Demo/Models/Weixin/WeixinJsonViewModel.cs b/samples/Demo/Models/Weixin/WeixinJsonViewModel.cs deleted file mode 100644 index f581587..0000000 --- a/samples/Demo/Models/Weixin/WeixinJsonViewModel.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Threading.Tasks; - -namespace Demo.Models -{ - - public class WeixinJsonViewModel - { - public string AppId { get; set; } - - public string Token { get; set; } - - [MaxLength(102400)] - public string Json { get; set; } - } -} diff --git a/samples/Demo/Program.cs b/samples/Demo/Program.cs deleted file mode 100644 index 737f2b1..0000000 --- a/samples/Demo/Program.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Demo.Data; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Logging; - -namespace Demo -{ - public class Program - { - public static void Main(string[] args) - { - BuildWebHost(args) - .MigrateDatabase() - .SeedDatabase() - .Run(); - } - - public static IWebHost BuildWebHost(string[] args) => - WebHost.CreateDefaultBuilder(args) - .ConfigureAppConfiguration(ConfigureAppConfiguration) - .ConfigureLogging(ConfigureLogging) - .UseStartup() - .Build(); - - private static void ConfigureAppConfiguration(WebHostBuilderContext hostingContext, IConfigurationBuilder config) - { - var env = hostingContext.HostingEnvironment; - var environmentName = env.EnvironmentName; - - //1。使用默认配置文件。源码可见。通常直接在字段中填写配置说明。 - //2。使用secret.json。通常,不论是在开发者个人机,测试服务器,还是正式部署的服务器上,应当使用此配置文件。 - //3。在数据库开发者的个人机上,通常需要在Development和Production两种模式中频繁切换,此时我们可以创建x.Development.json来替换secret.json中的配置。 - //4。除了Development具有替换secret.json的能力,其他Environment也可能需要这种替换能力。 - config.SetBasePath(Directory.GetCurrentDirectory()) - //.SetBasePath(AppContext.BaseDirectory) - .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false) - .AddUserSecrets() - .AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: true); - } - - private static void ConfigureLogging(WebHostBuilderContext hostingContext, ILoggingBuilder logging) - { - logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); - logging.AddConsole(); - logging.AddDebug(); - } - - private static void DefaultServiceProvider(WebHostBuilderContext hostingContext, Microsoft.Extensions.DependencyInjection.ServiceProviderOptions options) - { - // To detect: InvalidOperationException: Cannot consume scoped service 'Ruhu.AppDbContext' from singleton 'Microsoft.AspNetCore.Authorization.IAuthorizationHandler'. - options.ValidateScopes = hostingContext.HostingEnvironment.IsDevelopment(); - } - } -} diff --git a/samples/Demo/Properties/launchSettings.json b/samples/Demo/Properties/launchSettings.json deleted file mode 100644 index cfb34d0..0000000 --- a/samples/Demo/Properties/launchSettings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:6606", - "sslPort": 0 - } - }, - "profiles": { - "Development": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "Production": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Production" - } - } - } -} \ No newline at end of file diff --git a/samples/Demo/Startup.cs b/samples/Demo/Startup.cs deleted file mode 100644 index 83c0e2a..0000000 --- a/samples/Demo/Startup.cs +++ /dev/null @@ -1,165 +0,0 @@ -using Myvas.AspNetCore.TencentSms; -using AspNetCore.Weixin; -using Demo.Applications; -using Demo.Data; -using Demo.Entities; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; -using System; - -namespace Demo -{ - public class Startup - { - public IConfiguration Configuration { get; } - - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - // This lambda determines whether user consent for non-essential cookies is needed for a given request. - options.CheckConsentNeeded = context => true; - options.MinimumSameSitePolicy = SameSiteMode.None; - }); - - services.AddDbContext(options => options.UseSqlite(Configuration.GetConnectionString("DefaultConnection"))); - services.AddDbContext(options => options.UseSqlite(Configuration.GetConnectionString("DefaultConnection"))); - - services.Configure(options => - { - options.Password = new PasswordOptions - { - RequireLowercase = false, - RequireUppercase = false, - RequireNonAlphanumeric = false, - RequireDigit = false - }; - options.User.RequireUniqueEmail = false; - options.SignIn.RequireConfirmedEmail = false; - - options.SignIn.RequireConfirmedPhoneNumber = true; - }); - services.ConfigureApplicationCookie(options => - { - // Cookie settings - options.Cookie.HttpOnly = true; - options.Cookie.Expiration = TimeSpan.FromDays(150); - // If the LoginPath isn't set, ASP.NET Core defaults - // the path to /Account/Login. - options.LoginPath = "/Account/Login"; - options.LogoutPath = "/Account/LogOff"; - // If the AccessDeniedPath isn't set, ASP.NET Core defaults - // the path to /Account/AccessDenied. - options.AccessDeniedPath = "/Account/AccessDenied"; - options.SlidingExpiration = true; - }); - services.AddIdentity() - .AddEntityFrameworkStores() - .AddUserManager() - .AddSignInManager>() - .AddDefaultTokenProviders() - .AddDefaultUI(); - services.AddAuthentication() - .AddWeixinOpen(options => - { - options.AppId = Configuration["WeixinOpen:AppId"]; - options.AppSecret = Configuration["WeixinOpen:AppSecret"]; - }) - .AddWeixinAuth(options => - { - options.AppId = Configuration["WeixinAuth:AppId"]; - options.AppSecret = Configuration["WeixinAuth:AppSecret"]; - }); - services.AddTencentSms(options => - { - options.SdkAppId = Configuration["QcloudSms:SdkAppId"]; - options.AppKey = Configuration["QcloudSms:AppKey"]; - }); - services.AddViewDivert(); - - services.AddWeixinAccessToken(options => - { - options.AppId = Configuration["Weixin:AppId"]; - options.AppSecret = Configuration["Weixin:AppSecret"]; - }); - services.AddWeixinJssdk(options => - { - options.AppId = Configuration["Weixin:AppId"]; - }); - services.AddScoped(); - var weixinEventSink = services.BuildServiceProvider().GetRequiredService(); - services.AddWeixinWelcomePage(options => - { - options.AppId = Configuration["Weixin:AppId"]; - options.AppSecret = Configuration["Weixin:AppSecret"]; - options.WebsiteToken = Configuration["Weixin:WebsiteToken"]; - options.EncodingAESKey = Configuration["Weixin:EncodingAESKey"]; - options.Path = "/wx"; - options.Events = new WeixinMessageEvents() - { - OnTextMessageReceived = ctx => weixinEventSink.OnTextMessageReceived(ctx.Sender, ctx.Args), - OnLinkMessageReceived = ctx => weixinEventSink.OnLinkMessageReceived(ctx.Sender, ctx.Args), - OnClickMenuEventReceived = ctx => weixinEventSink.OnClickMenuEventReceived(ctx.Sender, ctx.Args), - OnImageMessageReceived = ctx => weixinEventSink.OnImageMessageReceived(ctx.Sender, ctx.Args), - OnLocationEventReceived = ctx => weixinEventSink.OnLocationEventReceived(ctx.Sender, ctx.Args), - OnLocationMessageReceived = ctx => weixinEventSink.OnLocationMessageReceived(ctx.Sender, ctx.Args), - OnQrscanEventReceived = ctx => weixinEventSink.OnQrscanEventReceived(ctx.Sender, ctx.Args), - OnSubscribeEventReceived = ctx => weixinEventSink.OnSubscribeEventReceived(ctx.Sender, ctx.Args), - OnUnsubscribeEventReceived = ctx => weixinEventSink.OnUnsubscribeEventReceived(ctx.Sender, ctx.Args), - OnVideoMessageReceived = ctx => weixinEventSink.OnVideoMessageReceived(ctx.Sender, ctx.Args), - OnShortVideoMessageReceived = ctx => weixinEventSink.OnShortVideoMessageReceived(ctx.Sender, ctx.Args), - OnViewMenuEventReceived = ctx => weixinEventSink.OnViewMenuEventReceived(ctx.Sender, ctx.Args), - OnVoiceMessageReceived = ctx => weixinEventSink.OnVoiceMessageReceived(ctx.Sender, ctx.Args) - }; - }); - - services.AddMvc() - .SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_1); - - services.AddAuthorization(options => - { - options.AddPolicy("WeixinMenuManager", policy => policy.RequireUserName(IdentityDbInitializer.AdminUserName)); - }); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/Home/Error"); - //app.UseHsts(); - } - - //app.UseHttpsRedirection(); - app.UseStaticFiles(); - //app.UseCookiePolicy(); - - app.UseAuthentication(); - - app.UseWeixinWelcomePage(); - - app.UseMvc(routes => - { - routes.MapRoute( - name: "default", - template: "{controller=Home}/{action=Index}/{id?}"); - }); - } - } -} \ No newline at end of file diff --git a/samples/Demo/Views/Home/About.cshtml b/samples/Demo/Views/Home/About.cshtml deleted file mode 100644 index 429ce98..0000000 --- a/samples/Demo/Views/Home/About.cshtml +++ /dev/null @@ -1,12 +0,0 @@ - -@{ - ViewData["Title"] = "About"; -} - -

@ViewData["Title"]

- - -AspNetCore.Weixin -AspnetCore.Weixin.Jssdk - - diff --git a/samples/Demo/Views/Home/Index.cshtml b/samples/Demo/Views/Home/Index.cshtml deleted file mode 100644 index c0cc63a..0000000 --- a/samples/Demo/Views/Home/Index.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@model Demo.Models.Home.IndexViewModel -@{ - ViewData["Title"] = "Index"; -} - -
-
-
- -
请用微信扫描二维码关注测试公众号
-
- - -
-
- -
 
-
-
-
-

© 2016-2019 - Myvas.AspNetCore.Weixin

-
-
\ No newline at end of file diff --git a/samples/Demo/Views/Home/ReceivedText.cshtml b/samples/Demo/Views/Home/ReceivedText.cshtml deleted file mode 100644 index 819123f..0000000 --- a/samples/Demo/Views/Home/ReceivedText.cshtml +++ /dev/null @@ -1,45 +0,0 @@ -@model IEnumerable - -@{ - ViewData["Title"] = "Received Text"; -} - -

@ViewData["Title"] (@Model.Count())

- - -@foreach (var item in Model) -{ -
- @**@ -
- @*
- @item.From - @{ - switch (item.sex) - { - case 1: - - break; - case 2: - - break; - default: - break; - } - } -
*@ -
-
OpenId
-
-
@item.From
-
-
Content
-
@item.Content
-
Received Time
-
@item.ReceivedTime.ToLocalTime().ToString("yyyy-MM-dd hh:mm:ss")
-
- 发送微信消息 -
-
-
-} \ No newline at end of file diff --git a/samples/Demo/Views/Home/SendWeixin.cshtml b/samples/Demo/Views/Home/SendWeixin.cshtml deleted file mode 100644 index 14b41ff..0000000 --- a/samples/Demo/Views/Home/SendWeixin.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@model SendWeixinViewModel - -@{ - ViewData["Title"] = "Send Weixin Message"; -} - -

@ViewData["Title"]

- -
- @Html.AntiForgeryToken() -
-
- openid -
-
- -
-
- content -
-
- -
-
- -
\ No newline at end of file diff --git a/samples/Demo/Views/Home/Subscribers.cshtml b/samples/Demo/Views/Home/Subscribers.cshtml deleted file mode 100644 index 68be68d..0000000 --- a/samples/Demo/Views/Home/Subscribers.cshtml +++ /dev/null @@ -1,53 +0,0 @@ -@model ReturnableViewModel> - -@{ - ViewData["Title"] = "Subscribers"; -} - -

@ViewData["Title"]

- -@if (Model.Item == null) -{ -

No items found.

-} -else -{ - @foreach (var item in Model.Item) - { -
- -
-
- @item.nickname - @{ - switch (item.sex) - { - case 1: - - break; - case 2: - - break; - default: - break; - } - } -
-
-
OpenId
-
-
@item.openid
-
-
Province
-
@item.province
-
City
-
@item.city
-
Subscribe Time
-
@AspNetCore.Weixin.WeixinTimestampHelper.ToLocalTime(item.subscribe_time)
-
- 发送微信消息 -
-
-
- } -} \ No newline at end of file diff --git a/samples/Demo/Views/Jssdk/Index.cshtml b/samples/Demo/Views/Jssdk/Index.cshtml deleted file mode 100644 index 541fd8b..0000000 --- a/samples/Demo/Views/Jssdk/Index.cshtml +++ /dev/null @@ -1,46 +0,0 @@ -@model ShareJweixinViewModel -@{ - Layout = "_LayoutJweixin"; - ViewData["Title"] = "Index"; -} - -

Index

- -
Check JsApi
- -@section Scripts{ - -} \ No newline at end of file diff --git a/samples/Demo/Views/Shared/Error.cshtml b/samples/Demo/Views/Shared/Error.cshtml deleted file mode 100644 index 6c6d047..0000000 --- a/samples/Demo/Views/Shared/Error.cshtml +++ /dev/null @@ -1,14 +0,0 @@ -@{ - ViewData["Title"] = "Error"; -} - -

Error.

-

An error occurred while processing your request.

- -

Development Mode

-

- Swapping to Development environment will display more detailed information about the error that occurred. -

-

- Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application. -

diff --git a/samples/Demo/Views/Shared/_Layout.cshtml b/samples/Demo/Views/Shared/_Layout.cshtml deleted file mode 100644 index 17aea55..0000000 --- a/samples/Demo/Views/Shared/_Layout.cshtml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - @ViewData["Title"] - Demo - - - - - - - - - - - - -
- @RenderBody() -
- - - - - - - - - - - @RenderSection("scripts", required: false) - - diff --git a/samples/Demo/Views/Shared/_LayoutJweixin.cshtml b/samples/Demo/Views/Shared/_LayoutJweixin.cshtml deleted file mode 100644 index 504c4b9..0000000 --- a/samples/Demo/Views/Shared/_LayoutJweixin.cshtml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - @ViewData["Title"] - AspNetCore.Weixin Demo - - - - - - - - - - - - -
- @RenderBody() -
- - - - - - - - - - - - @RenderSection("scripts", required: false) - - diff --git a/samples/Demo/Views/Shared/_LoginPartial.cshtml b/samples/Demo/Views/Shared/_LoginPartial.cshtml deleted file mode 100644 index 3d8db48..0000000 --- a/samples/Demo/Views/Shared/_LoginPartial.cshtml +++ /dev/null @@ -1,23 +0,0 @@ -@inject Microsoft.AspNetCore.Identity.SignInManager SignInManager -@inject Microsoft.AspNetCore.Identity.UserManager UserManager - -@if (SignInManager.IsSignedIn(User)) -{ - -} -else -{ - -} diff --git a/samples/Demo/Views/WeixinMenu/Index.cshtml b/samples/Demo/Views/WeixinMenu/Index.cshtml deleted file mode 100644 index 0adaa4b..0000000 --- a/samples/Demo/Views/WeixinMenu/Index.cshtml +++ /dev/null @@ -1,57 +0,0 @@ -@* - WeixinMenu.cshtml -*@ - -@model WeixinJsonViewModel - -@{ - ViewData["Title"] = "微信菜单管理"; -} - - -
-
-
WeixinAccessToken
-
-
@Model.Token
- - -
-
-
- -
-
-
- - -
-
- - -
-
-
- -
-
- -
-

菜单获取的Json格式与菜单更新的Json不一样,请手动复制以下内容粘贴到[新菜单]输入框,然后点击提交。

-

-{
-	"button": [
-	{
-			"type": "view",
-			"name": "Home",
-			"url": "http://weixin.myvas.com/"
-	},
-	{
-			"type": "view",
-			"name": "About",
-			"url": "http://weixin.myvas.com/Home/About"
-		
-	}]
-}
-    
-
\ No newline at end of file diff --git a/samples/Demo/Views/WeixinMenu/UpdateMenuResult.cshtml b/samples/Demo/Views/WeixinMenu/UpdateMenuResult.cshtml deleted file mode 100644 index c886039..0000000 --- a/samples/Demo/Views/WeixinMenu/UpdateMenuResult.cshtml +++ /dev/null @@ -1,9 +0,0 @@ -@* - 微信菜单管理 -*@ -@model AspNetCore.Weixin.WeixinErrorJson -@{ - ViewData["Title"] = "微信菜单更新结果"; -} - -

[@Model.errcode] @Model.errmsg

diff --git a/samples/Demo/Views/_ViewImports.cshtml b/samples/Demo/Views/_ViewImports.cshtml deleted file mode 100644 index 9b7fc08..0000000 --- a/samples/Demo/Views/_ViewImports.cshtml +++ /dev/null @@ -1,6 +0,0 @@ -@using Demo -@using Demo.Entities -@using Demo.Models -@using AspNetCore.Weixin - -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers \ No newline at end of file diff --git a/samples/Demo/Views/_ViewStart.cshtml b/samples/Demo/Views/_ViewStart.cshtml deleted file mode 100644 index 6e88aa3..0000000 --- a/samples/Demo/Views/_ViewStart.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@{ - Layout = "_Layout"; -} diff --git a/samples/Demo/appsettings.json b/samples/Demo/appsettings.json deleted file mode 100644 index a6d8f86..0000000 --- a/samples/Demo/appsettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "ConnectionStrings:DefaultConnection": "Data Source=wxdemo.sqlite", - - "Weixin:AppId": "your appid of mp.weixin.qq.com account", - "Weixin:AppSecret": "your appsecret of mp.weixin.qq.com account", - "Weixin:WebsiteToken": "your token of website configuration in mp.weixin.qq.com", - "Weixin:EncodingAESKey": "your EncodingAESKey of message encryption configured in mp.weixin.qq.com", - - "WeixinOAuth:AppId": "your appid of mp.weixin.qq.com account", - "WeixinOAuth:AppSecret": "your appsecret of mp.weixin.qq.com account", - - "WeixinOpen:AppId": "your appid of open.weixin.qq.com account", - "WeixinOpen:AppSecret": "your appsecret of open.weixin.qq.com account", - - "QcloudSms:SdkAppId": "your SdkAppId of Qcloud SMS", - "QcloudSms:AppKey": "your AppKey of Qcloud SMS", - - "Logging": { - "IncludeScopes": true, - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" - }, - "Debug": { - "LogLevel": { - "Default": "Trace" - } - }, - "Console": { - "LogLevel": { - "Microsoft.EntityFrameworkCore.Database.Connection": "Debug", - "Microsoft.EntityFrameworkCore.Database.Command": "Debug", - "Microsoft.AspNetCore.Mvc.Razor.Internal": "Warning", - "Microsoft.AspNetCore.Mvc.Razor.Razor": "Warning", - "Microsoft.AspNetCore.Mvc.Razor": "Error", - "Default": "Debug" - } - } - } -} diff --git a/samples/Demo/bundleconfig.json b/samples/Demo/bundleconfig.json deleted file mode 100644 index a98e0c9..0000000 --- a/samples/Demo/bundleconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -// Configure bundling and minification for the project. -// More info at https://go.microsoft.com/fwlink/?LinkId=808241 -[ - { - "outputFileName": "wwwroot/css/site.min.css", - // An array of relative input file paths. Globbing patterns supported - "inputFiles": [ - "wwwroot/css/site.css" - ] - }, - { - "outputFileName": "wwwroot/js/site.min.js", - "inputFiles": [ - "wwwroot/js/site.js" - ], - // Optionally specify minification options - "minify": { - "enabled": true, - "renameLocals": true - }, - // Optinally generate .map file - "sourceMap": false - } -] diff --git a/samples/Demo/libman.json b/samples/Demo/libman.json deleted file mode 100644 index 43c27d3..0000000 --- a/samples/Demo/libman.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "version": "1.0", - "defaultProvider": "cdnjs", - "libraries": [ - { - "library": "jquery@3.3.1", - "destination": "wwwroot/lib/jquery/", - "files": [ - "jquery.min.js" - ] - }, - { - "provider": "cdnjs", - "library": "jquery-validate@1.19.0", - "destination": "wwwroot/lib/jquery-validate/", - "files": [ - "jquery.validate.min.js" - ] - }, - { - "provider": "cdnjs", - "library": "jquery-validation-unobtrusive@3.2.11", - "destination": "wwwroot/lib/jquery-validation-unobtrusive/", - "files": [ - "jquery.validate.unobtrusive.min.js" - ] - }, - { - "provider": "cdnjs", - "library": "twitter-bootstrap@4.3.1", - "destination": "wwwroot/lib/twitter-bootstrap/", - "files": [ - "js/bootstrap.bundle.min.js", - "css/bootstrap.min.css" - ] - }, - { - "provider": "cdnjs", - "library": "font-awesome@5.7.2", - "destination": "wwwroot/lib/font-awesome/", - "files": [ - "webfonts/fa-solid-900.eot", - "webfonts/fa-solid-900.ttf", - "webfonts/fa-solid-900.svg", - "webfonts/fa-solid-900.woff", - "webfonts/fa-solid-900.woff2", - "css/all.min.css" - ] - } - ] -} \ No newline at end of file diff --git a/samples/Demo/web.config b/samples/Demo/web.config deleted file mode 100644 index 2074105..0000000 --- a/samples/Demo/web.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - diff --git a/samples/Demo/wwwroot/MP_verify_MQuINXpToN5ZYtjc.txt b/samples/Demo/wwwroot/MP_verify_MQuINXpToN5ZYtjc.txt deleted file mode 100644 index 5b68eeb..0000000 --- a/samples/Demo/wwwroot/MP_verify_MQuINXpToN5ZYtjc.txt +++ /dev/null @@ -1 +0,0 @@ -MQuINXpToN5ZYtjc \ No newline at end of file diff --git a/samples/Demo/wwwroot/css/site.css b/samples/Demo/wwwroot/css/site.css deleted file mode 100644 index 3507b5b..0000000 --- a/samples/Demo/wwwroot/css/site.css +++ /dev/null @@ -1,43 +0,0 @@ -body { - padding-top: 50px; - padding-bottom: 20px; -} - -/* Set padding to keep content from hitting the edges */ -.body-content { - padding-left: 15px; - padding-right: 15px; -} - -/* Set width on the form input elements since they're 100% wide by default */ -input, -select, -textarea { - max-width: 280px; -} - -/* styles for validation helpers */ -.field-validation-error { - color: #b94a48; -} - -.field-validation-valid { - display: none; -} - -input.input-validation-error { - border: 1px solid #b94a48; -} - -input[type="checkbox"].input-validation-error { - border: 0 none; -} - -.validation-summary-errors { - color: #b94a48; -} - -.validation-summary-valid { - display: none; -} - diff --git a/samples/Demo/wwwroot/img/mp-test.jpg b/samples/Demo/wwwroot/img/mp-test.jpg deleted file mode 100644 index fbb146c2f435d69e33d286ca78dde78cfe3ea5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22708 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 b6gva~2tWV=5P$##AOHafKmY;|I3@5`wUr(~ diff --git a/samples/db-schema-update-20190320.sql b/samples/db-schema-update-20190320.sql deleted file mode 100644 index a22abdf..0000000 --- a/samples/db-schema-update-20190320.sql +++ /dev/null @@ -1,87 +0,0 @@ -BEGIN TRANSACTION; -CREATE TABLE "__EFMigrationsHistory" ( - "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY, - "ProductVersion" TEXT NOT NULL -); -CREATE TABLE "Subscribers" ( - "Id" TEXT NOT NULL CONSTRAINT "PK_Subscribers" PRIMARY KEY, - "OpenId" TEXT NULL, - "Gender" TEXT NULL, - "NickName" TEXT NULL, - "AvatorImage" TEXT NULL -); -CREATE TABLE "ReceivedTextMessages" ( - "Id" TEXT NOT NULL CONSTRAINT "PK_ReceivedTextMessages" PRIMARY KEY, - "From" TEXT NULL, - "To" TEXT NULL, - "ReceivedTime" TEXT NOT NULL, - "Content" TEXT NULL -); -CREATE TABLE "AspNetUsers" ( - "Id" TEXT NOT NULL CONSTRAINT "PK_AspNetUsers" PRIMARY KEY, - "AccessFailedCount" INTEGER NOT NULL, - "ConcurrencyStamp" TEXT NULL, - "Email" TEXT NULL, - "EmailConfirmed" INTEGER NOT NULL, - "LockoutEnabled" INTEGER NOT NULL, - "LockoutEnd" TEXT NULL, - "NormalizedEmail" TEXT NULL, - "NormalizedUserName" TEXT NULL, - "PasswordHash" TEXT NULL, - "PhoneNumber" TEXT NULL, - "PhoneNumberConfirmed" INTEGER NOT NULL, - "SecurityStamp" TEXT NULL, - "TwoFactorEnabled" INTEGER NOT NULL, - "UserName" TEXT NULL -); -CREATE TABLE "AspNetUserTokens" ( - "UserId" TEXT NOT NULL, - "LoginProvider" TEXT NOT NULL, - "Name" TEXT NOT NULL, - "Value" TEXT NULL, - CONSTRAINT "PK_AspNetUserTokens" PRIMARY KEY ("UserId", "LoginProvider", "Name"), - CONSTRAINT "FK_AspNetUserTokens_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE -); -CREATE TABLE "AspNetUserRoles" ( - "UserId" TEXT NOT NULL, - "RoleId" TEXT NOT NULL, - CONSTRAINT "PK_AspNetUserRoles" PRIMARY KEY ("UserId", "RoleId"), - CONSTRAINT "FK_AspNetUserRoles_AspNetRoles_RoleId" FOREIGN KEY ("RoleId") REFERENCES "AspNetRoles" ("Id") ON DELETE CASCADE, - CONSTRAINT "FK_AspNetUserRoles_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE -); -CREATE TABLE "AspNetUserLogins" ( - "LoginProvider" TEXT NOT NULL, - "ProviderKey" TEXT NOT NULL, - "ProviderDisplayName" TEXT NULL, - "UserId" TEXT NOT NULL, - CONSTRAINT "PK_AspNetUserLogins" PRIMARY KEY ("LoginProvider", "ProviderKey"), - CONSTRAINT "FK_AspNetUserLogins_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE -); -CREATE TABLE "AspNetUserClaims" ( - "Id" INTEGER NOT NULL CONSTRAINT "PK_AspNetUserClaims" PRIMARY KEY AUTOINCREMENT, - "ClaimType" TEXT NULL, - "ClaimValue" TEXT NULL, - "UserId" TEXT NOT NULL, - CONSTRAINT "FK_AspNetUserClaims_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE -); -CREATE TABLE "AspNetRoles" ( - "Id" TEXT NOT NULL CONSTRAINT "PK_AspNetRoles" PRIMARY KEY, - "ConcurrencyStamp" TEXT NULL, - "Name" TEXT NULL, - "NormalizedName" TEXT NULL -); -CREATE TABLE "AspNetRoleClaims" ( - "Id" INTEGER NOT NULL CONSTRAINT "PK_AspNetRoleClaims" PRIMARY KEY AUTOINCREMENT, - "ClaimType" TEXT NULL, - "ClaimValue" TEXT NULL, - "RoleId" TEXT NOT NULL, - CONSTRAINT "FK_AspNetRoleClaims_AspNetRoles_RoleId" FOREIGN KEY ("RoleId") REFERENCES "AspNetRoles" ("Id") ON DELETE CASCADE -); -CREATE UNIQUE INDEX "UserNameIndex" ON "AspNetUsers" ("NormalizedUserName"); -CREATE UNIQUE INDEX "RoleNameIndex" ON "AspNetRoles" ("NormalizedName"); -CREATE INDEX "IX_AspNetUserRoles_RoleId" ON "AspNetUserRoles" ("RoleId"); -CREATE INDEX "IX_AspNetUserLogins_UserId" ON "AspNetUserLogins" ("UserId"); -CREATE INDEX "IX_AspNetUserClaims_UserId" ON "AspNetUserClaims" ("UserId"); -CREATE INDEX "IX_AspNetRoleClaims_RoleId" ON "AspNetRoleClaims" ("RoleId"); -CREATE INDEX "EmailIndex" ON "AspNetUsers" ("NormalizedEmail"); -COMMIT; diff --git a/samples/wxdemo.sqlite b/samples/wxdemo.sqlite deleted file mode 100644 index 4356099b2247dda892c90afe4485a69adece3769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118784 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 m2teSx3*g`XpZ5sk_#glQ2tWV=5P$##AOHafKmY - - - netstandard2.0 - AspNetCore.Weixin.Jssdk - AspNetCore.Weixin.Jssdk - myvas;aspnetcore;weixin;jssdk - 2.1.509 - AspNetCore - AspNetCore.Weixin - AspNetCore.Weixin.Jssdk - https://github.com/myvas/AspNetCore.Weixin - https://github.com/myvas/AspNetCore.Weixin - - - - - - - - - - \ No newline at end of file diff --git a/src/Weixin.Jssdk/Builder/WeixinJssdkOptions.cs b/src/Weixin.Jssdk/Builder/WeixinJssdkOptions.cs index 9b1e9f5..b7bc296 100644 --- a/src/Weixin.Jssdk/Builder/WeixinJssdkOptions.cs +++ b/src/Weixin.Jssdk/Builder/WeixinJssdkOptions.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinJssdkOptions { diff --git a/src/Weixin.Jssdk/Builder/WeixinJssdkServiceCollectionExtensions.cs b/src/Weixin.Jssdk/Builder/WeixinJssdkServiceCollectionExtensions.cs index f421deb..65e06a8 100644 --- a/src/Weixin.Jssdk/Builder/WeixinJssdkServiceCollectionExtensions.cs +++ b/src/Weixin.Jssdk/Builder/WeixinJssdkServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; diff --git a/src/Weixin.Jssdk/CardApi/CardEx.cs b/src/Weixin.Jssdk/CardApi/CardEx.cs index 2b32828..c7ef64e 100644 --- a/src/Weixin.Jssdk/CardApi/CardEx.cs +++ b/src/Weixin.Jssdk/CardApi/CardEx.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class CardEx { diff --git a/src/Weixin.Jssdk/CardApiTicket/CardApiTicketApi.cs b/src/Weixin.Jssdk/CardApiTicket/CardApiTicketApi.cs index 8a0b550..1851fff 100644 --- a/src/Weixin.Jssdk/CardApiTicket/CardApiTicketApi.cs +++ b/src/Weixin.Jssdk/CardApiTicket/CardApiTicketApi.cs @@ -3,10 +3,10 @@ using System.Linq; using System.Text; using System.Globalization; -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 获取微信卡券调用凭证 diff --git a/src/Weixin.Jssdk/CardApiTicket/CardApiTicketJson.cs b/src/Weixin.Jssdk/CardApiTicket/CardApiTicketJson.cs index 394c3e8..024d7ec 100644 --- a/src/Weixin.Jssdk/CardApiTicket/CardApiTicketJson.cs +++ b/src/Weixin.Jssdk/CardApiTicket/CardApiTicketJson.cs @@ -1,7 +1,7 @@  -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信全局访问票据数据。调用微信API接口时必须。 diff --git a/src/Weixin.Jssdk/JsapiTicket/IWeixinJsapiTicket.cs b/src/Weixin.Jssdk/JsapiTicket/IWeixinJsapiTicket.cs index 7d56d65..0e53f03 100644 --- a/src/Weixin.Jssdk/JsapiTicket/IWeixinJsapiTicket.cs +++ b/src/Weixin.Jssdk/JsapiTicket/IWeixinJsapiTicket.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IWeixinJsapiTicket { diff --git a/src/Weixin.Jssdk/JsapiTicket/JsapiTicketApi.cs b/src/Weixin.Jssdk/JsapiTicket/JsapiTicketApi.cs index 8386d06..0ff02bd 100644 --- a/src/Weixin.Jssdk/JsapiTicket/JsapiTicketApi.cs +++ b/src/Weixin.Jssdk/JsapiTicket/JsapiTicketApi.cs @@ -3,10 +3,10 @@ using System.Linq; using System.Text; using System.Globalization; -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 获取微信凭证数据服务接口 diff --git a/src/Weixin.Jssdk/JsapiTicket/JsapiTicketJson.cs b/src/Weixin.Jssdk/JsapiTicket/JsapiTicketJson.cs index 44a2f59..09e04d1 100644 --- a/src/Weixin.Jssdk/JsapiTicket/JsapiTicketJson.cs +++ b/src/Weixin.Jssdk/JsapiTicket/JsapiTicketJson.cs @@ -1,7 +1,7 @@  -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信全局访问票据数据。调用微信API接口时必须。 diff --git a/src/Weixin.Jssdk/JsapiTicket/MemoryCachedWeixinJsapiTicket.cs b/src/Weixin.Jssdk/JsapiTicket/MemoryCachedWeixinJsapiTicket.cs index 9a7b2c6..8bb8535 100644 --- a/src/Weixin.Jssdk/JsapiTicket/MemoryCachedWeixinJsapiTicket.cs +++ b/src/Weixin.Jssdk/JsapiTicket/MemoryCachedWeixinJsapiTicket.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// jsapi_ticket是公众号用于调用微信JS接口的临时票据。 diff --git a/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketError.cs b/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketError.cs index 16e099b..922b383 100644 --- a/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketError.cs +++ b/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketError.cs @@ -1,6 +1,6 @@ using System; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { internal static class WeixinJsapiTicketError { diff --git a/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketException.cs b/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketException.cs index 37497b6..8774702 100644 --- a/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketException.cs +++ b/src/Weixin.Jssdk/JsapiTicket/WeixinJsapiTicketException.cs @@ -1,6 +1,6 @@ using System; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinJsapiTicketException : Exception { diff --git a/src/Weixin.Jssdk/Myvas.AspNetCore.Weixin.Jssdk.csproj b/src/Weixin.Jssdk/Myvas.AspNetCore.Weixin.Jssdk.csproj index a5953be..859f815 100644 --- a/src/Weixin.Jssdk/Myvas.AspNetCore.Weixin.Jssdk.csproj +++ b/src/Weixin.Jssdk/Myvas.AspNetCore.Weixin.Jssdk.csproj @@ -3,8 +3,8 @@ netstandard2.0 Myvas.AspNetCore.Weixin.Jssdk - 2.2.402.0 - 2.2.402-alpha0 + 2.2.403.3 + 2.2.403 MIT Myvas.AspNetCore.Weixin.Jssdk myvas;aspnetcore;weixin;jssdk @@ -15,11 +15,7 @@ https://github.com/myvas/AspNetCore.Weixin - - - - - - + + \ No newline at end of file diff --git a/src/Weixin.Jssdk/Signature/WeixinCardApiSignatureHelper.cs b/src/Weixin.Jssdk/Signature/WeixinCardApiSignatureHelper.cs index 75908b9..bc757b2 100644 --- a/src/Weixin.Jssdk/Signature/WeixinCardApiSignatureHelper.cs +++ b/src/Weixin.Jssdk/Signature/WeixinCardApiSignatureHelper.cs @@ -4,7 +4,7 @@ using System.Security.Cryptography; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixiCardApiSignatureHelper { diff --git a/src/Weixin.Jssdk/Signature/WeixinJssdkSignatureHelper.cs b/src/Weixin.Jssdk/Signature/WeixinJssdkSignatureHelper.cs index a025ef8..7a97ddd 100644 --- a/src/Weixin.Jssdk/Signature/WeixinJssdkSignatureHelper.cs +++ b/src/Weixin.Jssdk/Signature/WeixinJssdkSignatureHelper.cs @@ -4,7 +4,7 @@ using System.Security.Cryptography; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinJssdkSignatureHelper { diff --git a/src/Weixin.Jssdk/WeixinJsConfig.cs b/src/Weixin.Jssdk/WeixinJsConfig.cs index b10fed3..d068121 100644 --- a/src/Weixin.Jssdk/WeixinJsConfig.cs +++ b/src/Weixin.Jssdk/WeixinJsConfig.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinJsConfig { diff --git a/src/Weixin/AccessToken/AccessTokenApi.cs b/src/Weixin/AccessToken/AccessTokenApi.cs index 67dcb0a..ccd1c4f 100644 --- a/src/Weixin/AccessToken/AccessTokenApi.cs +++ b/src/Weixin/AccessToken/AccessTokenApi.cs @@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Http.Extensions; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 获取微信凭证数据服务接口 diff --git a/src/Weixin/AccessToken/AccessTokenJson.cs b/src/Weixin/AccessToken/AccessTokenJson.cs index a950ceb..35e3fae 100644 --- a/src/Weixin/AccessToken/AccessTokenJson.cs +++ b/src/Weixin/AccessToken/AccessTokenJson.cs @@ -1,5 +1,5 @@  -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信全局访问票据数据。调用微信API接口时必须。 diff --git a/src/Weixin/AccessToken/IWeixinAccessToken.cs b/src/Weixin/AccessToken/IWeixinAccessToken.cs index fb93845..f4e9c24 100644 --- a/src/Weixin/AccessToken/IWeixinAccessToken.cs +++ b/src/Weixin/AccessToken/IWeixinAccessToken.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IWeixinAccessToken { diff --git a/src/Weixin/AccessToken/MemoryCachedWeixinAccessToken.cs b/src/Weixin/AccessToken/MemoryCachedWeixinAccessToken.cs index 8c16192..04eb8c0 100644 --- a/src/Weixin/AccessToken/MemoryCachedWeixinAccessToken.cs +++ b/src/Weixin/AccessToken/MemoryCachedWeixinAccessToken.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// diff --git a/src/Weixin/AccessToken/WeixinAccessTokenError.cs b/src/Weixin/AccessToken/WeixinAccessTokenError.cs index 9030c29..dbaacb1 100644 --- a/src/Weixin/AccessToken/WeixinAccessTokenError.cs +++ b/src/Weixin/AccessToken/WeixinAccessTokenError.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { internal static class WeixinAccessTokenError { diff --git a/src/Weixin/AccessToken/WeixinAccessTokenException.cs b/src/Weixin/AccessToken/WeixinAccessTokenException.cs index 3c2e0fb..cb01df4 100644 --- a/src/Weixin/AccessToken/WeixinAccessTokenException.cs +++ b/src/Weixin/AccessToken/WeixinAccessTokenException.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinAccessTokenException : Exception diff --git a/src/Weixin/AccessToken/WeixinAccessTokenOptions.cs b/src/Weixin/AccessToken/WeixinAccessTokenOptions.cs index 3666c0e..c920a83 100644 --- a/src/Weixin/AccessToken/WeixinAccessTokenOptions.cs +++ b/src/Weixin/AccessToken/WeixinAccessTokenOptions.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinAccessTokenOptions : WeixinOptions { diff --git a/src/Weixin/AccessToken/WeixinAccessTokenServiceCollectionExtensions.cs b/src/Weixin/AccessToken/WeixinAccessTokenServiceCollectionExtensions.cs index ed1148c..ae1e501 100644 --- a/src/Weixin/AccessToken/WeixinAccessTokenServiceCollectionExtensions.cs +++ b/src/Weixin/AccessToken/WeixinAccessTokenServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.Extensions.DependencyInjection.Extensions; using System; diff --git a/src/Weixin/Apis/CustomerSupport/Custom.cs b/src/Weixin/Apis/CustomerSupport/Custom.cs index 5002812..d8502ba 100644 --- a/src/Weixin/Apis/CustomerSupport/Custom.cs +++ b/src/Weixin/Apis/CustomerSupport/Custom.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 客服接口 diff --git a/src/Weixin/Apis/GroupMessage/GroupMessage.cs b/src/Weixin/Apis/GroupMessage/GroupMessage.cs index b77d379..bc83147 100644 --- a/src/Weixin/Apis/GroupMessage/GroupMessage.cs +++ b/src/Weixin/Apis/GroupMessage/GroupMessage.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 高级群发接口 diff --git a/src/Weixin/Apis/GroupMessage/Models/NewsModel.cs b/src/Weixin/Apis/GroupMessage/Models/NewsModel.cs index 172256a..bf9a46b 100644 --- a/src/Weixin/Apis/GroupMessage/Models/NewsModel.cs +++ b/src/Weixin/Apis/GroupMessage/Models/NewsModel.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 图文消息模型 diff --git a/src/Weixin/Apis/GroupMessage/Models/SendResult.cs b/src/Weixin/Apis/GroupMessage/Models/SendResult.cs index bcbdd88..81624d7 100644 --- a/src/Weixin/Apis/GroupMessage/Models/SendResult.cs +++ b/src/Weixin/Apis/GroupMessage/Models/SendResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 发送信息后的结果 diff --git a/src/Weixin/Apis/Media/MediaApi.cs b/src/Weixin/Apis/Media/MediaApi.cs index 74fcc96..989bfae 100644 --- a/src/Weixin/Apis/Media/MediaApi.cs +++ b/src/Weixin/Apis/Media/MediaApi.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Newtonsoft.Json.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// diff --git a/src/Weixin/Apis/Media/MediaApiHelper.cs b/src/Weixin/Apis/Media/MediaApiHelper.cs index c556b8c..ed20933 100644 --- a/src/Weixin/Apis/Media/MediaApiHelper.cs +++ b/src/Weixin/Apis/Media/MediaApiHelper.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class MediaApiHelper diff --git a/src/Weixin/Apis/Media/Models/BatchGetMaterialsJson.cs b/src/Weixin/Apis/Media/Models/BatchGetMaterialsJson.cs index 5a65491..82ad95c 100644 --- a/src/Weixin/Apis/Media/Models/BatchGetMaterialsJson.cs +++ b/src/Weixin/Apis/Media/Models/BatchGetMaterialsJson.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class BatchGetMaterialsJson { diff --git a/src/Weixin/Apis/Media/Models/MaterialCountJson.cs b/src/Weixin/Apis/Media/Models/MaterialCountJson.cs index c0f85c5..de17a89 100644 --- a/src/Weixin/Apis/Media/Models/MaterialCountJson.cs +++ b/src/Weixin/Apis/Media/Models/MaterialCountJson.cs @@ -7,7 +7,7 @@ using Newtonsoft.Json.Linq; using System.Collections.Generic; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class MaterialCountJson { diff --git a/src/Weixin/Apis/Media/Models/MaterialType.cs b/src/Weixin/Apis/Media/Models/MaterialType.cs index 8c1a94c..526f01a 100644 --- a/src/Weixin/Apis/Media/Models/MaterialType.cs +++ b/src/Weixin/Apis/Media/Models/MaterialType.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public enum MaterialType { diff --git a/src/Weixin/Apis/Media/Models/MediaType.cs b/src/Weixin/Apis/Media/Models/MediaType.cs index b0869fd..a2469bc 100644 --- a/src/Weixin/Apis/Media/Models/MediaType.cs +++ b/src/Weixin/Apis/Media/Models/MediaType.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// diff --git a/src/Weixin/Apis/Media/Models/MediaUploadResultJson.cs b/src/Weixin/Apis/Media/Models/MediaUploadResultJson.cs index 349f883..e2e8c2b 100644 --- a/src/Weixin/Apis/Media/Models/MediaUploadResultJson.cs +++ b/src/Weixin/Apis/Media/Models/MediaUploadResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 上传媒体文件返回结果 diff --git a/src/Weixin/Apis/Media/Models/UploadMediaType.cs b/src/Weixin/Apis/Media/Models/UploadMediaType.cs index 56fe3c1..7ad6a80 100644 --- a/src/Weixin/Apis/Media/Models/UploadMediaType.cs +++ b/src/Weixin/Apis/Media/Models/UploadMediaType.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 可上传的多媒体文件格式 diff --git a/src/Weixin/Apis/Media/WeixinApiHelper.cs b/src/Weixin/Apis/Media/WeixinApiHelper.cs index 8ba9e0a..ea9d28d 100644 --- a/src/Weixin/Apis/Media/WeixinApiHelper.cs +++ b/src/Weixin/Apis/Media/WeixinApiHelper.cs @@ -1,7 +1,7 @@ using Newtonsoft.Json.Linq; using System; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinApiHelper { diff --git a/src/Weixin/Apis/Menu/MenuApi.cs b/src/Weixin/Apis/Menu/MenuApi.cs index 55544af..56c6c40 100644 --- a/src/Weixin/Apis/Menu/MenuApi.cs +++ b/src/Weixin/Apis/Menu/MenuApi.cs @@ -6,10 +6,10 @@ using System.Threading.Tasks; using System.Net.Http; using Newtonsoft.Json.Linq; -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using System.Net.Http.Headers; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class MenuApi { diff --git a/src/Weixin/Apis/Menu/Models/AbstractMenuButton.cs b/src/Weixin/Apis/Menu/Models/AbstractMenuButton.cs index bb4f225..d74acfe 100644 --- a/src/Weixin/Apis/Menu/Models/AbstractMenuButton.cs +++ b/src/Weixin/Apis/Menu/Models/AbstractMenuButton.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 所有单击按钮的基类(view,click等) diff --git a/src/Weixin/Apis/Menu/Models/ButtonGroup.cs b/src/Weixin/Apis/Menu/Models/ButtonGroup.cs index c26193c..c09e573 100644 --- a/src/Weixin/Apis/Menu/Models/ButtonGroup.cs +++ b/src/Weixin/Apis/Menu/Models/ButtonGroup.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 整个按钮设置(可以直接用ButtonGroup实例返回JSON对象) diff --git a/src/Weixin/Apis/Menu/Models/ClickMenuButton.cs b/src/Weixin/Apis/Menu/Models/ClickMenuButton.cs index a43b5af..bddfda8 100644 --- a/src/Weixin/Apis/Menu/Models/ClickMenuButton.cs +++ b/src/Weixin/Apis/Menu/Models/ClickMenuButton.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 单个按键 diff --git a/src/Weixin/Apis/Menu/Models/GetMenuResult.cs b/src/Weixin/Apis/Menu/Models/GetMenuResult.cs index 240e78a..ac3f8db 100644 --- a/src/Weixin/Apis/Menu/Models/GetMenuResult.cs +++ b/src/Weixin/Apis/Menu/Models/GetMenuResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// GetMenu返回的Json结果 diff --git a/src/Weixin/Apis/Menu/Models/GetMenuResultJson.cs b/src/Weixin/Apis/Menu/Models/GetMenuResultJson.cs index df312ee..dc87417 100644 --- a/src/Weixin/Apis/Menu/Models/GetMenuResultJson.cs +++ b/src/Weixin/Apis/Menu/Models/GetMenuResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 获取菜单时候的完整结构,用于接收微信服务器返回的Json信息 diff --git a/src/Weixin/Apis/Menu/Models/MenuButton.cs b/src/Weixin/Apis/Menu/Models/MenuButton.cs index 19830ad..a2ba65a 100644 --- a/src/Weixin/Apis/Menu/Models/MenuButton.cs +++ b/src/Weixin/Apis/Menu/Models/MenuButton.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IMenuButton { diff --git a/src/Weixin/Apis/Menu/Models/SubMenuButton.cs b/src/Weixin/Apis/Menu/Models/SubMenuButton.cs index fcd6dfe..133dc98 100644 --- a/src/Weixin/Apis/Menu/Models/SubMenuButton.cs +++ b/src/Weixin/Apis/Menu/Models/SubMenuButton.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 子菜单 diff --git a/src/Weixin/Apis/Menu/Models/ViewMenuButton.cs b/src/Weixin/Apis/Menu/Models/ViewMenuButton.cs index 96f4934..3d11974 100644 --- a/src/Weixin/Apis/Menu/Models/ViewMenuButton.cs +++ b/src/Weixin/Apis/Menu/Models/ViewMenuButton.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Url按键 diff --git a/src/Weixin/Apis/Menu/Models/WeixinMenuResponse.cs b/src/Weixin/Apis/Menu/Models/WeixinMenuResponse.cs index d252178..fe8ed18 100644 --- a/src/Weixin/Apis/Menu/Models/WeixinMenuResponse.cs +++ b/src/Weixin/Apis/Menu/Models/WeixinMenuResponse.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin.Menu +namespace Myvas.AspNetCore.Weixin.Menu { public class WeixinMenuResponse { diff --git a/src/Weixin/Apis/QrCode/Models/CreateQrCodeResult.cs b/src/Weixin/Apis/QrCode/Models/CreateQrCodeResult.cs index c28b810..32540da 100644 --- a/src/Weixin/Apis/QrCode/Models/CreateQrCodeResult.cs +++ b/src/Weixin/Apis/QrCode/Models/CreateQrCodeResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 二维码创建返回结果 diff --git a/src/Weixin/Apis/QrCode/QrCode.cs b/src/Weixin/Apis/QrCode/QrCode.cs index 0b8d00f..3e05a89 100644 --- a/src/Weixin/Apis/QrCode/QrCode.cs +++ b/src/Weixin/Apis/QrCode/QrCode.cs @@ -1,10 +1,8 @@ -using Microsoft.AspNetCore.Mvc; -using System.IO; +using System.IO; using System.Net; -using System.Text.Encodings.Web; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { //API:http://mp.weixin.qq.com/wiki/index.php?title=%E7%94%9F%E6%88%90%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81 diff --git a/src/Weixin/Apis/User/Models/UserGetJson.cs b/src/Weixin/Apis/User/Models/UserGetJson.cs index 077be0f..fb9c02f 100644 --- a/src/Weixin/Apis/User/Models/UserGetJson.cs +++ b/src/Weixin/Apis/User/Models/UserGetJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 本批次拿到的订阅者OpenId列表 diff --git a/src/Weixin/Apis/User/Models/UserInfoJson.cs b/src/Weixin/Apis/User/Models/UserInfoJson.cs index 454b88c..0e6ee80 100644 --- a/src/Weixin/Apis/User/Models/UserInfoJson.cs +++ b/src/Weixin/Apis/User/Models/UserInfoJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 订阅者资料 diff --git a/src/Weixin/Apis/User/Models/WeixinLanguage.cs b/src/Weixin/Apis/User/Models/WeixinLanguage.cs index 60457be..37747b5 100644 --- a/src/Weixin/Apis/User/Models/WeixinLanguage.cs +++ b/src/Weixin/Apis/User/Models/WeixinLanguage.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信语言代码。代码规则同国际通用标准。 diff --git a/src/Weixin/Apis/User/UserApi.cs b/src/Weixin/Apis/User/UserApi.cs index 108ed5a..fc8028f 100644 --- a/src/Weixin/Apis/User/UserApi.cs +++ b/src/Weixin/Apis/User/UserApi.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 用户接口 diff --git a/src/Weixin/Apis/UserGroup/Groups.cs b/src/Weixin/Apis/UserGroup/Groups.cs index bf05233..914b751 100644 --- a/src/Weixin/Apis/UserGroup/Groups.cs +++ b/src/Weixin/Apis/UserGroup/Groups.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 用户组接口 diff --git a/src/Weixin/Apis/UserGroup/Models/CreateGroupResult.cs b/src/Weixin/Apis/UserGroup/Models/CreateGroupResult.cs index 84d2ebc..fa9ed98 100644 --- a/src/Weixin/Apis/UserGroup/Models/CreateGroupResult.cs +++ b/src/Weixin/Apis/UserGroup/Models/CreateGroupResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 创建分组返回结果 diff --git a/src/Weixin/Apis/UserGroup/Models/GetGroupIdResult.cs b/src/Weixin/Apis/UserGroup/Models/GetGroupIdResult.cs index 7742b71..d841285 100644 --- a/src/Weixin/Apis/UserGroup/Models/GetGroupIdResult.cs +++ b/src/Weixin/Apis/UserGroup/Models/GetGroupIdResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 获取用户分组ID返回结果 diff --git a/src/Weixin/Apis/UserGroup/Models/GroupsJson.cs b/src/Weixin/Apis/UserGroup/Models/GroupsJson.cs index 950380a..56f20fa 100644 --- a/src/Weixin/Apis/UserGroup/Models/GroupsJson.cs +++ b/src/Weixin/Apis/UserGroup/Models/GroupsJson.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class GroupsJson : WeixinErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/Ad.cs b/src/Weixin/Apis/Wifi/Models/Ad.cs index 036a664..8a35160 100644 --- a/src/Weixin/Apis/Wifi/Models/Ad.cs +++ b/src/Weixin/Apis/Wifi/Models/Ad.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信WiFi无线访问点(AP)信息 diff --git a/src/Weixin/Apis/Wifi/Models/AdDetail.cs b/src/Weixin/Apis/Wifi/Models/AdDetail.cs index 2080ecd..a1cdbee 100644 --- a/src/Weixin/Apis/Wifi/Models/AdDetail.cs +++ b/src/Weixin/Apis/Wifi/Models/AdDetail.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class AdDetail { diff --git a/src/Weixin/Apis/Wifi/Models/AdDetail_Template1.cs b/src/Weixin/Apis/Wifi/Models/AdDetail_Template1.cs index 484476e..77c9bf4 100644 --- a/src/Weixin/Apis/Wifi/Models/AdDetail_Template1.cs +++ b/src/Weixin/Apis/Wifi/Models/AdDetail_Template1.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class AdDetail_Template1 : AdDetail { diff --git a/src/Weixin/Apis/Wifi/Models/AdDetail_Template2.cs b/src/Weixin/Apis/Wifi/Models/AdDetail_Template2.cs index ad9e9db..3c6aff3 100644 --- a/src/Weixin/Apis/Wifi/Models/AdDetail_Template2.cs +++ b/src/Weixin/Apis/Wifi/Models/AdDetail_Template2.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class AdDetail_Template2 : AdDetail { diff --git a/src/Weixin/Apis/Wifi/Models/ApInfo.cs b/src/Weixin/Apis/Wifi/Models/ApInfo.cs index 6b68c5c..be3809f 100644 --- a/src/Weixin/Apis/Wifi/Models/ApInfo.cs +++ b/src/Weixin/Apis/Wifi/Models/ApInfo.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信WiFi无线访问点(AP)信息 diff --git a/src/Weixin/Apis/Wifi/Models/ApOnlineData.cs b/src/Weixin/Apis/Wifi/Models/ApOnlineData.cs index 1bfddab..dde1afd 100644 --- a/src/Weixin/Apis/Wifi/Models/ApOnlineData.cs +++ b/src/Weixin/Apis/Wifi/Models/ApOnlineData.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 需要推送给腾讯服务器的AP心跳数据 diff --git a/src/Weixin/Apis/Wifi/Models/DailyStat.cs b/src/Weixin/Apis/Wifi/Models/DailyStat.cs index dcf1ff2..1e690bb 100644 --- a/src/Weixin/Apis/Wifi/Models/DailyStat.cs +++ b/src/Weixin/Apis/Wifi/Models/DailyStat.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class DailyStat { diff --git a/src/Weixin/Apis/Wifi/Models/GetApplyShopResultJson.cs b/src/Weixin/Apis/Wifi/Models/GetApplyShopResultJson.cs index 81fadd2..6a5bb0f 100644 --- a/src/Weixin/Apis/Wifi/Models/GetApplyShopResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/GetApplyShopResultJson.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class GetApplyShopResultJson : WifiErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/GetAuditStatusResultJson.cs b/src/Weixin/Apis/Wifi/Models/GetAuditStatusResultJson.cs index 506300f..41a78fb 100644 --- a/src/Weixin/Apis/Wifi/Models/GetAuditStatusResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/GetAuditStatusResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class GetAuditStatusResultJson : WifiErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/GetPublishedAdResultJson.cs b/src/Weixin/Apis/Wifi/Models/GetPublishedAdResultJson.cs index 8a20ca7..714e248 100644 --- a/src/Weixin/Apis/Wifi/Models/GetPublishedAdResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/GetPublishedAdResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class GetPublishedAdResultJson : WifiErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/GetQrcodeParam.cs b/src/Weixin/Apis/Wifi/Models/GetQrcodeParam.cs index 7875845..c4d51c5 100644 --- a/src/Weixin/Apis/Wifi/Models/GetQrcodeParam.cs +++ b/src/Weixin/Apis/Wifi/Models/GetQrcodeParam.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class GetQrcodeParam { diff --git a/src/Weixin/Apis/Wifi/Models/GetQrcodeResultJson.cs b/src/Weixin/Apis/Wifi/Models/GetQrcodeResultJson.cs index 986b139..8e28001 100644 --- a/src/Weixin/Apis/Wifi/Models/GetQrcodeResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/GetQrcodeResultJson.cs @@ -1,5 +1,5 @@  -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 获取微信WIFI二维码图片的接口返回Json。 diff --git a/src/Weixin/Apis/Wifi/Models/GetWhiteListResultJson.cs b/src/Weixin/Apis/Wifi/Models/GetWhiteListResultJson.cs index f750a1a..baf64b8 100644 --- a/src/Weixin/Apis/Wifi/Models/GetWhiteListResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/GetWhiteListResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class GetWhiteListResultJson : WifiErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/IconAd.cs b/src/Weixin/Apis/Wifi/Models/IconAd.cs index 7486296..1f013b9 100644 --- a/src/Weixin/Apis/Wifi/Models/IconAd.cs +++ b/src/Weixin/Apis/Wifi/Models/IconAd.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class IconAd { diff --git a/src/Weixin/Apis/Wifi/Models/IconAd1.cs b/src/Weixin/Apis/Wifi/Models/IconAd1.cs index 2852c8f..680a970 100644 --- a/src/Weixin/Apis/Wifi/Models/IconAd1.cs +++ b/src/Weixin/Apis/Wifi/Models/IconAd1.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class IconAd1 : IconAd { diff --git a/src/Weixin/Apis/Wifi/Models/IconAd2.cs b/src/Weixin/Apis/Wifi/Models/IconAd2.cs index efdeae3..fe3316b 100644 --- a/src/Weixin/Apis/Wifi/Models/IconAd2.cs +++ b/src/Weixin/Apis/Wifi/Models/IconAd2.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class IconAd2 : IconAd { diff --git a/src/Weixin/Apis/Wifi/Models/NoticeWeixinInfoAction.cs b/src/Weixin/Apis/Wifi/Models/NoticeWeixinInfoAction.cs index ce476a7..ca3a099 100644 --- a/src/Weixin/Apis/Wifi/Models/NoticeWeixinInfoAction.cs +++ b/src/Weixin/Apis/Wifi/Models/NoticeWeixinInfoAction.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Wi-Fi服务提供商通知微信触发验证通知,或Wi-Fi服务提供商通知微信用户登录结果 diff --git a/src/Weixin/Apis/Wifi/Models/SetAdResultJson.cs b/src/Weixin/Apis/Wifi/Models/SetAdResultJson.cs index 8fc71b6..8115d56 100644 --- a/src/Weixin/Apis/Wifi/Models/SetAdResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/SetAdResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class SetAdResultJson : WifiErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/SetApInfoParam.cs b/src/Weixin/Apis/Wifi/Models/SetApInfoParam.cs index 03b3449..4678e5d 100644 --- a/src/Weixin/Apis/Wifi/Models/SetApInfoParam.cs +++ b/src/Weixin/Apis/Wifi/Models/SetApInfoParam.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class SetApInfoParam { diff --git a/src/Weixin/Apis/Wifi/Models/SetApResultJson.cs b/src/Weixin/Apis/Wifi/Models/SetApResultJson.cs index 7a95012..8fc92e6 100644 --- a/src/Weixin/Apis/Wifi/Models/SetApResultJson.cs +++ b/src/Weixin/Apis/Wifi/Models/SetApResultJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class SetApResultJson : WifiErrorJson { diff --git a/src/Weixin/Apis/Wifi/Models/ShopApplyForm.cs b/src/Weixin/Apis/Wifi/Models/ShopApplyForm.cs index b7f7894..df1d238 100644 --- a/src/Weixin/Apis/Wifi/Models/ShopApplyForm.cs +++ b/src/Weixin/Apis/Wifi/Models/ShopApplyForm.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class ShopApplyForm { diff --git a/src/Weixin/Apis/Wifi/Models/WifiErrorJson.cs b/src/Weixin/Apis/Wifi/Models/WifiErrorJson.cs index 94141df..1ca31aa 100644 --- a/src/Weixin/Apis/Wifi/Models/WifiErrorJson.cs +++ b/src/Weixin/Apis/Wifi/Models/WifiErrorJson.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信WiFi相关API返回值(JSON) diff --git a/src/Weixin/Apis/Wifi/WifiApi.cs b/src/Weixin/Apis/Wifi/WifiApi.cs index 42d77d5..4ccee3e 100644 --- a/src/Weixin/Apis/Wifi/WifiApi.cs +++ b/src/Weixin/Apis/Wifi/WifiApi.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信扫一扫WiFi接口(V0.8) diff --git a/src/Weixin/Basic/Base/BaseApi.cs b/src/Weixin/Basic/Base/BaseApi.cs index e8d9541..f30c788 100644 --- a/src/Weixin/Basic/Base/BaseApi.cs +++ b/src/Weixin/Basic/Base/BaseApi.cs @@ -6,7 +6,7 @@ using System.Text; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信基础功能接口 diff --git a/src/Weixin/Basic/Base/MessageSend.cs b/src/Weixin/Basic/Base/MessageSend.cs index f4ffb95..ebf3109 100644 --- a/src/Weixin/Basic/Base/MessageSend.cs +++ b/src/Weixin/Basic/Base/MessageSend.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public enum MessageSendType { diff --git a/src/Weixin/Basic/Base/RequestMessageFactory.cs b/src/Weixin/Basic/Base/RequestMessageFactory.cs index f3fd6b8..a379ec8 100644 --- a/src/Weixin/Basic/Base/RequestMessageFactory.cs +++ b/src/Weixin/Basic/Base/RequestMessageFactory.cs @@ -6,7 +6,7 @@ using System.Xml; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class RequestMessageFactory { diff --git a/src/Weixin/Basic/Base/ResponseMessageFactory.cs b/src/Weixin/Basic/Base/ResponseMessageFactory.cs index 338959a..9e648bd 100644 --- a/src/Weixin/Basic/Base/ResponseMessageFactory.cs +++ b/src/Weixin/Basic/Base/ResponseMessageFactory.cs @@ -6,7 +6,7 @@ using System.Xml; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class ResponseMessageFactory { diff --git a/src/Weixin/Basic/Context/MessageContext.cs b/src/Weixin/Basic/Context/MessageContext.cs index 80f3c3c..1414606 100644 --- a/src/Weixin/Basic/Context/MessageContext.cs +++ b/src/Weixin/Basic/Context/MessageContext.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IMessageContext { diff --git a/src/Weixin/Basic/Context/MessageQueueCollection.cs b/src/Weixin/Basic/Context/MessageQueueCollection.cs index b3ba7d7..733a6c7 100644 --- a/src/Weixin/Basic/Context/MessageQueueCollection.cs +++ b/src/Weixin/Basic/Context/MessageQueueCollection.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信消息列队(针对单个账号的往来消息) diff --git a/src/Weixin/Basic/Context/WeixinContext.cs b/src/Weixin/Basic/Context/WeixinContext.cs index b37d23a..2cf8a0d 100644 --- a/src/Weixin/Basic/Context/WeixinContext.cs +++ b/src/Weixin/Basic/Context/WeixinContext.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinContextGlobal { diff --git a/src/Weixin/Basic/Context/WeixinContextEventArgs.cs b/src/Weixin/Basic/Context/WeixinContextEventArgs.cs index ebd0139..d657e40 100644 --- a/src/Weixin/Basic/Context/WeixinContextEventArgs.cs +++ b/src/Weixin/Basic/Context/WeixinContextEventArgs.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 对话上下文被删除时触发事件的事件数据 diff --git a/src/Weixin/Basic/Context/WeixinMessageCollection.cs b/src/Weixin/Basic/Context/WeixinMessageCollection.cs index 0e40eb2..c2b6c12 100644 --- a/src/Weixin/Basic/Context/WeixinMessageCollection.cs +++ b/src/Weixin/Basic/Context/WeixinMessageCollection.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinMessageCollection : List { diff --git a/src/Weixin/Basic/Entities/BaiduMap/BaiduMapMarkers.cs b/src/Weixin/Basic/Entities/BaiduMap/BaiduMapMarkers.cs index 988ea1a..e43d0a6 100644 --- a/src/Weixin/Basic/Entities/BaiduMap/BaiduMapMarkers.cs +++ b/src/Weixin/Basic/Entities/BaiduMap/BaiduMapMarkers.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 标记大小 diff --git a/src/Weixin/Basic/Entities/GoogleMap/GoogleMapMarkers.cs b/src/Weixin/Basic/Entities/GoogleMap/GoogleMapMarkers.cs index 56fbaeb..89f9314 100644 --- a/src/Weixin/Basic/Entities/GoogleMap/GoogleMapMarkers.cs +++ b/src/Weixin/Basic/Entities/GoogleMap/GoogleMapMarkers.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 标记大小 diff --git a/src/Weixin/Basic/Entities/JsonResult/OAuthAccessTokenResult.cs b/src/Weixin/Basic/Entities/JsonResult/OAuthAccessTokenResult.cs index 828f7ed..5d0d015 100644 --- a/src/Weixin/Basic/Entities/JsonResult/OAuthAccessTokenResult.cs +++ b/src/Weixin/Basic/Entities/JsonResult/OAuthAccessTokenResult.cs @@ -3,6 +3,6 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { } diff --git a/src/Weixin/Basic/Entities/JsonResult/UploadMediaResult.cs b/src/Weixin/Basic/Entities/JsonResult/UploadMediaResult.cs index 33a1bf6..1b30b3e 100644 --- a/src/Weixin/Basic/Entities/JsonResult/UploadMediaResult.cs +++ b/src/Weixin/Basic/Entities/JsonResult/UploadMediaResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 上传媒体文件返回结果 diff --git a/src/Weixin/Basic/Entities/JsonResult/UserInfoResult.cs b/src/Weixin/Basic/Entities/JsonResult/UserInfoResult.cs index 87baa77..4da32f7 100644 --- a/src/Weixin/Basic/Entities/JsonResult/UserInfoResult.cs +++ b/src/Weixin/Basic/Entities/JsonResult/UserInfoResult.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class UserInfoResult { diff --git a/src/Weixin/Basic/Entities/Message/MessageBase.cs b/src/Weixin/Basic/Entities/Message/MessageBase.cs index fae21f5..570483d 100644 --- a/src/Weixin/Basic/Entities/Message/MessageBase.cs +++ b/src/Weixin/Basic/Entities/Message/MessageBase.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IMessageBase { diff --git a/src/Weixin/Basic/Entities/Message/MessageCategorycs.cs b/src/Weixin/Basic/Entities/Message/MessageCategorycs.cs index 5ea9cae..53367fc 100644 --- a/src/Weixin/Basic/Entities/Message/MessageCategorycs.cs +++ b/src/Weixin/Basic/Entities/Message/MessageCategorycs.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信图文混排 diff --git a/src/Weixin/Basic/Entities/Message/RequestMessageBase.cs b/src/Weixin/Basic/Entities/Message/RequestMessageBase.cs index cca4a15..030f031 100644 --- a/src/Weixin/Basic/Entities/Message/RequestMessageBase.cs +++ b/src/Weixin/Basic/Entities/Message/RequestMessageBase.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IRequestMessageBase : IMessageBase { diff --git a/src/Weixin/Basic/Entities/Message/RequestMessageEventBase.cs b/src/Weixin/Basic/Entities/Message/RequestMessageEventBase.cs index a0619f0..c1c6afd 100644 --- a/src/Weixin/Basic/Entities/Message/RequestMessageEventBase.cs +++ b/src/Weixin/Basic/Entities/Message/RequestMessageEventBase.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IRequestMessageEventBase : IRequestMessageBase { diff --git a/src/Weixin/Basic/Entities/Message/RequestMessageEvents.cs b/src/Weixin/Basic/Entities/Message/RequestMessageEvents.cs index 44706c4..f62cec5 100644 --- a/src/Weixin/Basic/Entities/Message/RequestMessageEvents.cs +++ b/src/Weixin/Basic/Entities/Message/RequestMessageEvents.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 事件之URL跳转视图(View) diff --git a/src/Weixin/Basic/Entities/Message/RequestMessages.cs b/src/Weixin/Basic/Entities/Message/RequestMessages.cs index 620539e..557c0fb 100644 --- a/src/Weixin/Basic/Entities/Message/RequestMessages.cs +++ b/src/Weixin/Basic/Entities/Message/RequestMessages.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class RequestMessageText : RequestMessageBase, IRequestMessageBase { diff --git a/src/Weixin/Basic/Entities/Message/ResponseMessageBase.cs b/src/Weixin/Basic/Entities/Message/ResponseMessageBase.cs index 20fd587..5874164 100644 --- a/src/Weixin/Basic/Entities/Message/ResponseMessageBase.cs +++ b/src/Weixin/Basic/Entities/Message/ResponseMessageBase.cs @@ -5,7 +5,7 @@ using System.Xml.Linq; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IResponseMessageBase : IMessageBase { diff --git a/src/Weixin/Basic/Entities/Message/ResponseMessages.cs b/src/Weixin/Basic/Entities/Message/ResponseMessages.cs index 01f55e5..83810be 100644 --- a/src/Weixin/Basic/Entities/Message/ResponseMessages.cs +++ b/src/Weixin/Basic/Entities/Message/ResponseMessages.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 将消息转发到客服,暂不支持将消息转发到指定客服!!! diff --git a/src/Weixin/Basic/Events/Context/BaseContext.cs b/src/Weixin/Basic/Events/Context/BaseContext.cs index 6e9e1c7..59aee4e 100644 --- a/src/Weixin/Basic/Events/Context/BaseContext.cs +++ b/src/Weixin/Basic/Events/Context/BaseContext.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public abstract class BaseContext { diff --git a/src/Weixin/Basic/Events/Context/BaseWeixinContext.cs b/src/Weixin/Basic/Events/Context/BaseWeixinContext.cs index 577ca11..5cbd26d 100644 --- a/src/Weixin/Basic/Events/Context/BaseWeixinContext.cs +++ b/src/Weixin/Basic/Events/Context/BaseWeixinContext.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Base class for other Weixin contexts. diff --git a/src/Weixin/Basic/Events/Context/WeixinReceivedContext.cs b/src/Weixin/Basic/Events/Context/WeixinReceivedContext.cs index d6a57a2..d38c607 100644 --- a/src/Weixin/Basic/Events/Context/WeixinReceivedContext.cs +++ b/src/Weixin/Basic/Events/Context/WeixinReceivedContext.cs @@ -7,7 +7,7 @@ using System.Security.Claims; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Contains information about the login session as well as the user . diff --git a/src/Weixin/Basic/Events/EventArgs/EventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/EventReceivedEventArgs.cs index 5344a7e..5ed8e83 100644 --- a/src/Weixin/Basic/Events/EventArgs/EventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/EventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到事件(非普通消息) diff --git a/src/Weixin/Basic/Events/EventArgs/Events/ClickMenuEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/ClickMenuEventReceivedEventArgs.cs index 7c6dfad..373b83b 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/ClickMenuEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/ClickMenuEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到点击菜单拉取消息事件 diff --git a/src/Weixin/Basic/Events/EventArgs/Events/EnterEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/EnterEventReceivedEventArgs.cs index b7a298c..38b186c 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/EnterEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/EnterEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 进入微信号。 diff --git a/src/Weixin/Basic/Events/EventArgs/Events/LocationEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/LocationEventReceivedEventArgs.cs index fa63141..4e62da2 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/LocationEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/LocationEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 上报地理位置事件 diff --git a/src/Weixin/Basic/Events/EventArgs/Events/QrscanEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/QrscanEventReceivedEventArgs.cs index 1f9cf0c..fb24ec3 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/QrscanEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/QrscanEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 用户扫描带参数(场景值)二维码(扫描前已关注) diff --git a/src/Weixin/Basic/Events/EventArgs/Events/SubscribeEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/SubscribeEventReceivedEventArgs.cs index 8bed5d3..8c9a4d7 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/SubscribeEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/SubscribeEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 订阅事件。或,用户扫描带参数(场景值)二维码(扫描前未关注)。 diff --git a/src/Weixin/Basic/Events/EventArgs/Events/UnsubscribeEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/UnsubscribeEventReceivedEventArgs.cs index 9015948..e083c6b 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/UnsubscribeEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/UnsubscribeEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 退订事件 diff --git a/src/Weixin/Basic/Events/EventArgs/Events/ViewMenuEventReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Events/ViewMenuEventReceivedEventArgs.cs index 5b80837..a53dca7 100644 --- a/src/Weixin/Basic/Events/EventArgs/Events/ViewMenuEventReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Events/ViewMenuEventReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到点击菜单跳转链接事件 diff --git a/src/Weixin/Basic/Events/EventArgs/MessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/MessageReceivedEventArgs.cs index 5d1ab71..801fc02 100644 --- a/src/Weixin/Basic/Events/EventArgs/MessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/MessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到普通消息(除事件外的消息) diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/ImageMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/ImageMessageReceivedEventArgs.cs index 4e350eb..8f82a70 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/ImageMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/ImageMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到图片消息 diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/LinkMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/LinkMessageReceivedEventArgs.cs index 490e42b..a9bff35 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/LinkMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/LinkMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到链接消息 diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/LocationMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/LocationMessageReceivedEventArgs.cs index c20791a..932a28a 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/LocationMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/LocationMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到地理位置消息 diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/ShortVideoMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/ShortVideoMessageReceivedEventArgs.cs index 876e411..d3931c3 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/ShortVideoMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/ShortVideoMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 小视频消息 diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/TextMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/TextMessageReceivedEventArgs.cs index eefb9f6..f463e1c 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/TextMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/TextMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到文本消息 diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/VideoMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/VideoMessageReceivedEventArgs.cs index f628c57..25a931b 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/VideoMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/VideoMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 视频消息 diff --git a/src/Weixin/Basic/Events/EventArgs/Messages/VoiceMessageReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/Messages/VoiceMessageReceivedEventArgs.cs index 7fcadb6..60e2643 100644 --- a/src/Weixin/Basic/Events/EventArgs/Messages/VoiceMessageReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/Messages/VoiceMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到语音消息 diff --git a/src/Weixin/Basic/Events/EventArgs/ReceivedEventArgs.cs b/src/Weixin/Basic/Events/EventArgs/ReceivedEventArgs.cs index 07fa288..df8b93d 100644 --- a/src/Weixin/Basic/Events/EventArgs/ReceivedEventArgs.cs +++ b/src/Weixin/Basic/Events/EventArgs/ReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 收到消息或事件 diff --git a/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedEventType.cs b/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedEventType.cs index 617a7a3..cd05ae7 100644 --- a/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedEventType.cs +++ b/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedEventType.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 当MsgType字段值为时,Event字段值即为事件类型() diff --git a/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedMsgType.cs b/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedMsgType.cs index accae14..5a9844f 100644 --- a/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedMsgType.cs +++ b/src/Weixin/Basic/Events/EventArgs/_Types/ReceivedMsgType.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 接收消息类型 diff --git a/src/Weixin/Basic/Events/WeixinMessageEvents.cs b/src/Weixin/Basic/Events/WeixinMessageEvents.cs index 94fa72c..c9ece07 100644 --- a/src/Weixin/Basic/Events/WeixinMessageEvents.cs +++ b/src/Weixin/Basic/Events/WeixinMessageEvents.cs @@ -1,10 +1,10 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// "Official account services unavailable. Try again later." diff --git a/src/Weixin/Basic/Exceptions/WeixinErrorResultException.cs b/src/Weixin/Basic/Exceptions/WeixinErrorResultException.cs index f080887..9917cc9 100644 --- a/src/Weixin/Basic/Exceptions/WeixinErrorResultException.cs +++ b/src/Weixin/Basic/Exceptions/WeixinErrorResultException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinErrorResultException : WeixinException { diff --git a/src/Weixin/Basic/Exceptions/WeixinMenuException.cs b/src/Weixin/Basic/Exceptions/WeixinMenuException.cs index 634500c..7df2233 100644 --- a/src/Weixin/Basic/Exceptions/WeixinMenuException.cs +++ b/src/Weixin/Basic/Exceptions/WeixinMenuException.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinMenuException : WeixinException { diff --git a/src/Weixin/Basic/Exceptions/WeixinUnknownRequestMsgTypeException.cs b/src/Weixin/Basic/Exceptions/WeixinUnknownRequestMsgTypeException.cs index 7b4d4d9..2295bc1 100644 --- a/src/Weixin/Basic/Exceptions/WeixinUnknownRequestMsgTypeException.cs +++ b/src/Weixin/Basic/Exceptions/WeixinUnknownRequestMsgTypeException.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 未知请求类型。 diff --git a/src/Weixin/Basic/Models/CustomizedTypes.cs b/src/Weixin/Basic/Models/CustomizedTypes.cs index a9af28e..df4f306 100644 --- a/src/Weixin/Basic/Models/CustomizedTypes.cs +++ b/src/Weixin/Basic/Models/CustomizedTypes.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 回复/发送消息类型 diff --git a/src/Weixin/Basic/TaskCache.cs b/src/Weixin/Basic/TaskCache.cs index 09b6140..8985ae5 100644 --- a/src/Weixin/Basic/TaskCache.cs +++ b/src/Weixin/Basic/TaskCache.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { internal static class TaskCache { diff --git a/src/Weixin/Builder/WeixinBuilder.cs b/src/Weixin/Builder/WeixinBuilder.cs index edf86d8..0279e3e 100644 --- a/src/Weixin/Builder/WeixinBuilder.cs +++ b/src/Weixin/Builder/WeixinBuilder.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using System; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Helper functions for configuring Weixin services. diff --git a/src/Weixin/Builder/WeixinOptions.cs b/src/Weixin/Builder/WeixinOptions.cs index dc01036..0653022 100644 --- a/src/Weixin/Builder/WeixinOptions.cs +++ b/src/Weixin/Builder/WeixinOptions.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinOptions { diff --git a/src/Weixin/Builder/WeixinServiceCollectionExtensions.cs b/src/Weixin/Builder/WeixinServiceCollectionExtensions.cs index e14f281..d8e8d17 100644 --- a/src/Weixin/Builder/WeixinServiceCollectionExtensions.cs +++ b/src/Weixin/Builder/WeixinServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.Extensions.DependencyInjection.Extensions; using System; diff --git a/src/Weixin/Config.cs b/src/Weixin/Config.cs index e91baf4..1ea98f7 100644 --- a/src/Weixin/Config.cs +++ b/src/Weixin/Config.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 全局设置 diff --git a/src/Weixin/Constants/WeixinApiServers.cs b/src/Weixin/Constants/WeixinApiServers.cs index 6b1fefd..2e6741b 100644 --- a/src/Weixin/Constants/WeixinApiServers.cs +++ b/src/Weixin/Constants/WeixinApiServers.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin.Core.Constants +namespace Myvas.AspNetCore.Weixin.Core.Constants { /// /// 公众平台接口域名 diff --git a/src/Weixin/Exceptions/WeiXinException.cs b/src/Weixin/Exceptions/WeiXinException.cs index b956f62..5270720 100644 --- a/src/Weixin/Exceptions/WeiXinException.cs +++ b/src/Weixin/Exceptions/WeiXinException.cs @@ -4,7 +4,7 @@ using System.Runtime.Serialization; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信框架异常类 diff --git a/src/Weixin/Extras/Extensions/Dictionary.GetQueryString.cs b/src/Weixin/Extras/Extensions/Dictionary.GetQueryString.cs index 7605e03..5fb1991 100644 --- a/src/Weixin/Extras/Extensions/Dictionary.GetQueryString.cs +++ b/src/Weixin/Extras/Extensions/Dictionary.GetQueryString.cs @@ -3,9 +3,9 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static partial class DictionaryExtensions + internal static partial class DictionaryExtensions { /// /// 组装QueryString的方法 diff --git a/src/Weixin/Extras/Extensions/IRequestMessageEventBase.ConvertToRequestMessageText.cs b/src/Weixin/Extras/Extensions/IRequestMessageEventBase.ConvertToRequestMessageText.cs index 1cdc862..9456b12 100644 --- a/src/Weixin/Extras/Extensions/IRequestMessageEventBase.ConvertToRequestMessageText.cs +++ b/src/Weixin/Extras/Extensions/IRequestMessageEventBase.ConvertToRequestMessageText.cs @@ -3,9 +3,9 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static partial class IRequestMessageEventBaseExtensions + internal static partial class IRequestMessageEventBaseExtensions { /// /// 将RequestMessageEventBase转换成RequestMessageText类型,其中Content = requestMessage.EventKey diff --git a/src/Weixin/Extras/Extensions/MessageBase.Xml.cs b/src/Weixin/Extras/Extensions/MessageBase.Xml.cs index da21756..e19602a 100644 --- a/src/Weixin/Extras/Extensions/MessageBase.Xml.cs +++ b/src/Weixin/Extras/Extensions/MessageBase.Xml.cs @@ -5,9 +5,9 @@ using System.Text; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static class Extensions + internal static class Extensions { /// /// 根据XML信息填充实实体 diff --git a/src/Weixin/Extras/Extensions/NameValueCollection.GetValue_T.cs b/src/Weixin/Extras/Extensions/NameValueCollection.GetValue_T.cs index 59c6751..608ebfc 100644 --- a/src/Weixin/Extras/Extensions/NameValueCollection.GetValue_T.cs +++ b/src/Weixin/Extras/Extensions/NameValueCollection.GetValue_T.cs @@ -2,9 +2,9 @@ using System.Collections.Specialized; using System.ComponentModel; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static partial class NameValueCollectionExtensions + internal static partial class NameValueCollectionExtensions { /// /// 获取的值。 diff --git a/src/Weixin/Extras/Extensions/Object.ToNewtonJson.cs b/src/Weixin/Extras/Extensions/Object.ToNewtonJson.cs index 986fbcd..94d1625 100644 --- a/src/Weixin/Extras/Extensions/Object.ToNewtonJson.cs +++ b/src/Weixin/Extras/Extensions/Object.ToNewtonJson.cs @@ -4,9 +4,9 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static class ObjectToNewtonJsonExtensions + internal static class ObjectToNewtonJsonExtensions { public static string ToJson(this object source) { diff --git a/src/Weixin/Extras/Extensions/String.FormatWith.cs b/src/Weixin/Extras/Extensions/String.FormatWith.cs index 6ffe8e9..27e3b3d 100644 --- a/src/Weixin/Extras/Extensions/String.FormatWith.cs +++ b/src/Weixin/Extras/Extensions/String.FormatWith.cs @@ -3,12 +3,12 @@ using System.Reflection; using System.Text.RegularExpressions; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// /// - public static partial class StringExtensions + internal static partial class StringExtensions { public static string FormatWith(this string format, object source) { diff --git a/src/Weixin/Extras/Extensions/String.UrlEncodeAndDecode.cs b/src/Weixin/Extras/Extensions/String.UrlEncodeAndDecode.cs index 3624676..eb2389a 100644 --- a/src/Weixin/Extras/Extensions/String.UrlEncodeAndDecode.cs +++ b/src/Weixin/Extras/Extensions/String.UrlEncodeAndDecode.cs @@ -1,6 +1,6 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static partial class StringExtensions + internal static partial class StringExtensions { /// /// 封装System.Web.HttpUtility.UrlEncode diff --git a/src/Weixin/Extras/Extensions/WebHeaderCollection.GetFileExtensionName.cs b/src/Weixin/Extras/Extensions/WebHeaderCollection.GetFileExtensionName.cs index 1effa6a..8f74745 100644 --- a/src/Weixin/Extras/Extensions/WebHeaderCollection.GetFileExtensionName.cs +++ b/src/Weixin/Extras/Extensions/WebHeaderCollection.GetFileExtensionName.cs @@ -4,9 +4,9 @@ using System.Net; using System.Net.Http.Headers; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { - public static partial class WebHeaderCollectionExtensions + internal static partial class WebHeaderCollectionExtensions { // /// // /// 从Web Headers中取出文件扩展名 diff --git a/src/Weixin/Extras/Helpers/BaiduMapHelper.cs b/src/Weixin/Extras/Helpers/BaiduMapHelper.cs index 17f41af..7433d02 100644 --- a/src/Weixin/Extras/Helpers/BaiduMapHelper.cs +++ b/src/Weixin/Extras/Helpers/BaiduMapHelper.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 百度地图静态图片API,文档:http://api.map.baidu.com/lbsapi/cloud/staticimg.htm diff --git a/src/Weixin/Extras/Helpers/EventHelper.cs b/src/Weixin/Extras/Helpers/EventHelper.cs index 25431a2..182bb77 100644 --- a/src/Weixin/Extras/Helpers/EventHelper.cs +++ b/src/Weixin/Extras/Helpers/EventHelper.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class EventHelper { diff --git a/src/Weixin/Extras/Helpers/FileStreamHelper.cs b/src/Weixin/Extras/Helpers/FileStreamHelper.cs index 51564ce..95ad3e9 100644 --- a/src/Weixin/Extras/Helpers/FileStreamHelper.cs +++ b/src/Weixin/Extras/Helpers/FileStreamHelper.cs @@ -1,6 +1,6 @@ using System.IO; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class FileStreamHelper { diff --git a/src/Weixin/Extras/Helpers/GetWeixinResult.cs b/src/Weixin/Extras/Helpers/GetWeixinResult.cs index cefe08b..628ba1e 100644 --- a/src/Weixin/Extras/Helpers/GetWeixinResult.cs +++ b/src/Weixin/Extras/Helpers/GetWeixinResult.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// diff --git a/src/Weixin/Extras/Helpers/GoogleMapHelper.cs b/src/Weixin/Extras/Helpers/GoogleMapHelper.cs index ba18e49..559bce0 100644 --- a/src/Weixin/Extras/Helpers/GoogleMapHelper.cs +++ b/src/Weixin/Extras/Helpers/GoogleMapHelper.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class GoogleMapHelper { diff --git a/src/Weixin/Extras/Helpers/GpsHelper.cs b/src/Weixin/Extras/Helpers/GpsHelper.cs index f6e7c3a..3e63f29 100644 --- a/src/Weixin/Extras/Helpers/GpsHelper.cs +++ b/src/Weixin/Extras/Helpers/GpsHelper.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class GpsHelper { diff --git a/src/Weixin/Extras/Helpers/MsgTypeHelper.cs b/src/Weixin/Extras/Helpers/MsgTypeHelper.cs index e6b1ac5..4eb08b1 100644 --- a/src/Weixin/Extras/Helpers/MsgTypeHelper.cs +++ b/src/Weixin/Extras/Helpers/MsgTypeHelper.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class MsgTypeHelper { diff --git a/src/Weixin/Helpers/FileHelper.cs b/src/Weixin/Helpers/FileHelper.cs index d6bed36..a4bf5eb 100644 --- a/src/Weixin/Helpers/FileHelper.cs +++ b/src/Weixin/Helpers/FileHelper.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class FileHelper { diff --git a/src/Weixin/Helpers/HttpUtility.cs b/src/Weixin/Helpers/HttpUtility.cs index 3ae2785..3c6babb 100644 --- a/src/Weixin/Helpers/HttpUtility.cs +++ b/src/Weixin/Helpers/HttpUtility.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; using System.Net.Http.Headers; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class HttpUtility { diff --git a/src/Weixin/Helpers/WeixinJsonHelper.cs b/src/Weixin/Helpers/WeixinJsonHelper.cs index 91acbff..d597f27 100644 --- a/src/Weixin/Helpers/WeixinJsonHelper.cs +++ b/src/Weixin/Helpers/WeixinJsonHelper.cs @@ -2,7 +2,7 @@ using System.Globalization; using System.Text.RegularExpressions; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinJsonHelper { diff --git a/src/Weixin/Helpers/WeixinTimestampHelper.cs b/src/Weixin/Helpers/WeixinTimestampHelper.cs index 2fa2c0c..efd25d8 100644 --- a/src/Weixin/Helpers/WeixinTimestampHelper.cs +++ b/src/Weixin/Helpers/WeixinTimestampHelper.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinTimestampHelper { diff --git a/src/Weixin/Helpers/WeixinXmlConvert.cs b/src/Weixin/Helpers/WeixinXmlConvert.cs index 492f315..6d19eb8 100644 --- a/src/Weixin/Helpers/WeixinXmlConvert.cs +++ b/src/Weixin/Helpers/WeixinXmlConvert.cs @@ -6,7 +6,7 @@ using System.Xml; using System.Xml.Serialization; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinXmlConvert { diff --git a/src/Weixin/Models/WeixinErrorJson.cs b/src/Weixin/Models/WeixinErrorJson.cs index 3a5c077..07e95b9 100644 --- a/src/Weixin/Models/WeixinErrorJson.cs +++ b/src/Weixin/Models/WeixinErrorJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信API返回值(JSON) diff --git a/src/Weixin/Models/WeixinJson.cs b/src/Weixin/Models/WeixinJson.cs index c6c0208..ccd9ca2 100644 --- a/src/Weixin/Models/WeixinJson.cs +++ b/src/Weixin/Models/WeixinJson.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信API返回值(JSON) diff --git a/src/Weixin/Models/WeixinResponseStatus.cs b/src/Weixin/Models/WeixinResponseStatus.cs index 301295c..61d3fa5 100644 --- a/src/Weixin/Models/WeixinResponseStatus.cs +++ b/src/Weixin/Models/WeixinResponseStatus.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信响应状态 diff --git a/src/Weixin/Myvas.AspNetCore.Weixin.csproj b/src/Weixin/Myvas.AspNetCore.Weixin.csproj index 78cc85a..eb65874 100644 --- a/src/Weixin/Myvas.AspNetCore.Weixin.csproj +++ b/src/Weixin/Myvas.AspNetCore.Weixin.csproj @@ -1,22 +1,22 @@ - - - - netstandard2.0 - Myvas.AspNetCore.Weixin - 2.2.402.0 - 2.2.402-alpha0 - MIT - Myvas.AspNetCore.Weixin - Myvas - An AspNetCore middleware for Tencent Weixin(aka. Wechat) message handler and apis. - https://github.com/myvas/AspNetCore.Weixin - myvas;AspNetCore;Weixin - https://github.com/myvas/AspNetCore.Weixin - - - - - - - - + + + + netstandard2.0 + Myvas.AspNetCore.Weixin + 2.2.403.3 + 2.2.403 + MIT + Myvas.AspNetCore.Weixin + Myvas + An AspNetCore middleware for Tencent Weixin(aka. Wechat) message handler and apis. + https://github.com/myvas/AspNetCore.Weixin + myvas;AspNetCore;Weixin + https://github.com/myvas/AspNetCore.Weixin + + + + + + + + diff --git a/src/Weixin/Signature/SignatureHelper.cs b/src/Weixin/Signature/SignatureHelper.cs index 7406f1e..614b8d7 100644 --- a/src/Weixin/Signature/SignatureHelper.cs +++ b/src/Weixin/Signature/SignatureHelper.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 微信签名验证 diff --git a/src/Weixin/Signature/WeixinClientValidator.cs b/src/Weixin/Signature/WeixinClientValidator.cs index e5cf57d..01066a7 100644 --- a/src/Weixin/Signature/WeixinClientValidator.cs +++ b/src/Weixin/Signature/WeixinClientValidator.cs @@ -6,7 +6,7 @@ using System.Text; using System.Net.Http; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinClientValidator { diff --git a/src/Weixin/WeixinAccessTicket.cs b/src/Weixin/WeixinAccessTicket.cs index 6943f8e..36e2b00 100644 --- a/src/Weixin/WeixinAccessTicket.cs +++ b/src/Weixin/WeixinAccessTicket.cs @@ -1,7 +1,7 @@ using System; using System.Security.Claims; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinAccessTicket { diff --git a/src/Weixin/WeixinContentResult.cs b/src/Weixin/WeixinContentResult.cs index a865ddd..97e5e15 100644 --- a/src/Weixin/WeixinContentResult.cs +++ b/src/Weixin/WeixinContentResult.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinContentResult : ContentResult { diff --git a/src/Weixin/WelcomePage/MessageHandler/EventHandlerExtensions.cs b/src/Weixin/WelcomePage/MessageHandler/EventHandlerExtensions.cs index 4dfd5c0..2a47a24 100644 --- a/src/Weixin/WelcomePage/MessageHandler/EventHandlerExtensions.cs +++ b/src/Weixin/WelcomePage/MessageHandler/EventHandlerExtensions.cs @@ -4,7 +4,7 @@ using System.IO; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { internal static class EventHandlerExtensions { diff --git a/src/Weixin/WelcomePage/MessageHandler/IMessageHandler.cs b/src/Weixin/WelcomePage/MessageHandler/IMessageHandler.cs index abd63e5..9ab7e58 100644 --- a/src/Weixin/WelcomePage/MessageHandler/IMessageHandler.cs +++ b/src/Weixin/WelcomePage/MessageHandler/IMessageHandler.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IMessageHandler { diff --git a/src/Weixin/WelcomePage/MessageHandler/IMessageHandlerDocument.cs b/src/Weixin/WelcomePage/MessageHandler/IMessageHandlerDocument.cs index fc8ec4e..65c32e4 100644 --- a/src/Weixin/WelcomePage/MessageHandler/IMessageHandlerDocument.cs +++ b/src/Weixin/WelcomePage/MessageHandler/IMessageHandlerDocument.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// 为IMessageHandler单独提供XDocument类型的属性接口(主要是ResponseDocument)。 diff --git a/src/Weixin/WelcomePage/MessageHandler/Message.cs b/src/Weixin/WelcomePage/MessageHandler/Message.cs index 1d0ebc1..651d1b4 100644 --- a/src/Weixin/WelcomePage/MessageHandler/Message.cs +++ b/src/Weixin/WelcomePage/MessageHandler/Message.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class Message { diff --git a/src/Weixin/WelcomePage/MessageHandler/MessageTypeUtility.cs b/src/Weixin/WelcomePage/MessageHandler/MessageTypeUtility.cs index cdcb38c..198315d 100644 --- a/src/Weixin/WelcomePage/MessageHandler/MessageTypeUtility.cs +++ b/src/Weixin/WelcomePage/MessageHandler/MessageTypeUtility.cs @@ -4,7 +4,7 @@ using System.Text; using System.Xml.Linq; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class MessageTypeUtility { diff --git a/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandleResult.cs b/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandleResult.cs index 1020931..f221104 100644 --- a/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandleResult.cs +++ b/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandleResult.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Contains the result of an WeixinMessageHandler.HandleRequest call diff --git a/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandler.cs b/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandler.cs index 9bda48c..792f063 100644 --- a/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandler.cs +++ b/src/Weixin/WelcomePage/MessageHandler/WeixinMessageHandler.cs @@ -4,7 +4,7 @@ using System.IO; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// diff --git a/src/Weixin/WelcomePage/MessageProtection/IWeixinMessageEncryptor.cs b/src/Weixin/WelcomePage/MessageProtection/IWeixinMessageEncryptor.cs index 1877586..5ba8b13 100644 --- a/src/Weixin/WelcomePage/MessageProtection/IWeixinMessageEncryptor.cs +++ b/src/Weixin/WelcomePage/MessageProtection/IWeixinMessageEncryptor.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public interface IWeixinMessageEncryptor { diff --git a/src/Weixin/WelcomePage/MessageProtection/Internal/CryptographyHelper.cs b/src/Weixin/WelcomePage/MessageProtection/Internal/CryptographyHelper.cs index 2facd83..ee15f4f 100644 --- a/src/Weixin/WelcomePage/MessageProtection/Internal/CryptographyHelper.cs +++ b/src/Weixin/WelcomePage/MessageProtection/Internal/CryptographyHelper.cs @@ -6,7 +6,7 @@ using System.IO; using System.Net; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { internal static class CryptographyHelper { diff --git a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageCryptographicException.cs b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageCryptographicException.cs index 9c89239..e6b8174 100644 --- a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageCryptographicException.cs +++ b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageCryptographicException.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinMessageCryptographicException : CryptographicException { diff --git a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncodingTypes.cs b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncodingTypes.cs index 9604f62..e45bcbf 100644 --- a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncodingTypes.cs +++ b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncodingTypes.cs @@ -1,7 +1,7 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.AspNetCore.Http; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public static class WeixinMessageEncodingTypes { diff --git a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptor.cs b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptor.cs index 49d3c01..46cb0a7 100644 --- a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptor.cs +++ b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptor.cs @@ -19,7 +19,7 @@ //-40009 : base64加密异常 //-40010 : base64解密异常 -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinMessageEncryptor : IWeixinMessageEncryptor { diff --git a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorError.cs b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorError.cs index a6ddf79..9201207 100644 --- a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorError.cs +++ b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorError.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography; using System.Text; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { internal static class WeixinMessageEncryptorError { diff --git a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorErrorCode.cs b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorErrorCode.cs index 1065196..ad3b9f1 100644 --- a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorErrorCode.cs +++ b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageEncryptorErrorCode.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public enum WeixinMessageEncryptorErrorCode { diff --git a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageProtectionServiceCollectionExtensions.cs b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageProtectionServiceCollectionExtensions.cs index 73c15c3..882d38b 100644 --- a/src/Weixin/WelcomePage/MessageProtection/WeixinMessageProtectionServiceCollectionExtensions.cs +++ b/src/Weixin/WelcomePage/MessageProtection/WeixinMessageProtectionServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; diff --git a/src/Weixin/WelcomePage/WeixinWelcomePageApplicationBuilderExtensions.cs b/src/Weixin/WelcomePage/WeixinWelcomePageApplicationBuilderExtensions.cs index 64f6385..acd85f6 100644 --- a/src/Weixin/WelcomePage/WeixinWelcomePageApplicationBuilderExtensions.cs +++ b/src/Weixin/WelcomePage/WeixinWelcomePageApplicationBuilderExtensions.cs @@ -7,7 +7,7 @@ using System.Linq; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// IApplicationBuilder extensions for the WeixinWelcomePageMiddleware. diff --git a/src/Weixin/WelcomePage/WeixinWelcomePageMiddleware.cs b/src/Weixin/WelcomePage/WeixinWelcomePageMiddleware.cs index ef44c63..f5f1619 100644 --- a/src/Weixin/WelcomePage/WeixinWelcomePageMiddleware.cs +++ b/src/Weixin/WelcomePage/WeixinWelcomePageMiddleware.cs @@ -5,7 +5,7 @@ using System.Net.Http; using System.Threading.Tasks; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// This middleware provides a default welcome/validation page for new Weixin App. diff --git a/src/Weixin/WelcomePage/WeixinWelcomePageOptions.cs b/src/Weixin/WelcomePage/WeixinWelcomePageOptions.cs index 5a589ff..beb75eb 100644 --- a/src/Weixin/WelcomePage/WeixinWelcomePageOptions.cs +++ b/src/Weixin/WelcomePage/WeixinWelcomePageOptions.cs @@ -1,7 +1,7 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.AspNetCore.Http; -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { /// /// Options for the WeixinWelcomePageMiddleware. diff --git a/src/Weixin/WelcomePage/WeixinWelcomePageOptionsDefaults.cs b/src/Weixin/WelcomePage/WeixinWelcomePageOptionsDefaults.cs index f5e1854..fd8f5ac 100644 --- a/src/Weixin/WelcomePage/WeixinWelcomePageOptionsDefaults.cs +++ b/src/Weixin/WelcomePage/WeixinWelcomePageOptionsDefaults.cs @@ -1,4 +1,4 @@ -namespace AspNetCore.Weixin +namespace Myvas.AspNetCore.Weixin { public class WeixinWelcomePageOptionsDefaults { diff --git a/src/Weixin/WelcomePage/WeixinWelcomePageServiceCollectionExtensions.cs b/src/Weixin/WelcomePage/WeixinWelcomePageServiceCollectionExtensions.cs index 730f0dd..1262257 100644 --- a/src/Weixin/WelcomePage/WeixinWelcomePageServiceCollectionExtensions.cs +++ b/src/Weixin/WelcomePage/WeixinWelcomePageServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.Extensions.DependencyInjection.Extensions; using System; diff --git a/test/WeixinMessageEncryptor_Decrypt_Tests.cs b/test/WeixinMessageEncryptor_Decrypt_Tests.cs index d36827b..b8374cd 100644 --- a/test/WeixinMessageEncryptor_Decrypt_Tests.cs +++ b/test/WeixinMessageEncryptor_Decrypt_Tests.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; diff --git a/test/WeixinXmlConvert_Deserialize_Tests.cs b/test/WeixinXmlConvert_Deserialize_Tests.cs index 173fbf6..34e60af 100644 --- a/test/WeixinXmlConvert_Deserialize_Tests.cs +++ b/test/WeixinXmlConvert_Deserialize_Tests.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using System; using System.Collections.Generic; using System.Linq; diff --git a/test/WeixinXmlConvert_Serialize_Tests.cs b/test/WeixinXmlConvert_Serialize_Tests.cs index fcb24e8..6414145 100644 --- a/test/WeixinXmlConvert_Serialize_Tests.cs +++ b/test/WeixinXmlConvert_Serialize_Tests.cs @@ -1,4 +1,4 @@ -using AspNetCore.Weixin; +using Myvas.AspNetCore.Weixin; using System; using System.Collections.Generic; using System.Linq; From b760617ad81d505b188200afd506411416db71bf Mon Sep 17 00:00:00 2001 From: FrankH <4848285@qq.com> Date: Fri, 1 Nov 2019 19:38:33 +0800 Subject: [PATCH 2/4] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 82b18a4..ea0e65b 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ An ASP.NET Core middleware for Tencent Wechat/Weixin message handling and apis. 微信公众平台/接口调用服务:在微信公众平台上申请服务号或订阅号后,经配置部署可提供自定义菜单、即时信息交流、微信网页授权、模板消息通知等接口调用服务。 ## Demo -http://demo.auth.myvas.com (debian.9-x64) [[github]](https://github.com/myvas/AspNetCore.Authentication.Demo) +http://demo.auth.myvas.com (debian.9-x64) [![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/myvas/AspNetCore.Authentication.Demo?label=github)](https://github.com/myvas/AspNetCore.Authentication.Demo) ## NuGet -- Myvas.AspNetCore.Weixin [![NuGet](https://img.shields.io/nuget/v/Myvas.AspNetCore.Weixin.svg)](https://www.nuget.org/packages/Myvas.AspNetCore.Weixin) [[github]](https://github.com/myvas/AspNetCore.Weixin) +- Myvas.AspNetCore.Weixin [![NuGet](https://img.shields.io/nuget/v/Myvas.AspNetCore.Weixin.svg)](https://www.nuget.org/packages/Myvas.AspNetCore.Weixin) [![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/myvas/AspNetCore.Weixin?label=github)](https://github.com/myvas/AspNetCore.Weixin) ## Settings https://mp.weixin.qq.com From c856b08468c44d8dd4f9d1151e4e89d5bb79551f Mon Sep 17 00:00:00 2001 From: FrankH <4848285@qq.com> Date: Fri, 1 Nov 2019 19:39:29 +0800 Subject: [PATCH 3/4] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index ea0e65b..1dbde0f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Myvas.AspNetCore.Weixin +# Myvas.AspNetCore.Weixin [![NuGet](https://img.shields.io/nuget/v/Myvas.AspNetCore.Weixin.svg)](https://www.nuget.org/packages/Myvas.AspNetCore.Weixin) [![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/myvas/AspNetCore.Weixin?label=github)](https://github.com/myvas/AspNetCore.Weixin) An ASP.NET Core middleware for Tencent Wechat/Weixin message handling and apis. (微信公众平台/接口调用服务) 微信公众平台/接口调用服务:在微信公众平台上申请服务号或订阅号后,经配置部署可提供自定义菜单、即时信息交流、微信网页授权、模板消息通知等接口调用服务。 @@ -6,9 +6,6 @@ An ASP.NET Core middleware for Tencent Wechat/Weixin message handling and apis. ## Demo http://demo.auth.myvas.com (debian.9-x64) [![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/myvas/AspNetCore.Authentication.Demo?label=github)](https://github.com/myvas/AspNetCore.Authentication.Demo) -## NuGet -- Myvas.AspNetCore.Weixin [![NuGet](https://img.shields.io/nuget/v/Myvas.AspNetCore.Weixin.svg)](https://www.nuget.org/packages/Myvas.AspNetCore.Weixin) [![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/myvas/AspNetCore.Weixin?label=github)](https://github.com/myvas/AspNetCore.Weixin) - ## Settings https://mp.weixin.qq.com From a985321fd8a309ffd5355002cc2ad61806fd5cb2 Mon Sep 17 00:00:00 2001 From: FrankH <4848285@qq.com> Date: Fri, 1 Nov 2019 19:40:20 +0800 Subject: [PATCH 4/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1dbde0f..42f47bf 100644 --- a/README.md +++ b/README.md @@ -160,5 +160,5 @@ $(document).ready(function () { ``` ## Dev -* [.NET Core SDK 2.1 LTS](https://dotnet.microsoft.com/download/dotnet-core/2.1) 2.1.802 +* [.NET Core SDK 2.2](https://dotnet.microsoft.com/download/dotnet-core/2.2) * [微信开发者工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html)