Some lint-style changes suggested by clippy.
This commit is contained in:
parent
cde078317a
commit
38711abc37
@ -10,13 +10,14 @@ use std::path::Path;
|
||||
|
||||
pub fn crawl(db: &PgConnection, photos: &PhotosDir, only_in: &Path)
|
||||
-> Result<(), Error> {
|
||||
photos.find_files(only_in,
|
||||
&|path, exif| {
|
||||
match save_photo(&db, path, &exif) {
|
||||
Ok(()) => debug!("Saved photo {}", path),
|
||||
Err(e) => warn!("Failed to save photo {}: {:?}", path, e),
|
||||
}
|
||||
})?;
|
||||
photos.find_files(
|
||||
only_in,
|
||||
&|path, exif| {
|
||||
match save_photo(db, path, exif) {
|
||||
Ok(()) => debug!("Saved photo {}", path),
|
||||
Err(e) => warn!("Failed to save photo {}: {:?}", path, e),
|
||||
}
|
||||
})?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -26,8 +27,8 @@ fn save_photo(db: &PgConnection,
|
||||
-> Result<(), Error> {
|
||||
let photo =
|
||||
match Photo::create_or_set_basics(db, file_path,
|
||||
find_date(&exif).ok(),
|
||||
find_rotation(&exif)?,
|
||||
find_date(exif).ok(),
|
||||
find_rotation(exif)?,
|
||||
find_camera(db, exif)?)? {
|
||||
Modification::Created(photo) => {
|
||||
info!("Created {:?}", photo);
|
||||
@ -42,7 +43,7 @@ fn save_photo(db: &PgConnection,
|
||||
photo
|
||||
}
|
||||
};
|
||||
if let Some((lat, long)) = find_position(&exif)? {
|
||||
if let Some((lat, long)) = find_position(exif)? {
|
||||
debug!("Position for {} is {} {}", file_path, lat, long);
|
||||
use schema::positions::dsl::*;
|
||||
if let Ok((pos, clat, clong)) =
|
||||
@ -89,7 +90,7 @@ fn find_camera(db: &PgConnection,
|
||||
}
|
||||
|
||||
fn find_rotation(exif: &ExifData) -> Result<i16, Error> {
|
||||
if let Some(ref value) = find_entry(exif, &ExifTag::Orientation) {
|
||||
if let Some(value) = find_entry(exif, &ExifTag::Orientation) {
|
||||
if let TagValue::U16(ref v) = value.value {
|
||||
let n = v[0];
|
||||
debug!("Raw orientation is {}", n);
|
||||
|
@ -24,7 +24,7 @@ pub fn one(db: &PgConnection,
|
||||
return Err(Error::Other(format!("File {} does not exist",
|
||||
tpath)));
|
||||
}
|
||||
let photo = register_photo(db, &tpath)?;
|
||||
let photo = register_photo(db, tpath)?;
|
||||
println!("New photo {:?} is public.", photo);
|
||||
Ok(())
|
||||
}
|
||||
@ -47,7 +47,7 @@ fn register_photo(db: &PgConnection,
|
||||
-> Result<Photo, DieselError> {
|
||||
use schema::photos::dsl::{photos, is_public};
|
||||
let photo =
|
||||
match Photo::create_or_set_basics(&db, &tpath, None, 0, None)? {
|
||||
match Photo::create_or_set_basics(db, tpath, None, 0, None)? {
|
||||
Modification::Created(photo) => photo,
|
||||
Modification::Updated(photo) => photo,
|
||||
Modification::Unchanged(photo) => photo,
|
||||
|
@ -24,9 +24,9 @@ pub fn precache(db: &PgConnection, pd: &PhotosDir) -> Result<(), Error> {
|
||||
.load::<Photo>(db)?;
|
||||
let no_expire = 0;
|
||||
for photo in photos {
|
||||
n = n + 1;
|
||||
n += 1;
|
||||
let key = &photo.cache_key(&size);
|
||||
if cache.get(&key.as_bytes()).is_ok() {
|
||||
if cache.get(key.as_bytes()).is_ok() {
|
||||
debug!("Cache: {} found for {}", key, photo.path);
|
||||
} else {
|
||||
let size = size.px();
|
||||
@ -37,7 +37,7 @@ pub fn precache(db: &PgConnection, pd: &PhotosDir) -> Result<(), Error> {
|
||||
})?;
|
||||
cache.set(key.as_bytes(), &data, 0, no_expire)?;
|
||||
debug!("Cache: stored {} for {}", key, photo.path);
|
||||
n_stored = n_stored + 1;
|
||||
n_stored += 1;
|
||||
if n_stored % 64 == 0 {
|
||||
info!("{} images of {} updated in cache ...", n_stored, n);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ pub fn readkpa(db: &PgConnection, dir: &Path) -> Result<()> {
|
||||
.unwrap_or("0")
|
||||
.parse::<i16>()?;
|
||||
let date = find_image_date(attributes);
|
||||
match photo_by_path(db, &file, date, angle) {
|
||||
match photo_by_path(db, file, date, angle) {
|
||||
Ok(p) => { photo = Some(p) }
|
||||
Err(e) => {
|
||||
error!("{}", e);
|
||||
@ -53,16 +53,16 @@ pub fn readkpa(db: &PgConnection, dir: &Path) -> Result<()> {
|
||||
option.as_ref().map(|s| s.as_ref()),
|
||||
find_attr("value", attributes)) {
|
||||
(Some(p), Some("Nyckelord"), Some(v)) => {
|
||||
tag_photo(db, p, &v)
|
||||
tag_photo(db, p, v)
|
||||
}
|
||||
(Some(p), Some("Personer"), Some(v)) => {
|
||||
person_photo(db, p, &v)
|
||||
person_photo(db, p, v)
|
||||
}
|
||||
(Some(p), Some("Platser"), Some(v)) => {
|
||||
place_photo(db, p, &v)
|
||||
place_photo(db, p, v)
|
||||
}
|
||||
(Some(p), Some("Betyg"), Some(v)) => {
|
||||
grade_photo(db, p, &v)
|
||||
grade_photo(db, p, v)
|
||||
}
|
||||
(None, _option, _value_in_categories) => Ok(()),
|
||||
(p, o, v) => {
|
||||
@ -79,11 +79,8 @@ pub fn readkpa(db: &PgConnection, dir: &Path) -> Result<()> {
|
||||
}
|
||||
}
|
||||
XmlEvent::EndElement { ref name } => {
|
||||
match &*name.local_name {
|
||||
"option" => {
|
||||
option = None;
|
||||
}
|
||||
_ => {}
|
||||
if name.local_name == "option" {
|
||||
option = None;
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
@ -252,9 +249,8 @@ fn grade_photo(db: &PgConnection, photo: &mut Photo, name: &str) -> Result<()> {
|
||||
fn slugify(val: &str) -> String {
|
||||
val.chars()
|
||||
.map(|c| match c {
|
||||
c @ '0'...'9' => c,
|
||||
c @ 'a'...'z' => c,
|
||||
c @ 'A'...'Z' => (c as u8 - 'A' as u8 + 'a' as u8) as char,
|
||||
c @ '0'...'9' | c @ 'a'...'z'=> c,
|
||||
c @ 'A'...'Z' => (c as u8 - b'A' + b'a') as char,
|
||||
'Å' | 'å' | 'Ä' | 'ä' => 'a',
|
||||
'Ö' | 'ö' | 'Ô' | 'ô' => 'o',
|
||||
'É' | 'é' | 'Ë' | 'ë' | 'Ê' | 'ê' => 'e',
|
||||
@ -264,7 +260,7 @@ fn slugify(val: &str) -> String {
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn find_image_date(attributes: &Vec<OwnedAttribute>) -> Option<NaiveDateTime> {
|
||||
fn find_image_date(attributes: &[OwnedAttribute]) -> Option<NaiveDateTime> {
|
||||
let start_date = find_attr("startDate", attributes).unwrap_or("");
|
||||
let end_date = find_attr("endDate", attributes).unwrap_or("");
|
||||
let format = "%FT%T";
|
||||
|
@ -20,17 +20,17 @@ pub enum Error {
|
||||
|
||||
impl fmt::Display for Error {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
&Error::Connection(ref e) => write!(f, "Connection error: {}", e),
|
||||
&Error::Db(ref e) => write!(f, "Database error: {}", e),
|
||||
&Error::Io(ref e) => write!(f, "I/O error: {}", e),
|
||||
&Error::UnknownOrientation(ref o) => {
|
||||
match *self {
|
||||
Error::Connection(ref e) => write!(f, "Connection error: {}", e),
|
||||
Error::Db(ref e) => write!(f, "Database error: {}", e),
|
||||
Error::Io(ref e) => write!(f, "I/O error: {}", e),
|
||||
Error::UnknownOrientation(ref o) => {
|
||||
write!(f, "Unknown image orientation: {:?}", o)
|
||||
}
|
||||
&Error::BadTimeFormat(ref e) => write!(f, "Bad time value: {}", e),
|
||||
&Error::BadIntFormat(ref e) => write!(f, "Bad int value: {}", e),
|
||||
&Error::Cache(ref e) => write!(f, "Memcached error: {}", e),
|
||||
&Error::Other(ref s) => write!(f, "Error: {}", s),
|
||||
Error::BadTimeFormat(ref e) => write!(f, "Bad time value: {}", e),
|
||||
Error::BadIntFormat(ref e) => write!(f, "Bad int value: {}", e),
|
||||
Error::Cache(ref e) => write!(f, "Memcached error: {}", e),
|
||||
Error::Other(ref s) => write!(f, "Error: {}", s),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ pub fn passwd(db: &PgConnection, uname: &str) -> Result<(), Error> {
|
||||
0 => {
|
||||
use models::NewUser;
|
||||
insert(&NewUser {
|
||||
username: &uname,
|
||||
username: uname,
|
||||
password: &hashword,
|
||||
})
|
||||
.into(users)
|
||||
@ -47,13 +47,13 @@ pub fn passwd(db: &PgConnection, uname: &str) -> Result<(), Error> {
|
||||
|
||||
fn random_password(len: usize) -> String {
|
||||
let rng = &mut OsRng::new().expect("Init rng");
|
||||
let nlc = 'z' as u8 - 'a' as u8 + 1;
|
||||
let nlc = b'z' - b'a' + 1;
|
||||
let x = Range::new(0, 6 * nlc + 4 * 10 + 1);
|
||||
(0..len)
|
||||
.map(|_| match x.ind_sample(rng) {
|
||||
n if n < (1 * nlc) => ('A' as u8 + (n % nlc)) as char,
|
||||
n if n < (6 * nlc) => ('a' as u8 + (n % nlc)) as char,
|
||||
n => ('0' as u8 + n % 10) as char,
|
||||
n if n < (1 * nlc) => (b'A' + (n % nlc)) as char,
|
||||
n if n < (6 * nlc) => (b'a' + (n % nlc)) as char,
|
||||
n => (b'0' + n % 10) as char,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ fn main() {
|
||||
before running")))
|
||||
.get_matches();
|
||||
|
||||
match run(args) {
|
||||
match run(&args) {
|
||||
Ok(()) => (),
|
||||
Err(err) => {
|
||||
println!("{}", err);
|
||||
@ -122,7 +122,7 @@ fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
fn run(args: ArgMatches) -> Result<(), Error> {
|
||||
fn run(args: &ArgMatches) -> Result<(), Error> {
|
||||
match args.subcommand() {
|
||||
("findphotos", Some(args)) => {
|
||||
let pd = PhotosDir::new(photos_dir());
|
||||
|
@ -48,22 +48,22 @@ pub enum McError {
|
||||
|
||||
impl fmt::Display for McError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
&McError::UninitializedMiddleware => {
|
||||
match *self {
|
||||
McError::UninitializedMiddleware => {
|
||||
write!(f, "middleware not properly initialized")
|
||||
}
|
||||
&McError::IoError(ref err) => write!(f, "{}", err.description()),
|
||||
McError::IoError(ref err) => write!(f, "{}", err.description()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Error for McError {
|
||||
fn description(&self) -> &str {
|
||||
match self {
|
||||
&McError::UninitializedMiddleware => {
|
||||
match *self {
|
||||
McError::UninitializedMiddleware => {
|
||||
"middleware not properly initialized"
|
||||
}
|
||||
&McError::IoError(ref err) => err.description(),
|
||||
McError::IoError(ref err) => err.description(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -93,7 +93,7 @@ impl<'a, 'b, D> MemcacheRequestExtensions for Request<'a, 'b, D> {
|
||||
{
|
||||
match self.cache() {
|
||||
Ok(mut client) => {
|
||||
match client.get(&key.as_bytes()) {
|
||||
match client.get(key.as_bytes()) {
|
||||
Ok((data, _flags)) => {
|
||||
debug!("Cache: {} found", key);
|
||||
return Ok(data);
|
||||
|
@ -86,7 +86,7 @@ impl Photo {
|
||||
.set(rotation.eq(exifrotation))
|
||||
.get_result::<Photo>(db)?;
|
||||
}
|
||||
if let &Some(ref camera) = camera {
|
||||
if let Some(ref camera) = *camera {
|
||||
if pic.camera_id != Some(camera.id) {
|
||||
change = true;
|
||||
pic = diesel::update(photos.find(pic.id))
|
||||
@ -117,7 +117,7 @@ impl Photo {
|
||||
Ok(result)
|
||||
} else {
|
||||
let pic = NewPhoto {
|
||||
path: &file_path,
|
||||
path: file_path,
|
||||
date: exifdate,
|
||||
rotation: exifrotation,
|
||||
camera_id: camera.map(|c| c.id),
|
||||
|
@ -52,7 +52,7 @@ impl<T, D> Middleware<D> for DieselMiddleware<T> where
|
||||
T: Connection + Send + Any
|
||||
{
|
||||
fn invoke<'mw, 'conn>(&self, req: &mut Request<'mw, 'conn, D>, res: Response<'mw, D>) -> MiddlewareResult<'mw, D> {
|
||||
req.extensions_mut().insert::<DieselMiddleware<T>>(self.pool.clone());
|
||||
req.extensions_mut().insert::<DieselMiddleware<T>>(Arc::clone(&self.pool));
|
||||
Ok(Continue(res))
|
||||
}
|
||||
}
|
||||
|
@ -67,23 +67,19 @@ impl PhotosDir {
|
||||
let path = entry?.path();
|
||||
if fs::metadata(&path)?.is_dir() {
|
||||
self.find_files(&path, cb)?;
|
||||
} else if let Ok(exif) = rexif::parse_file(&path) {
|
||||
let path = path.to_str().unwrap();
|
||||
cb(&path[bl..], &exif);
|
||||
} else if image::open(&path).is_ok() {
|
||||
let none = ExifData {
|
||||
mime: "".into(),
|
||||
entries: vec![],
|
||||
};
|
||||
info!("{:?} seems like a pic with no exif.", path);
|
||||
let path = path.to_str().unwrap();
|
||||
cb(&path[bl..], &none);
|
||||
} else {
|
||||
if let Ok(exif) = rexif::parse_file(&path) {
|
||||
let path = path.to_str().unwrap();
|
||||
cb(&path[bl..], &exif);
|
||||
} else {
|
||||
if image::open(&path).is_ok() {
|
||||
let none = ExifData {
|
||||
mime: "".into(),
|
||||
entries: vec![],
|
||||
};
|
||||
info!("{:?} seems like a pic with no exif.", path);
|
||||
let path = path.to_str().unwrap();
|
||||
cb(&path[bl..], &none);
|
||||
} else {
|
||||
debug!("{:?} is no pic.", path)
|
||||
}
|
||||
}
|
||||
debug!("{:?} is no pic.", path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,10 +9,8 @@ pub fn handle_pid_file(pidfile: &str, replace: bool) -> Result<(), String> {
|
||||
info!("Killing old pid {}.", oldpid);
|
||||
unsafe { kill(oldpid, SIGHUP); }
|
||||
}
|
||||
} else {
|
||||
if Path::new(pidfile).exists() {
|
||||
return Err(format!("Pid file {:?} exists.", pidfile))
|
||||
}
|
||||
} else if Path::new(pidfile).exists() {
|
||||
return Err(format!("Pid file {:?} exists.", pidfile))
|
||||
}
|
||||
let pid = unsafe { getpid() };
|
||||
debug!("Should write pid {} to {}", pid, pidfile);
|
||||
|
@ -42,7 +42,7 @@ fn fmt_elapsed(t: Duration) -> String {
|
||||
} else {
|
||||
let ns = t.num_nanoseconds().unwrap();
|
||||
if ns > 10_000_000 {
|
||||
format!("{} ms", ns / 1000_000)
|
||||
format!("{} ms", ns / 1_000_000)
|
||||
} else if ns > 10_000 {
|
||||
format!("{} µs", ns / 1000)
|
||||
} else {
|
||||
@ -63,7 +63,7 @@ impl<D> Middleware<D> for RequestLoggerMiddleware {
|
||||
let mu = format!("{} {}", req.origin.method, req.origin.uri);
|
||||
let status = Arc::new(Mutex::new(StatusCode::Continue));
|
||||
req.extensions_mut().insert::<RequestLoggerMiddleware>(
|
||||
RequestLogger::new(mu, status.clone()));
|
||||
RequestLogger::new(mu, Arc::clone(&status)));
|
||||
res.on_send(move |r| {
|
||||
if let Ok(mut sw) = status.lock() {
|
||||
*sw = r.status();
|
||||
|
@ -197,7 +197,7 @@ fn logout<'mw>(_req: &mut Request,
|
||||
res.redirect("/")
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum SizeTag {
|
||||
Small,
|
||||
Medium,
|
||||
@ -240,7 +240,7 @@ fn show_image<'mw>(req: &Request,
|
||||
return res.send_file(path);
|
||||
}
|
||||
} else {
|
||||
let data = get_image_data(req, tphoto, size)
|
||||
let data = get_image_data(req, &tphoto, size)
|
||||
.expect("Get image data");
|
||||
res.set((MediaType::Jpeg, far_expires()));
|
||||
return res.send(data);
|
||||
@ -251,13 +251,13 @@ fn show_image<'mw>(req: &Request,
|
||||
}
|
||||
|
||||
fn get_image_data(req: &Request,
|
||||
photo: Photo,
|
||||
photo: &Photo,
|
||||
size: SizeTag)
|
||||
-> Result<Vec<u8>, image::ImageError>
|
||||
{
|
||||
req.cached_or(&photo.cache_key(&size), || {
|
||||
let size = size.px();
|
||||
req.photos().scale_image(&photo, size, size)
|
||||
req.photos().scale_image(photo, size, size)
|
||||
})
|
||||
}
|
||||
|
||||
@ -304,7 +304,7 @@ fn tag_one<'mw>(req: &mut Request,
|
||||
.order((grade.desc().nulls_last(),
|
||||
date.desc().nulls_last()))
|
||||
.load(c).unwrap(),
|
||||
tag)
|
||||
&tag)
|
||||
})
|
||||
}
|
||||
res.not_found("Not a tag")
|
||||
@ -365,7 +365,7 @@ fn place_one<'mw>(req: &mut Request,
|
||||
.filter(place_id.eq(place.id))))
|
||||
.order((grade.desc().nulls_last(), date.desc().nulls_last()))
|
||||
.load(c).unwrap(),
|
||||
place));
|
||||
&place));
|
||||
}
|
||||
res.not_found("Not a place")
|
||||
}
|
||||
@ -412,7 +412,7 @@ fn person_one<'mw>(req: &mut Request,
|
||||
.filter(person_id.eq(person.id))))
|
||||
.order((grade.desc().nulls_last(), date.desc().nulls_last()))
|
||||
.load(c).unwrap(),
|
||||
person));
|
||||
&person));
|
||||
}
|
||||
res.not_found("Not a person")
|
||||
}
|
||||
@ -460,8 +460,8 @@ fn photo_details<'mw>(req: &mut Request,
|
||||
.select((latitude, longitude))
|
||||
.first::<(i32, i32)>(c) {
|
||||
Ok((tlat, tlong)) => Some(Coord {
|
||||
x: tlat as f64 / 1e6,
|
||||
y: tlong as f64 / 1e6,
|
||||
x: f64::from(tlat) / 1e6,
|
||||
y: f64::from(tlong) / 1e6,
|
||||
}),
|
||||
Err(diesel::NotFound) => None,
|
||||
Err(err) => {
|
||||
|
@ -161,7 +161,7 @@ pub fn all_null_date<'mw>(req: &mut Request,
|
||||
res.ok(|o| templates::index(
|
||||
o,
|
||||
req,
|
||||
&"Photos without a date",
|
||||
"Photos without a date",
|
||||
&[],
|
||||
&Photo::query(req.authorized_user().is_some())
|
||||
.filter(date.is_null())
|
||||
@ -282,7 +282,7 @@ pub fn part_for_day<'mw>(
|
||||
Link::month(year, month),
|
||||
Link::day(year, month, day),
|
||||
],
|
||||
&photos,
|
||||
photos,
|
||||
))
|
||||
} else {
|
||||
res.not_found("No such image")
|
||||
|
@ -2,7 +2,7 @@
|
||||
@use models::{Photo, Person};
|
||||
@use templates::{page_base, img_link};
|
||||
|
||||
@(req: &Request, photos: &[Photo], person: Person)
|
||||
@(req: &Request, photos: &[Photo], person: &Person)
|
||||
@:page_base(req, &format!("Photos with {}", person.person_name), &[], {
|
||||
<div class="group">
|
||||
@for p in photos {@:img_link(p)}
|
||||
|
@ -2,7 +2,7 @@
|
||||
@use models::{Photo, Place};
|
||||
@use templates::{page_base, img_link};
|
||||
|
||||
@(req: &Request, photos: &[Photo], place: Place)
|
||||
@(req: &Request, photos: &[Photo], place: &Place)
|
||||
@:page_base(req, &format!("Photos from {}", place.place_name), &[], {
|
||||
<div class="group">
|
||||
@for p in photos {@:img_link(p)}
|
||||
|
@ -2,7 +2,7 @@
|
||||
@use models::{Photo, Tag};
|
||||
@use templates::{page_base, img_link};
|
||||
|
||||
@(req: &Request, photos: &[Photo], tag: Tag)
|
||||
@(req: &Request, photos: &[Photo], tag: &Tag)
|
||||
|
||||
@:page_base(req, &format!("Photos tagged {}", tag.tag_name), &[], {
|
||||
<div class="group">
|
||||
|
Loading…
Reference in New Issue
Block a user