tanakh / cargo-atcoder

Cargo subcommand for AtCoder
BSD 3-Clause "New" or "Revised" License
397 stars 36 forks source link

Use `ureq`, handling cookies and redirects manually #27

Closed qryxip closed 4 years ago

qryxip commented 4 years ago

Work in progress.

This PR replaces reqwest with ureq.

I used cookie_store::CookieStore directly and asserted that ureq/cookie is surely disabled in the following way, as ureq::Agent::set_cookie does not seem to work properly.

use ureq::Agent;

const _ASSERT_THE_UREQ_COOKIE_FEATURE_IS_DISABLED: () = {
    enum AssertTheAssocFnAgentCookieIsNotImplemented {}

    trait AgentExt {
        fn cookie(&self) -> AssertTheAssocFnAgentCookieIsNotImplemented {
            unreachable!();
        }
    }

    impl AgentExt for Agent {}

    let _: fn(&Agent) -> AssertTheAssocFnAgentCookieIsNotImplemented = Agent::cookie;
};