reduce code duplication
This commit is contained in:
parent
04d03e1d3c
commit
2e964145bd
64
src/limit.rs
64
src/limit.rs
|
@ -33,6 +33,21 @@ impl LimitedRequester {
|
||||||
queue.push_back(request);
|
queue.push_back(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn update_limit_entry(entry: &mut Limit, reset: u64, remaining: u64, limit: u64) {
|
||||||
|
if reset != entry.reset {
|
||||||
|
entry.reset = reset;
|
||||||
|
entry.remaining = limit;
|
||||||
|
entry.limit = limit;
|
||||||
|
} else {
|
||||||
|
entry.remaining = remaining;
|
||||||
|
entry.limit = limit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn decrement_limit_entry(entry: &mut Limit) {
|
||||||
|
entry.remaining -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
fn update_limits(&mut self, response: Response, limit_type: LimitType) {
|
fn update_limits(&mut self, response: Response, limit_type: LimitType) {
|
||||||
// TODO: Make this work
|
// TODO: Make this work
|
||||||
let remaining = match response.headers().get("X-RateLimit-Remaining") {
|
let remaining = match response.headers().get("X-RateLimit-Remaining") {
|
||||||
|
@ -67,23 +82,17 @@ impl LimitedRequester {
|
||||||
LimitType::AuthLogin => {
|
LimitType::AuthLogin => {
|
||||||
let entry = limits_copy.get_mut(&LimitType::AuthLogin).unwrap();
|
let entry = limits_copy.get_mut(&LimitType::AuthLogin).unwrap();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
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();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
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.
|
||||||
|
@ -95,12 +104,9 @@ impl LimitedRequester {
|
||||||
LimitType::AuthRegister => {
|
LimitType::AuthRegister => {
|
||||||
let entry = limits_copy.get_mut(&LimitType::AuthRegister).unwrap();
|
let entry = limits_copy.get_mut(&LimitType::AuthRegister).unwrap();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
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.
|
||||||
|
@ -112,45 +118,33 @@ impl LimitedRequester {
|
||||||
LimitType::AbsoluteMessage => {
|
LimitType::AbsoluteMessage => {
|
||||||
let entry = limits_copy.get_mut(&LimitType::AbsoluteMessage).unwrap();
|
let entry = limits_copy.get_mut(&LimitType::AbsoluteMessage).unwrap();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
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();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
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();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
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();
|
||||||
if reset != entry.reset {
|
if reset != entry.reset {
|
||||||
entry.reset = reset;
|
LimitedRequester::update_limit_entry(entry, reset, limit, limit);
|
||||||
entry.remaining = limit;
|
|
||||||
entry.limit = limit;
|
|
||||||
} else {
|
} else {
|
||||||
entry.remaining = remaining;
|
LimitedRequester::update_limit_entry(entry, reset, remaining, limit);
|
||||||
entry.limit = limit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue