Compare commits

..

4 Commits

Author SHA1 Message Date
JustArchi
17a78ac46e Translation updates 2017-06-18 04:34:08 +02:00
JustArchi
c58ecd7762 Packages update 2017-06-18 01:44:21 +02:00
JustArchi
c81fd05755 Include TradeToken in STM announcement 2017-06-18 01:27:45 +02:00
JustArchi
a06fb49232 Bump 2017-06-15 21:53:57 +02:00
41 changed files with 408 additions and 32 deletions

View File

@@ -80,7 +80,7 @@
<Private>False</Private>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.5.0.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.5.0-beta8\lib\Net45\HtmlAgilityPack.dll</HintPath>
<HintPath>..\packages\HtmlAgilityPack.1.5.0-beta9\lib\Net45\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="Humanizer, Version=2.2.0.0, Culture=neutral, PublicKeyToken=979442b78dfc278e, processorArchitecture=MSIL">
<HintPath>..\packages\Humanizer.Core.2.2.0\lib\netstandard1.0\Humanizer.dll</HintPath>

View File

@@ -60,14 +60,16 @@ namespace ArchiSteamFarm {
private static int Timeout = GlobalConfig.DefaultConnectionTimeout * 1000; // This must be int type
private readonly SemaphoreSlim ApiKeySemaphore = new SemaphoreSlim(1);
private readonly Bot Bot;
private readonly SemaphoreSlim PublicInventorySemaphore = new SemaphoreSlim(1);
private readonly SemaphoreSlim SessionSemaphore = new SemaphoreSlim(1);
private readonly SemaphoreSlim SteamApiKeySemaphore = new SemaphoreSlim(1);
private readonly SemaphoreSlim TradeTokenSemaphore = new SemaphoreSlim(1);
private readonly WebBrowser WebBrowser;
private string CachedApiKey;
private bool? CachedPublicInventory;
private string CachedSteamApiKey;
private string CachedTradeToken;
private DateTime LastSessionRefreshCheck = DateTime.MinValue;
private ulong SteamID;
@@ -77,9 +79,10 @@ namespace ArchiSteamFarm {
}
public void Dispose() {
ApiKeySemaphore.Dispose();
PublicInventorySemaphore.Dispose();
SessionSemaphore.Dispose();
SteamApiKeySemaphore.Dispose();
TradeTokenSemaphore.Dispose();
}
internal async Task<bool> AcceptTradeOffer(ulong tradeID) {
@@ -732,6 +735,56 @@ namespace ArchiSteamFarm {
return null;
}
internal async Task<string> GetTradeToken() {
if (CachedTradeToken != null) {
return CachedTradeToken;
}
await TradeTokenSemaphore.WaitAsync().ConfigureAwait(false);
try {
if (CachedTradeToken != null) {
return CachedTradeToken;
}
const string request = SteamCommunityURL + "/my/tradeoffers/privacy?l=english";
HtmlDocument htmlDocument = await WebBrowser.UrlGetToHtmlDocumentRetry(request).ConfigureAwait(false);
if (htmlDocument == null) {
return null;
}
HtmlNode tokenNode = htmlDocument.DocumentNode.SelectSingleNode("//input[@class='trade_offer_access_url']");
if (tokenNode == null) {
Bot.ArchiLogger.LogNullError(nameof(tokenNode));
return null;
}
string value = tokenNode.GetAttributeValue("value", null);
if (string.IsNullOrEmpty(value)) {
Bot.ArchiLogger.LogNullError(nameof(value));
return null;
}
int index = value.IndexOf("token=", StringComparison.Ordinal);
if (index < 0) {
Bot.ArchiLogger.LogNullError(nameof(index));
return null;
}
index += 6;
if (index + 8 < value.Length) {
Bot.ArchiLogger.LogNullError(nameof(index));
return null;
}
CachedTradeToken = value.Substring(index, 8);
return CachedTradeToken;
} finally {
TradeTokenSemaphore.Release();
}
}
internal async Task<bool?> HandleConfirmation(string deviceID, string confirmationHash, uint time, uint confirmationID, ulong confirmationKey, bool accept) {
if (string.IsNullOrEmpty(deviceID) || string.IsNullOrEmpty(confirmationHash) || (time == 0) || (confirmationID == 0) || (confirmationKey == 0)) {
Bot.ArchiLogger.LogNullError(nameof(deviceID) + " || " + nameof(confirmationHash) + " || " + nameof(time) + " || " + nameof(confirmationID) + " || " + nameof(confirmationKey));
@@ -946,8 +999,8 @@ namespace ArchiSteamFarm {
}
internal void OnDisconnected() {
CachedApiKey = CachedTradeToken = null;
CachedPublicInventory = null;
CachedSteamApiKey = null;
SteamID = 0;
}
@@ -1025,18 +1078,18 @@ namespace ArchiSteamFarm {
}
private async Task<string> GetApiKey() {
if (CachedSteamApiKey != null) {
if (CachedApiKey != null) {
// We fetched API key already, and either got valid one, or permanent AccessDenied
// In any case, this is our final result
return CachedSteamApiKey;
return CachedApiKey;
}
// We didn't fetch API key yet
await SteamApiKeySemaphore.WaitAsync().ConfigureAwait(false);
await ApiKeySemaphore.WaitAsync().ConfigureAwait(false);
try {
if (CachedSteamApiKey != null) {
return CachedSteamApiKey;
if (CachedApiKey != null) {
return CachedApiKey;
}
(ESteamApiKeyState State, string Key)? result = await GetApiKeyState().ConfigureAwait(false);
@@ -1049,7 +1102,7 @@ namespace ArchiSteamFarm {
case ESteamApiKeyState.AccessDenied:
// We succeeded in fetching API key, but it resulted in access denied
// Cache the result as empty, API key is unavailable permanently
CachedSteamApiKey = string.Empty;
CachedApiKey = string.Empty;
break;
case ESteamApiKeyState.NotRegisteredYet:
// We succeeded in fetching API key, and it resulted in no key registered yet
@@ -1070,7 +1123,7 @@ namespace ArchiSteamFarm {
case ESteamApiKeyState.Registered:
// We succeeded in fetching API key, and it resulted in registered key
// Cache the result, this is the API key we want
CachedSteamApiKey = result.Value.Key;
CachedApiKey = result.Value.Key;
break;
default:
// We got an unhandled error, this should never happen
@@ -1078,9 +1131,9 @@ namespace ArchiSteamFarm {
break;
}
return CachedSteamApiKey;
return CachedApiKey;
} finally {
SteamApiKeySemaphore.Release();
ApiKeySemaphore.Release();
}
}

View File

@@ -348,7 +348,7 @@ StackTrace:
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Es laufen derzeit {0}/{1} Bots, mit insgesamt {2} Spiel(en) ({3} Karte[n]) übrig zum Sammlen.</value>
<value>Es laufen derzeit {0}/{1} Bots, mit insgesamt {2} Spiel(en) ({3} Karte[n]) übrig zum Sammeln.</value>
<comment>{0} will be replaced by number of active bots, {1} will be replaced by total number of bots, {2} will be replaced by total number of games left to idle, {3} will be replaced by total number of cards left to idle</comment>
</data>
<data name="BotStatusIdling" xml:space="preserve">

View File

@@ -690,5 +690,8 @@ Trazo de pila:
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>Está utilizando una versión que es más reciente que la última versión liberada para su canal de actualización. Por favor, tenga en cuenta que las versiones preliminares están dedicadas a usuarios que saben cómo reportar errores, tratar con problemas y dar sus comentarios - no se dará soporte técnico.</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>Uso de memoria actual: {0} MB.</value>
<comment>{0} will be replaced by number (in megabytes) of memory being used</comment>
</data>
</root>

View File

@@ -693,5 +693,8 @@ ASF 실행 파일의 이름이 적절한지 확인하시기 바랍니다!</value
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>마지막으로 릴리즈된 버전보다 최신 버전을 사용 중입니다. 시험판 버전은 버그 리포트, 문제 해결, 피드백을 제공하는 법을 아는 유저에게만 제공됩니다. - 기술 지원은 제공되지 않습니다.</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>현재 메모리 사용량: {0} MB.</value>
<comment>{0} will be replaced by number (in megabytes) of memory being used</comment>
</data>
</root>

View File

@@ -152,7 +152,7 @@ StackTrace:
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>A configuração global não pôde ser carregada, tenha certeza que {0} existe e é válido! se estiver com alguma dúvida, siga o guia de configuração na Wiki.</value>
<value>A configuração global não pôde ser carregada. Confirme que {0} existe e é válido! Siga o guia "setting up" (configuração) na wiki caso esteja confuso.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
@@ -163,7 +163,7 @@ StackTrace:
<value>Recusando a execução desta função devido ao DeviceID inválido no ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Nenhum bot configurado, será que você não esqueceu de configurar o seu ASF?</value>
<value>Nenhum bot configurado, será que você não esqueceu de algo?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} é nulo!</value>
@@ -469,7 +469,7 @@ StackTrace:
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>O processo de farm automático foi pausado!</value>
<value>O processo de coleta automático foi pausado!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>O processo de farm automático foi retomado!</value>
@@ -521,7 +521,7 @@ StackTrace:
<value>Proposta de troca falhou!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>A Troca não pode ser enviada porque não há nenhum usuário com permissão master definida!</value>
<value>A troca não pode ser enviada porque não há nenhum usuário com permissão "master" definida!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Você não configurou nenhum tipo de item para coletar!</value>
@@ -615,7 +615,7 @@ StackTrace:
<value>Conexão com a rede Steam perdida. Reconectando...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>A conta não está mais sendo usada, resumindo processo de farm!</value>
<value>A conta não está mais sendo usada: processo de coleta de cartas retomado!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>A conta está sendo usada no momento, o ASF voltará a farmar quando ela estiver livre...</value>
@@ -648,7 +648,7 @@ StackTrace:
<comment>{0} will be replaced by service name that is being initialized</comment>
</data>
<data name="WarningPrivacyPolicy" xml:space="preserve">
<value>Por favor revise a seção de política de privacidade na nossa wiki se você está preocupado com o que o ASF realmente está fazendo!</value>
<value>Por favor, consulte a nossa seção de política de privacidade na wiki caso esteja preocupado com o que o ASF está de fato fazendo!</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>Parece que é a sua primeira vez abrindo o programa, bem-vindo(a)!</value>
@@ -661,7 +661,7 @@ StackTrace:
<comment>{0} will be replaced by culture code, such as "en-US", {1} will be replaced by completeness percentage, such as "78.5%"</comment>
</data>
<data name="IdlingGameNotPossible" xml:space="preserve">
<value>O farm de {0} ({1}) está temporariamente desativado, pois o ASF não é capaz de farmar esse jogo neste momento.</value>
<value>{0} processo de receber cartas para ({1}) está temporariamente desativado, o ASF não é capaz de jogar este jogo no momento.</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="WarningIdlingGameMismatch" xml:space="preserve">
@@ -691,5 +691,8 @@ StackTrace:
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>Você está usando uma versão que é mais nova que a última lançada para seu canal de atualizações. Por favor, tenha em mente que versões não finalizadas são dedicadas à usuários que sabem como reportar bugs, lidar com problemas e dar feedback - Nenhum suporte técnico será dado.</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>Uso de memória atual: {0} MB.</value>
<comment>{0} will be replaced by number (in megabytes) of memory being used</comment>
</data>
</root>

View File

@@ -44,7 +44,7 @@ namespace ArchiSteamFarm {
internal const string ServiceDescription = "ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.";
internal const string ServiceName = "ArchiSteamFarm";
internal const string StatisticsServer = "asf.justarchi.net";
internal const string VersionNumber = "2.3.2.0";
internal const string VersionNumber = "2.3.2.1";
internal static readonly Version Version = Assembly.GetEntryAssembly().GetName().Version;
}

View File

@@ -98,7 +98,8 @@ namespace ArchiSteamFarm {
}
// Don't announce if we don't meet conditions
if (!Bot.HasMobileAuthenticator || !Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.SteamTradeMatcher) || !await Bot.ArchiWebHandler.HasValidApiKey().ConfigureAwait(false) || !await Bot.ArchiWebHandler.HasPublicInventory().ConfigureAwait(false)) {
string tradeToken;
if (!Bot.HasMobileAuthenticator || !Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.SteamTradeMatcher) || !await Bot.ArchiWebHandler.HasValidApiKey().ConfigureAwait(false) || !await Bot.ArchiWebHandler.HasPublicInventory().ConfigureAwait(false) || string.IsNullOrEmpty(tradeToken = await Bot.ArchiWebHandler.GetTradeToken().ConfigureAwait(false))) {
LastAnnouncementCheck = DateTime.UtcNow;
ShouldSendHeartBeats = false;
return;
@@ -139,12 +140,13 @@ namespace ArchiSteamFarm {
}
string request = await GetURL().ConfigureAwait(false) + "/api/Announce";
Dictionary<string, string> data = new Dictionary<string, string>(6) {
Dictionary<string, string> data = new Dictionary<string, string>(7) {
{ "SteamID", Bot.SteamID.ToString() },
{ "Guid", Program.GlobalDatabase.Guid.ToString("N") },
{ "Nickname", nickname },
{ "AvatarHash", avatarHash },
{ "MatchEverything", matchEverything ? "1" : "0" },
{ "TradeToken", tradeToken },
{ "CardsCount", inventory.Count.ToString() }
};

View File

@@ -2,7 +2,7 @@
<packages>
<package id="Costura.Fody" version="1.6.2" targetFramework="net461" developmentDependency="true" />
<package id="Fody" version="2.1.0" targetFramework="net461" developmentDependency="true" />
<package id="HtmlAgilityPack" version="1.5.0-beta8" targetFramework="net461" />
<package id="HtmlAgilityPack" version="1.5.0-beta9" targetFramework="net461" />
<package id="Humanizer" version="2.2.0" targetFramework="net461" />
<package id="Humanizer.Core" version="2.2.0" targetFramework="net461" />
<package id="Humanizer.Core.af" version="2.2.0" targetFramework="net461" />

View File

@@ -148,7 +148,7 @@
<value>Du kan ikke omdøbe global konfiguration!</value>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>Konfigurationsmappe kunne ikke blive fundet!</value>
<value>Konfigurationsmappe blev ikke fundet!</value>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Konfigureret {0} egenskab er forkert: {1}</value>

View File

@@ -49,7 +49,7 @@
<Private>False</Private>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.5.0.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.5.0-beta8\lib\Net45\HtmlAgilityPack.dll</HintPath>
<HintPath>..\packages\HtmlAgilityPack.1.5.0-beta9\lib\Net45\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="Humanizer, Version=2.2.0.0, Culture=neutral, PublicKeyToken=979442b78dfc278e, processorArchitecture=MSIL">
<HintPath>..\packages\Humanizer.Core.2.2.0\lib\netstandard1.0\Humanizer.dll</HintPath>

View File

@@ -2,7 +2,7 @@
<packages>
<package id="Costura.Fody" version="1.6.2" targetFramework="net461" developmentDependency="true" />
<package id="Fody" version="2.1.0" targetFramework="net461" developmentDependency="true" />
<package id="HtmlAgilityPack" version="1.5.0-beta8" targetFramework="net461" />
<package id="HtmlAgilityPack" version="1.5.0-beta9" targetFramework="net461" />
<package id="Humanizer" version="2.2.0" targetFramework="net461" />
<package id="Humanizer.Core" version="2.2.0" targetFramework="net461" />
<package id="Humanizer.Core.af" version="2.2.0" targetFramework="net461" />

View File

@@ -1121,6 +1121,58 @@
</summary>
<returns>The saved string.</returns>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String,System.Boolean)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
<param name="throwError">true to throw Error if class name exists, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass">
<summary>
Removes the class attribute from the node.
</summary>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.Boolean)">
<summary>
Removes the class attribute from the node.
</summary>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String,System.Boolean)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String,System.Boolean)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="T:HtmlAgilityPack.HtmlNodeCollection">
<summary>
Represents a combined list and collection of HTML nodes.

View File

@@ -1121,6 +1121,58 @@
</summary>
<returns>The saved string.</returns>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String,System.Boolean)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
<param name="throwError">true to throw Error if class name exists, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass">
<summary>
Removes the class attribute from the node.
</summary>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.Boolean)">
<summary>
Removes the class attribute from the node.
</summary>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String,System.Boolean)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String,System.Boolean)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="T:HtmlAgilityPack.HtmlNodeCollection">
<summary>
Represents a combined list and collection of HTML nodes.

