handle resetting rate limits
This commit is contained in:
parent
2b1528564d
commit
d00296790f
49
src/limit.rs
49
src/limit.rs
|
@ -66,15 +66,25 @@ impl LimitedRequester {
|
|||
LimitType::Ip => {}
|
||||
LimitType::AuthLogin => {
|
||||
let entry = limits_copy.get_mut(&LimitType::AuthLogin).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
}
|
||||
LimitType::AbsoluteRegister => {
|
||||
let entry = limits_copy.get_mut(&LimitType::AbsoluteRegister).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
// AbsoluteRegister and AuthRegister both need to be updated, if a Register event
|
||||
// happens.
|
||||
limits_copy
|
||||
|
@ -84,9 +94,14 @@ impl LimitedRequester {
|
|||
}
|
||||
LimitType::AuthRegister => {
|
||||
let entry = limits_copy.get_mut(&LimitType::AuthRegister).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
// AbsoluteRegister and AuthRegister both need to be updated, if a Register event
|
||||
// happens.
|
||||
limits_copy
|
||||
|
@ -96,27 +111,47 @@ impl LimitedRequester {
|
|||
}
|
||||
LimitType::AbsoluteMessage => {
|
||||
let entry = limits_copy.get_mut(&LimitType::AbsoluteMessage).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
}
|
||||
LimitType::Channel => {
|
||||
let entry = limits_copy.get_mut(&LimitType::Channel).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
}
|
||||
LimitType::Guild => {
|
||||
let entry = limits_copy.get_mut(&LimitType::Guild).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
}
|
||||
LimitType::Webhook => {
|
||||
let entry = limits_copy.get_mut(&LimitType::Webhook).unwrap();
|
||||
if reset != entry.reset {
|
||||
entry.reset = reset;
|
||||
entry.remaining = limit;
|
||||
entry.limit = limit;
|
||||
} else {
|
||||
entry.remaining = remaining;
|
||||
entry.limit = limit;
|
||||
entry.reset = reset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue