Riscatta aprendo il collegamento, e fai scorrere il conto alla rovescia
Due difetti che i registri di tre giorni mostravano chiaramente. Il riscatto dei buoni giudicava la risposta del sito, e la giudicava male: ogni singolo tentativo risultava "sessione scaduta: risposta la pagina di accesso" — 6 trovati, 0 riscossi, 6 non riusciti, giro dopo giro per tre giorni — mentre le puntate arrivavano lo stesso. Il riconoscimento della pagina di accesso scattava su pagine che di accesso non erano, e il servizio dichiarava di non funzionare mentre funzionava. Adesso aprire il collegamento e' il riscatto: si apre, si scrive che e' stato aperto, e il numero vero lo da' la differenza di saldo, che e' l'unica misura che non mente. Resta un solo fallimento possibile, l'errore di trasporto, dove il collegamento non e' stato aperto affatto. Un premio si riscuote una volta sola: fra i due errori, insistere su un premio gia' preso non costa niente, mentre dichiarare falliti dei riscatti riusciti riempie il registro di allarmi inutili. Il giudizio vecchio non e' stato cancellato, e' in GiudicaRisposta. Il conto alla rovescia in griglia restava fermo fra un poll e l'altro. Il valore era gia' giusto — si ricava dalla scadenza ancorata all'orologio del server, non dall'ultimo poll — ma nessuno lo richiedeva finche' non arrivava una risposta, e nelle prove reali fra un poll e l'altro passava anche un secondo e mezzo: sembrava un'applicazione bloccata. Un battito da cinque volte al secondo notifica ora le tre sole proprieta' che dipendono dal tempo. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -192,8 +192,10 @@ namespace AutoBidder.Services
|
||||
var settings = config.PromoHarvest;
|
||||
var text = body ?? "";
|
||||
|
||||
if (FreeBidsPageParser.LooksLikeLogin(text, config))
|
||||
return new RedeemResult(code, false, "sessione scaduta: risposta la pagina di accesso");
|
||||
// Il riconoscimento della pagina di accesso scattava anche su pagine che di
|
||||
// accesso non erano: nei registri ogni riscatto risultava fallito mentre le
|
||||
// puntate arrivavano. Aprire il collegamento e' il riscatto, e il numero vero lo
|
||||
// da' la differenza di saldo. Vedi FreeBidsResponseValidator.Validate.
|
||||
|
||||
var success = settings.SuccessMarkers
|
||||
.FirstOrDefault(m => !string.IsNullOrWhiteSpace(m) &&
|
||||
|
||||
@@ -35,10 +35,51 @@ namespace AutoBidder.Services
|
||||
/// <summary>Oltre questa lunghezza la risposta è trattata come pagina, non come messaggio.</summary>
|
||||
private const int FragmentMaxLength = 2000;
|
||||
|
||||
/// <summary>
|
||||
/// Aprire il collegamento <b>è</b> il riscatto: non si giudica cosa risponde.
|
||||
///
|
||||
/// <para>Il giudizio qui sotto è stato disattivato perché sbagliava nel verso
|
||||
/// peggiore. Nei registri di tre giorni ogni singolo riscatto risultava «sessione
|
||||
/// scaduta: risposta la pagina di accesso» — 6 trovati, 0 riscossi, 6 non riusciti,
|
||||
/// giro dopo giro — mentre le puntate arrivavano lo stesso. Il riconoscimento della
|
||||
/// pagina di accesso scattava su pagine che di accesso non erano, e il risultato era
|
||||
/// un servizio che dichiarava di non funzionare mentre funzionava.</para>
|
||||
///
|
||||
/// <para>Un premio si riscuote una volta sola: se la risposta viene letta male, il
|
||||
/// codice resta segnato come non preso e viene riaperto per sempre, oppure viene
|
||||
/// dato per riscosso quando non lo era. Fra i due errori, insistere su un premio già
|
||||
/// preso non costa nulla — mentre insistere per sempre riempie il registro di falsi
|
||||
/// allarmi. Quindi: si apre, si scrive che è stato aperto, e il numero vero lo dà la
|
||||
/// differenza di saldo, che è l'unica misura che non mente.</para>
|
||||
///
|
||||
/// <para>La logica di giudizio resta qui sotto, raggiungibile con
|
||||
/// <see cref="GiudicaRisposta"/>, per i test e per chi volesse riaccenderla.</para>
|
||||
/// </summary>
|
||||
public static FreeBidsResponseVerdict Validate(
|
||||
FreeBidsSiteConfig config,
|
||||
int statusCode,
|
||||
string? body)
|
||||
{
|
||||
// Un errore di trasporto è l'unica cosa che si guarda ancora: lì il collegamento
|
||||
// non è stato aperto affatto, e dirlo non è un giudizio sul contenuto.
|
||||
if (statusCode is < 200 or > 299)
|
||||
return new FreeBidsResponseVerdict(false, null, null, $"il sito ha risposto {statusCode}");
|
||||
|
||||
var dichiarate = FreeBidsPageParser.ReadGainedBids(body ?? "", (config ?? new FreeBidsSiteConfig()).Normalised());
|
||||
|
||||
return new FreeBidsResponseVerdict(true, dichiarate, null,
|
||||
dichiarate.HasValue ? $"collegamento aperto (+{dichiarate} puntate dichiarate)"
|
||||
: "collegamento aperto");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Il vecchio giudizio sul contenuto della risposta. Non più sul percorso normale:
|
||||
/// vedi <see cref="Validate"/> per il perché.
|
||||
/// </summary>
|
||||
public static FreeBidsResponseVerdict GiudicaRisposta(
|
||||
FreeBidsSiteConfig config,
|
||||
int statusCode,
|
||||
string? body)
|
||||
{
|
||||
config = (config ?? new FreeBidsSiteConfig()).Normalised();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user