View File

@@ -1121,6 +1121,58 @@
</summary>
<returns>The saved string.</returns>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String,System.Boolean)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
<param name="throwError">true to throw Error if class name exists, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass">
<summary>
Removes the class attribute from the node.
</summary>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.Boolean)">
<summary>
Removes the class attribute from the node.
</summary>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String,System.Boolean)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String,System.Boolean)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="T:HtmlAgilityPack.HtmlNodeCollection">
<summary>
Represents a combined list and collection of HTML nodes.

View File

@@ -1121,6 +1121,58 @@
</summary>
<returns>The saved string.</returns>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String,System.Boolean)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
<param name="throwError">true to throw Error if class name exists, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass">
<summary>
Removes the class attribute from the node.
</summary>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.Boolean)">
<summary>
Removes the class attribute from the node.
</summary>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String,System.Boolean)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String,System.Boolean)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="T:HtmlAgilityPack.HtmlNodeCollection">
<summary>
Represents a combined list and collection of HTML nodes.

View File

@@ -655,6 +655,58 @@
</summary>
<returns>The saved string.</returns>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String,System.Boolean)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
<param name="throwError">true to throw Error if class name exists, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass">
<summary>
Removes the class attribute from the node.
</summary>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.Boolean)">
<summary>
Removes the class attribute from the node.
</summary>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String,System.Boolean)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String,System.Boolean)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="P:HtmlAgilityPack.HtmlNode.Attributes">
<summary>
Gets the collection of HTML attributes for this node. May not be null.

View File

@@ -1256,6 +1256,58 @@
</summary>
<returns>The saved string.</returns>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.AddClass(System.String,System.Boolean)">
<summary>
Adds one or more classes to this node.
</summary>
<param name="name">The node list to add. May not be null.</param>
<param name="throwError">true to throw Error if class name exists, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass">
<summary>
Removes the class attribute from the node.
</summary>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.Boolean)">
<summary>
Removes the class attribute from the node.
</summary>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.RemoveClass(System.String,System.Boolean)">
<summary>
Removes the specified class from the node.
</summary>
<param name="name">The class being removed. May not be <c>null</c>.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.ReplaceClass(System.String,System.String,System.Boolean)">
<summary>
Replaces the class name oldClass with newClass name.
</summary>
<param name="newClass">The new class name.</param>
<param name="oldClass">The class being replaced.</param>
<param name="throwError">true to throw Error if class name doesn't exist, false otherwise.</param>
</member>
<member name="M:HtmlAgilityPack.HtmlNode.CreateNavigator">
<summary>
Creates a new XPathNavigator object for navigating this HTML node.