handle resetting rate limits

This commit is contained in:
bitfl0wer 2023-04-14 16:56:54 +02:00
parent 2b1528564d
commit d00296790f
1 changed files with 56 additions and 21 deletions

View File

@ -66,15 +66,25 @@ impl LimitedRequester {
LimitType::Ip => {} LimitType::Ip => {}
LimitType::AuthLogin => { LimitType::AuthLogin => {
let entry = limits_copy.get_mut(&LimitType::AuthLogin).unwrap(); let entry = limits_copy.get_mut(&LimitType::AuthLogin).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
} }
LimitType::AbsoluteRegister => { LimitType::AbsoluteRegister => {
let entry = limits_copy.get_mut(&LimitType::AbsoluteRegister).unwrap(); let entry = limits_copy.get_mut(&LimitType::AbsoluteRegister).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
// AbsoluteRegister and AuthRegister both need to be updated, if a Register event // AbsoluteRegister and AuthRegister both need to be updated, if a Register event
// happens. // happens.
limits_copy limits_copy
@ -84,9 +94,14 @@ impl LimitedRequester {
} }
LimitType::AuthRegister => { LimitType::AuthRegister => {
let entry = limits_copy.get_mut(&LimitType::AuthRegister).unwrap(); let entry = limits_copy.get_mut(&LimitType::AuthRegister).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
// AbsoluteRegister and AuthRegister both need to be updated, if a Register event // AbsoluteRegister and AuthRegister both need to be updated, if a Register event
// happens. // happens.
limits_copy limits_copy
@ -96,27 +111,47 @@ impl LimitedRequester {
} }
LimitType::AbsoluteMessage => { LimitType::AbsoluteMessage => {
let entry = limits_copy.get_mut(&LimitType::AbsoluteMessage).unwrap(); let entry = limits_copy.get_mut(&LimitType::AbsoluteMessage).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
} }
LimitType::Channel => { LimitType::Channel => {
let entry = limits_copy.get_mut(&LimitType::Channel).unwrap(); let entry = limits_copy.get_mut(&LimitType::Channel).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
} }
LimitType::Guild => { LimitType::Guild => {
let entry = limits_copy.get_mut(&LimitType::Guild).unwrap(); let entry = limits_copy.get_mut(&LimitType::Guild).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
} }
LimitType::Webhook => { LimitType::Webhook => {
let entry = limits_copy.get_mut(&LimitType::Webhook).unwrap(); let entry = limits_copy.get_mut(&LimitType::Webhook).unwrap();
entry.remaining = remaining; if reset != entry.reset {
entry.limit = limit; entry.reset = reset;
entry.reset = reset; entry.remaining = limit;
entry.limit = limit;
} else {
entry.remaining = remaining;
entry.limit = limit;
}
} }
} }
} }