• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ensc / r-tftpd / 6956988158

22 Nov 2023 11:52AM UTC coverage: 71.499% (+1.1%) from 70.425%
6956988158

push

github

ensc
CI: upload Cargo.lock as artifact

1884 of 2635 relevant lines covered (71.5%)

383.9 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

78.26
/mod-proxy/src/http/header.rs
1
use crate::{ Result, Error };
2
use std::time::{SystemTime, Instant};
3
use super::time::TimeDelta;
4

5
pub trait HttpHeader {
6
    fn as_system_time(&self, name: reqwest::header::HeaderName) -> Result<Option<SystemTime>>;
7
    fn as_u64(&self, name: reqwest::header::HeaderName) -> Result<Option<u64>>;
8

9
    fn as_time_delta(&self, reftm: SystemTime, name: reqwest::header::HeaderName) -> Result<Option<TimeDelta>> {
111✔
10
        let tm = self.as_system_time(name)?;
111✔
11

12
        Ok(match tm {
222✔
13
            Some(t)        => Some(TimeDelta::from_systemtime(reftm, t).ok_or(Error::BadHttpTime)?),
1✔
14
            None        => None,
110✔
15
        })
16
    }
111✔
17

18
    fn as_instant(&self, now: Instant, reftm: SystemTime, name: reqwest::header::HeaderName) -> Result<Option<Instant>> {
111✔
19
        let delta = self.as_time_delta(reftm, name)?;
111✔
20

21
        Ok(match delta {
222✔
22
            Some(d)        => Some((now + d).ok_or(Error::BadHttpTime)?),
1✔
23
            None        => None,
110✔
24
        })
25
    }
111✔
26
}
27

28
impl HttpHeader for reqwest::header::HeaderMap {
29
    fn as_system_time(&self, name: reqwest::header::HeaderName) -> Result<Option<SystemTime>> {
335✔
30
        match self.get(name) {
335✔
31
            Some(tm)        => Ok(Some(httpdate::parse_http_date(tm.to_str()
114✔
32
                                                             .map_err(|_| Error::BadHttpTime)?)?)),
449✔
33
            None        => Ok(None),
221✔
34
        }
35
    }
335✔
36

37
    fn as_u64(&self, name: reqwest::header::HeaderName) -> Result<Option<u64>> {
×
38
        match self.get(name) {
×
39
            Some(v)        => Ok(Some(super::as_u64(v.as_bytes())?)),
×
40
            None        => Ok(None),
×
41
        }
42
    }
×
43
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc