Skip to content
This repository has been archived by the owner on May 8, 2019. It is now read-only.

Commit

Permalink
Use new lib.
Browse files Browse the repository at this point in the history
  • Loading branch information
Berrysoft committed Jun 5, 2018
1 parent 481083a commit 6011e1f
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 74 deletions.
41 changes: 16 additions & 25 deletions TsinghuaNet/MainViewModel.vb
Original file line number Diff line number Diff line change
Expand Up @@ -103,33 +103,29 @@ Class MainViewModel
End Set
End Property

Private auth4 As AuthHelper
Private auth6 As AuthHelper
Private auth4 As Auth4Helper
Private auth6 As Auth6Helper
Private net As NetHelper
Private Function InitHelper(Of T As {New, NetHelperBase})(ByRef helper As T) As T
If helper Is Nothing Then
helper = New T()
End If
UpdateHelper(helper)
Return helper
End Function
Private Sub UpdateHelper(helper As NetHelperBase)
helper.Username = Username
helper.Password = Password
End Sub
Public ReadOnly Property Helper As IConnect
Get
Select Case State
Case NetState.Auth4
If auth4 Is Nothing Then
auth4 = AuthHelper.CreateAuth4Helper(Username, Password)
Else
UpdateHelper(auth4)
End If
Return auth4
Return InitHelper(auth4)
Case NetState.Auth6
If auth6 Is Nothing Then
auth6 = AuthHelper.CreateAuth6Helper(Username, Password)
Else
UpdateHelper(auth6)
End If
Return auth6
Return InitHelper(auth6)
Case NetState.Net
If net Is Nothing Then
net = New NetHelper(Username, Password)
Else
UpdateHelper(net)
End If
Return net
Return InitHelper(net)
Case Else
Return Nothing
End Select
Expand Down Expand Up @@ -178,11 +174,6 @@ Class MainViewModel
End Get
End Property

Private Sub UpdateHelper(helper As NetHelperBase)
helper.Username = Username
helper.Password = Password
End Sub

Public Sub DisposeHelpers()
net?.Dispose()
auth4?.Dispose()
Expand Down
98 changes: 55 additions & 43 deletions TsinghuaNet/Settings.vb
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,65 @@ Class Settings
Inherits XmlSettings
<Settings("name")>
Public Property Username As String
<Settings("password")>
<Settings("password", ConverterType:=GetType(PasswordConverter))>
Public Property Password As String
<Settings("state")>
Class PasswordConverter
Implements ISimpleConverter
Public Function Convert(value As Object) As Object Implements ISimpleConverter.Convert
Return Encoding.ASCII.GetString(System.Convert.FromBase64String(If(value, String.Empty)))
End Function
Public Function ConvertBack(value As Object) As Object Implements ISimpleConverter.ConvertBack
Return System.Convert.ToBase64String(Encoding.ASCII.GetBytes(value))
End Function
End Class
<Settings("state", ConverterType:=GetType(StateConverter))>
Public Property State As NetState
<Settings("more")>
Class StateConverter
Implements ISimpleConverter
Public Function Convert(value As Object) As Object Implements ISimpleConverter.Convert
Dim temp As NetState
If [Enum].TryParse(value, temp) Then
Return temp
Else
Return NetState.Unknown
End If
End Function
Public Function ConvertBack(value As Object) As Object Implements ISimpleConverter.ConvertBack
Return value.ToString()
End Function
End Class
<Settings("more", ConverterType:=GetType(BoolConverter))>
Public Property MoreInf As Boolean
<Settings("language")>
Class BoolConverter
Implements ISimpleConverter
Public Function Convert(value As Object) As Object Implements ISimpleConverter.Convert
Dim moreinfResult As Boolean
If Boolean.TryParse(value, moreinfResult) Then
Return moreinfResult
Else
Return False
End If
End Function
Public Function ConvertBack(value As Object) As Object Implements ISimpleConverter.ConvertBack
Return value.ToString()
End Function
End Class
<Settings("language", ConverterType:=GetType(LanguageConverter))>
Public Property Language As CultureInfo
Class LanguageConverter
Implements ISimpleConverter
Public Function Convert(value As Object) As Object Implements ISimpleConverter.Convert
Try
Return If(value Is Nothing, Nothing, New CultureInfo(value.ToString()))
Catch ex As Exception
WriteException(ex)
Return Nothing
End Try
End Function
Public Function ConvertBack(value As Object) As Object Implements ISimpleConverter.ConvertBack
Return CType(value, CultureInfo)?.Name
End Function
End Class
Private Const logPath As String = "log.xml"
Public Sub New()
Username = String.Empty
Expand Down Expand Up @@ -44,43 +95,4 @@ Class Settings
Public Overloads Sub Save()
Save(logPath)
End Sub
Protected Overrides Function ChangeType(name As String, value As Object, conversionType As Type) As Object
Select Case name
Case "password"
Return Encoding.ASCII.GetString(Convert.FromBase64String(If(value, String.Empty)))
Case "state"
Dim temp As NetState
If [Enum].TryParse(value, temp) Then
Return temp
Else
Return NetState.Unknown
End If
Case "more"
Dim moreinfResult As Boolean
If Boolean.TryParse(value, moreinfResult) AndAlso moreinfResult Then
Return True
Else
Return False
End If
Case "language"
Try
Return If(value Is Nothing, Nothing, New CultureInfo(value.ToString()))
Catch ex As Exception
WriteException(ex)
Return Nothing
End Try
Case Else
Return value
End Select
End Function
Protected Overrides Function ChangeBackType(name As String, value As Object, conversionType As Type) As Object
Select Case name
Case "password"
Return Convert.ToBase64String(Encoding.ASCII.GetBytes(value))
Case "language"
Return CType(value, CultureInfo)?.Name
Case Else
Return value.ToString()
End Select
End Function
End Class
8 changes: 4 additions & 4 deletions TsinghuaNet/TsinghuaNet.vbproj
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@
<StartupObject>TsinghuaNet.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="Berrysoft.Console, Version=1.0.112.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Berrysoft.Console.1.0.112-preview2\lib\net472\Berrysoft.Console.dll</HintPath>
<Reference Include="Berrysoft.Console, Version=1.0.140.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Berrysoft.Console.1.0.140-preview3\lib\net472\Berrysoft.Console.dll</HintPath>
</Reference>
<Reference Include="Berrysoft.Tsinghua.Net, Version=1.0.112.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Berrysoft.Tsinghua.Net.1.0.112-preview2\lib\net472\Berrysoft.Tsinghua.Net.dll</HintPath>
<Reference Include="Berrysoft.Tsinghua.Net, Version=1.0.140.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Berrysoft.Tsinghua.Net.1.0.140-preview3\lib\net472\Berrysoft.Tsinghua.Net.dll</HintPath>
</Reference>
<Reference Include="PresentationFramework.Aero" />
<Reference Include="System.Core" />
Expand Down
4 changes: 2 additions & 2 deletions TsinghuaNet/packages.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Berrysoft.Console" version="1.0.112-preview2" targetFramework="net472" />
<package id="Berrysoft.Tsinghua.Net" version="1.0.112-preview2" targetFramework="net472" />
<package id="Berrysoft.Console" version="1.0.140-preview3" targetFramework="net472" />
<package id="Berrysoft.Tsinghua.Net" version="1.0.140-preview3" targetFramework="net472" />
<package id="System.Json" version="4.5.0" targetFramework="net472" />
</packages>

0 comments on commit 6011e1f

Please sign in to comment.