mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 00:15:15 +08:00
* Implement enhanced authentication for client and server. * Update samples * Add abstraction layer * Merge master * Use dedicated class for public API. * Update release notes * Rename methods to fit naming scheme * Fix unit tests and samples
70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System.Text;
|
|
using MQTTnet.Packets;
|
|
|
|
namespace MQTTnet.Server.EnhancedAuthentication;
|
|
|
|
public sealed class ExchangeEnhancedAuthenticationOptionsFactory
|
|
{
|
|
readonly ExchangeEnhancedAuthenticationOptions _options = new();
|
|
|
|
public ExchangeEnhancedAuthenticationOptions Build()
|
|
{
|
|
return _options;
|
|
}
|
|
|
|
public ExchangeEnhancedAuthenticationOptionsFactory WithAuthenticationData(byte[] authenticationData)
|
|
{
|
|
_options.AuthenticationData = authenticationData;
|
|
|
|
return this;
|
|
}
|
|
|
|
public ExchangeEnhancedAuthenticationOptionsFactory WithAuthenticationData(string authenticationData)
|
|
{
|
|
if (authenticationData == null)
|
|
{
|
|
_options.AuthenticationData = null;
|
|
}
|
|
else
|
|
{
|
|
_options.AuthenticationData = Encoding.UTF8.GetBytes(authenticationData);
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
public ExchangeEnhancedAuthenticationOptionsFactory WithReasonString(string reasonString)
|
|
{
|
|
_options.ReasonString = reasonString;
|
|
|
|
return this;
|
|
}
|
|
|
|
public ExchangeEnhancedAuthenticationOptionsFactory WithUserProperties(List<MqttUserProperty> userProperties)
|
|
{
|
|
_options.UserProperties = userProperties;
|
|
|
|
return this;
|
|
}
|
|
|
|
public ExchangeEnhancedAuthenticationOptionsFactory WithUserProperty(string name, string value)
|
|
{
|
|
if (name == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(name));
|
|
}
|
|
|
|
if (_options.UserProperties == null)
|
|
{
|
|
_options.UserProperties = new List<MqttUserProperty>();
|
|
}
|
|
|
|
_options.UserProperties.Add(new MqttUserProperty(name, value));
|
|
|
|
return this;
|
|
}
|
|
} |