This commit is contained in:
Garry Newman 2016-07-07 14:11:23 +01:00
parent 2caf093e6d
commit 3844c74d9c
3 changed files with 31 additions and 12 deletions

View File

@ -46,13 +46,13 @@ public void ClientAuthSessionTicket()
{ {
using ( var client = new Facepunch.Steamworks.Client( 252490 ) ) using ( var client = new Facepunch.Steamworks.Client( 252490 ) )
{ {
var ticket = client.GetAuthSessionTicket(); var ticket = client.Auth.GetAuthSessionTicket();
Assert.IsTrue( ticket != null ); Assert.IsTrue( ticket != null );
Assert.IsTrue( ticket.Handle != 0 ); Assert.IsTrue( ticket.Handle != 0 );
Assert.IsTrue( ticket.Data.Length > 0 ); Assert.IsTrue( ticket.Data.Length > 0 );
client.CancelAuthTicket( ticket ); client.Auth.CancelAuthTicket( ticket );
Assert.IsTrue( ticket.Handle == 0 ); Assert.IsTrue( ticket.Handle == 0 );
} }

View File

@ -7,7 +7,25 @@ namespace Facepunch.Steamworks
{ {
public partial class Client : IDisposable public partial class Client : IDisposable
{ {
public class AuthTicket Auth _auth;
public Auth Auth
{
get
{
if ( _auth == null )
_auth = new Auth{ client = this };
return _auth;
}
}
}
public class Auth
{
internal Client client;
public class Ticket
{ {
public byte[] Data; public byte[] Data;
public uint Handle; public uint Handle;
@ -17,19 +35,19 @@ public class AuthTicket
/// Creates an auth ticket. /// Creates an auth ticket.
/// Which you can send to a server to authenticate that you are who you say you are. /// Which you can send to a server to authenticate that you are who you say you are.
/// </summary> /// </summary>
public unsafe AuthTicket GetAuthSessionTicket() public unsafe Ticket GetAuthSessionTicket()
{ {
var data = new byte[1024]; var data = new byte[1024];
fixed ( byte* b = data ) fixed ( byte* b = data )
{ {
uint ticketLength = 0; uint ticketLength = 0;
uint ticket = _user.GetAuthSessionTicket( (IntPtr) b, data.Length, ref ticketLength ); uint ticket = client._user.GetAuthSessionTicket( (IntPtr) b, data.Length, ref ticketLength );
if ( ticket == 0 ) if ( ticket == 0 )
return null; return null;
return new AuthTicket() return new Ticket()
{ {
Data = data.Take( (int)ticketLength ).ToArray(), Data = data.Take( (int)ticketLength ).ToArray(),
Handle = ticket Handle = ticket
@ -41,9 +59,9 @@ public unsafe AuthTicket GetAuthSessionTicket()
/// Cancels a ticket. /// Cancels a ticket.
/// You should cancel your ticket when you close the game or leave a server. /// You should cancel your ticket when you close the game or leave a server.
/// </summary> /// </summary>
public void CancelAuthTicket( AuthTicket ticket ) public void CancelAuthTicket( Ticket ticket )
{ {
_user.CancelAuthTicket( ticket.Handle ); client._user.CancelAuthTicket( ticket.Handle );
ticket.Handle = 0; ticket.Handle = 0;
ticket.Data = null; ticket.Data = null;
} }

View File

@ -7,11 +7,12 @@ namespace Facepunch.Steamworks
{ {
public partial class Client : IDisposable public partial class Client : IDisposable
{ {
private Valve.Steamworks.ISteamClient _client;
private uint _hpipe; private uint _hpipe;
private uint _huser; private uint _huser;
private Valve.Steamworks.ISteamUser _user;
private Valve.Steamworks.ISteamFriends _friends; internal Valve.Steamworks.ISteamClient _client;
internal Valve.Steamworks.ISteamUser _user;
internal Valve.Steamworks.ISteamFriends _friends;
/// <summary> /// <summary>
/// Current running program's AppId /// Current running program's AppId