Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TourDataManager
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kirill
TourDataManager
Commits
bd519fc6
Commit
bd519fc6
authored
Oct 08, 2018
by
Kirill
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Авторизация и сохранение/восстановление куков
parent
84d38e51
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
291 additions
and
27 deletions
+291
-27
Authenticator.cs
TourDataManager/Authenticator.cs
+27
-0
CookieStorage.cs
TourDataManager/CookieStorage.cs
+60
-0
Debug.cs
TourDataManager/Debug.cs
+16
-0
IAuthenticator.cs
TourDataManager/IAuthenticator.cs
+8
-0
MyUtilities.cs
TourDataManager/MyUtilities.cs
+0
-24
TourDataManager.cs
TourDataManager/TourDataManager.cs
+50
-0
TourDataManager.csproj
TourDataManager/TourDataManager.csproj
+61
-1
packages.config
TourDataManager/packages.config
+15
-0
Program.cs
TourDataManagerConsoleApplication/Program.cs
+19
-2
TourDataManagerConsoleApplication.csproj
...nsoleApplication/TourDataManagerConsoleApplication.csproj
+27
-0
packages.config
TourDataManagerConsoleApplication/packages.config
+8
-0
No files found.
TourDataManager/Authenticator.cs
0 → 100644
View file @
bd519fc6
using
System
;
using
System.Collections.Generic
;
using
System.Net.Http
;
using
Ninject
;
namespace
TourDataManager
{
public
class
Authenticator
:
IAuthenticator
{
private
readonly
Uri
authUri
=
new
Uri
(
"https://biganto.com/users/login/?client=desktopplayer&client_version=3.0&v=2.0"
);
[
Inject
]
public
HttpClient
HttpClient
{
get
;
set
;
}
public
async
void
Login
(
string
email
,
string
password
,
Action
<
bool
,
string
>
continuation
=
null
){
var
x
=
await
HttpClient
.
PostAsync
(
authUri
,
new
FormUrlEncodedContent
(
new
[]{
new
KeyValuePair
<
string
,
string
>(
"email"
,
email
),
new
KeyValuePair
<
string
,
string
>(
"password"
,
password
)
}));
var
content
=
await
x
.
Content
.
ReadAsStringAsync
();
continuation
?.
Invoke
(
x
.
IsSuccessStatusCode
,
content
);
}
public
void
Logout
(){
}
}
}
\ No newline at end of file
TourDataManager/CookieStorage.cs
0 → 100644
View file @
bd519fc6
using
System
;
using
System.IO
;
using
System.Net
;
using
System.Runtime.Serialization.Formatters.Binary
;
namespace
TourDataManager
{
public
class
CookieStorage
{
private
readonly
string
cookiePath
;
private
CookieContainer
CookieContainer
;
public
CookieStorage
(
string
cookiePath
){
this
.
cookiePath
=
cookiePath
;
}
public
CookieContainer
Get
(){
if
(
CookieContainer
!=
null
)
return
CookieContainer
;
CookieContainer
=
ReadCookiesFromDisk
(
cookiePath
);
Debug
.
Log
(
$"Count of cookies restored :
{
CookieContainer
.
Count
}
"
);
return
CookieContainer
;
}
public
void
Save
(
CookieContainer
cookieContainer
){
WriteCookiesToDisk
(
cookiePath
,
cookieContainer
);
Debug
.
Log
(
$"Count of cookies saved :
{
cookieContainer
}
"
);
}
public
void
Save
(){
Save
(
CookieContainer
);
}
public
static
void
WriteCookiesToDisk
(
string
file
,
CookieContainer
cookieJar
){
using
(
Stream
stream
=
File
.
Create
(
file
)){
try
{
Debug
.
Log
(
"Writing cookies to disk... "
);
var
formatter
=
new
BinaryFormatter
();
formatter
.
Serialize
(
stream
,
cookieJar
);
Debug
.
Log
(
"Done."
);
}
catch
(
Exception
e
)
{
Debug
.
LogError
(
"Problem writing cookies to disk: "
+
e
.
GetType
());
}
}
}
public
static
CookieContainer
ReadCookiesFromDisk
(
string
file
){
try
{
using
(
Stream
stream
=
File
.
Open
(
file
,
FileMode
.
Open
)){
Debug
.
Log
(
"Reading cookies from disk... "
);
var
formatter
=
new
BinaryFormatter
();
Debug
.
Log
(
"Done."
);
return
(
CookieContainer
)
formatter
.
Deserialize
(
stream
);
}
}
catch
(
Exception
e
)
{
Debug
.
LogError
(
"Problem reading cookies from disk: "
+
e
.
GetType
());
return
new
CookieContainer
();
}
}
}
}
\ No newline at end of file
TourDataManager/Debug.cs
0 → 100644
View file @
bd519fc6
using
System
;
namespace
TourDataManager
{
public
static
class
Debug
{
public
static
void
Log
(
object
msg
){
Console
.
WriteLine
(
msg
);
}
public
static
void
LogError
(
object
msg
){
Console
.
ForegroundColor
=
ConsoleColor
.
Red
;
Console
.
WriteLine
(
msg
);
Console
.
ResetColor
();
}
}
}
\ No newline at end of file
TourDataManager/IAuthenticator.cs
0 → 100644
View file @
bd519fc6
using
System
;
namespace
TourDataManager
{
public
interface
IAuthenticator
{
void
Login
(
string
email
,
string
password
,
Action
<
bool
,
string
>
continuation
=
null
);
void
Logout
();
}
}
\ No newline at end of file
TourDataManager/MyUtilities.cs
deleted
100644 → 0
View file @
84d38e51
namespace
TourDataManager
{
public
class
MyUtilities
{
public
int
c
;
public
void
AddValues
(
int
a
,
int
b
)
{
c
=
a
+
b
;
var
t1
=
(
1
,
2
);
var
t2
=
(
1
,
2
);
if
(
t1
==
t2
){
}
}
/// C# 7.3 feature
public
static
bool
CompareTuples
((
int
,
int
)
a
,(
int
,
int
)
b
){
return
a
==
b
;
}
public
static
int
GenerateRandom
(
int
min
,
int
max
)
{
System
.
Random
rand
=
new
System
.
Random
();
return
rand
.
Next
(
min
,
max
);
}
}
}
\ No newline at end of file
TourDataManager/TourDataManager.cs
0 → 100644
View file @
bd519fc6
using
System.Net.Http
;
using
Ninject
;
using
Ninject.Modules
;
namespace
TourDataManager
{
public
class
TourDataManager
{
private
string
persistentPath
;
private
IKernel
Container
;
public
TourDataManager
(
string
persistentPath
){
this
.
persistentPath
=
persistentPath
;
Container
=
new
StandardKernel
(
new
MyModule
(
persistentPath
));
}
public
void
Login
(
string
email
,
string
password
){
Container
.
Get
<
IAuthenticator
>().
Login
(
email
,
password
,
(
b
,
s
)
=>
{
var
cookiestor
=
Container
.
Get
<
CookieStorage
>();
Debug
.
Log
(
$"Authorization :
{
s
}
"
);
Debug
.
Log
(
$"Cookie count in storage :
{
cookiestor
.
Get
().
Count
}
"
);
cookiestor
.
Save
();
});
}
}
public
class
MyModule
:
NinjectModule
{
private
readonly
string
persistentPath
;
public
MyModule
(
string
persistentPath
){
this
.
persistentPath
=
persistentPath
;
}
public
override
void
Load
(){
var
cookieStorage
=
new
CookieStorage
(
persistentPath
+
"\\cookie.storage"
);
var
httpClientHandler
=
new
HttpClientHandler
();
//CookieContainer сам запоминает полученные из ответа куки
httpClientHandler
.
CookieContainer
=
cookieStorage
.
Get
();
var
httpClient
=
new
HttpClient
(
httpClientHandler
);
Bind
<
CookieStorage
>().
ToConstant
(
cookieStorage
).
InSingletonScope
();
Bind
<
HttpClientHandler
>().
ToConstant
(
httpClientHandler
).
InSingletonScope
();
Bind
<
HttpClient
>().
ToConstant
(
httpClient
).
InSingletonScope
();
Bind
<
IAuthenticator
>().
To
<
Authenticator
>().
InSingletonScope
();
}
}
}
\ No newline at end of file
TourDataManager/TourDataManager.csproj
View file @
bd519fc6
...
@@ -33,14 +33,74 @@
...
@@ -33,14 +33,74 @@
<WarningLevel>
4
</WarningLevel>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference
Include=
"mscorlib"
/>
<Reference
Include=
"Ninject, Version=3.3.4.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7"
>
<HintPath>
..\packages\Ninject.3.3.4\lib\net45\Ninject.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System"
/>
<Reference
Include=
"System"
/>
<Reference
Include=
"System.ComponentModel.Composition"
/>
<Reference
Include=
"System.Core"
/>
<Reference
Include=
"System.Core"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.IO.4.3.0\lib\net462\System.IO.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Reactive, Version=4.1.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263"
>
<HintPath>
..\packages\System.Reactive.4.1.1\lib\net46\System.Reactive.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"
>
<HintPath>
..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"
>
<HintPath>
..\packages\System.ValueTuple.4.4.0\lib\net47\System.ValueTuple.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Windows"
/>
<Reference
Include=
"System.Windows.Forms"
/>
<Reference
Include=
"System.Xml"
/>
<Reference
Include=
"System.Xml"
/>
<Reference
Include=
"WindowsBase"
/>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<Compile
Include=
"MyUtilities.cs"
/>
<Compile
Include=
"Authenticator.cs"
/>
<Compile
Include=
"CookieStorage.cs"
/>
<Compile
Include=
"Debug.cs"
/>
<Compile
Include=
"IAuthenticator.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<Compile
Include=
"TourDataManager.cs"
/>
</ItemGroup>
<ItemGroup>
<None
Include=
"packages.config"
/>
</ItemGroup>
</ItemGroup>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
...
...
TourDataManager/packages.config
0 → 100644
View file @
bd519fc6
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"Ninject"
version
=
"3.3.4"
targetFramework
=
"net472"
/>
<
package
id
=
"System.IO"
version
=
"4.3.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Net.Http"
version
=
"4.3.3"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Reactive"
version
=
"4.1.1"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Runtime"
version
=
"4.3.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Runtime.CompilerServices.Unsafe"
version
=
"4.5.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Security.Cryptography.Algorithms"
version
=
"4.3.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Security.Cryptography.Encoding"
version
=
"4.3.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Security.Cryptography.Primitives"
version
=
"4.3.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Security.Cryptography.X509Certificates"
version
=
"4.3.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Threading.Tasks.Extensions"
version
=
"4.5.1"
targetFramework
=
"net472"
/>
<
package
id
=
"System.ValueTuple"
version
=
"4.4.0"
targetFramework
=
"net472"
/>
</
packages
>
\ No newline at end of file
TourDataManagerConsoleApplication/Program.cs
View file @
bd519fc6
...
@@ -3,9 +3,26 @@ using TourDataManager;
...
@@ -3,9 +3,26 @@ using TourDataManager;
namespace
TourDataManagerConsoleApplication
{
namespace
TourDataManagerConsoleApplication
{
internal
class
Program
{
internal
class
Program
{
const
string
PersistentPath
=
"C:\\Users\\Bigantounity\\AppData\\LocalLow\\Biganto\\StandalonePlayer"
;
const
string
defaultLogin
=
"demo@biganto.ru"
;
const
string
defaultPassword
=
"demo"
;
public
static
void
Main
(
string
[]
args
){
public
static
void
Main
(
string
[]
args
){
var
isEqual
=
MyUtilities
.
CompareTuples
((
1
,
2
),
(
1
,
2
));
Console
.
Write
(
isEqual
);
var
tourDataManager
=
new
TourDataManager
.
TourDataManager
(
PersistentPath
);
tourDataManager
.
Login
(
defaultLogin
,
defaultPassword
);
Console
.
Read
();
}
public
static
async
void
Login
(){
}
}
}
}
}
}
\ No newline at end of file
TourDataManagerConsoleApplication/TourDataManagerConsoleApplication.csproj
View file @
bd519fc6
...
@@ -33,10 +33,34 @@
...
@@ -33,10 +33,34 @@
<WarningLevel>
4
</WarningLevel>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference
Include=
"mscorlib"
/>
<Reference
Include=
"Ninject, Version=3.3.4.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7"
>
<HintPath>
..\packages\Ninject.3.3.4\lib\net45\Ninject.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System"
/>
<Reference
Include=
"System"
/>
<Reference
Include=
"System.Core"
/>
<Reference
Include=
"System.Core"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.Reactive, Version=4.1.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263"
>
<HintPath>
..\packages\System.Reactive.4.1.1\lib\net46\System.Reactive.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
>
<HintPath>
..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"
>
<HintPath>
..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"
>
<HintPath>
..\packages\System.ValueTuple.4.4.0\lib\net47\System.ValueTuple.dll
</HintPath>
<Private>
True
</Private>
</Reference>
<Reference
Include=
"System.Windows"
/>
<Reference
Include=
"System.Windows.Forms"
/>
<Reference
Include=
"System.Xml"
/>
<Reference
Include=
"System.Xml"
/>
<Reference
Include=
"WindowsBase"
/>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<Compile
Include=
"Program.cs"
/>
<Compile
Include=
"Program.cs"
/>
...
@@ -48,6 +72,9 @@
...
@@ -48,6 +72,9 @@
<Name>
TourDataManager
</Name>
<Name>
TourDataManager
</Name>
</ProjectReference>
</ProjectReference>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<None
Include=
"packages.config"
/>
</ItemGroup>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
Other similar extension points exist, see Microsoft.Common.targets.
...
...
TourDataManagerConsoleApplication/packages.config
0 → 100644
View file @
bd519fc6
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
packages
>
<
package
id
=
"Ninject"
version
=
"3.3.4"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Reactive"
version
=
"4.1.1"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Runtime.CompilerServices.Unsafe"
version
=
"4.5.0"
targetFramework
=
"net472"
/>
<
package
id
=
"System.Threading.Tasks.Extensions"
version
=
"4.5.1"
targetFramework
=
"net472"
/>
<
package
id
=
"System.ValueTuple"
version
=
"4.4.0"
targetFramework
=
"net472"
/>
</
packages
>
\ No newline at end of file
Kirill
@Nobi
mentioned in issue
#1 (closed)
·
Oct 08, 2018
mentioned in issue
#1 (closed)
mentioned in issue #1
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment