| 129 | |
| 130 | #[tracing::instrument(level = "debug", skip(canvaz))] |
| 131 | fn parse_canvaz(canvaz: EntityCanvazResponse) -> Result<CanvazResponse> { |
| 132 | Ok(CanvazResponse { |
| 133 | canvases: canvaz |
| 134 | .canvases |
| 135 | .iter() |
| 136 | .map(|c| { |
| 137 | let artist = CanvazArtist { |
| 138 | uri: c.artist.uri.clone(), |
| 139 | name: c.artist.name.clone(), |
| 140 | avatar: c.artist.avatar.clone(), |
| 141 | }; |
| 142 | let type_ = match c.type_.enum_value_or_default() { |
| 143 | crate::canvaz::Type::IMAGE => Type::Image, |
| 144 | crate::canvaz::Type::VIDEO => Type::Video, |
| 145 | crate::canvaz::Type::VIDEO_LOOPING => Type::VideoLooping, |
| 146 | crate::canvaz::Type::VIDEO_LOOPING_RANDOM => Type::VideoLoopingRandom, |
| 147 | crate::canvaz::Type::GIF => Type::Gif, |
| 148 | }; |
| 149 | Canvaz { |
| 150 | id: c.id.clone(), |
| 151 | url: c.url.clone(), |
| 152 | file_id: c.file_id.clone(), |
| 153 | type_, |
| 154 | entity_uri: c.entity_uri.clone(), |
| 155 | artist, |
| 156 | explicit: c.explicit, |
| 157 | uploaded_by: c.uploaded_by.clone(), |
| 158 | etag: c.etag.clone(), |
| 159 | canvas_uri: c.canvas_uri.clone(), |
| 160 | storylines_id: c.storylines_id.clone(), |
| 161 | } |
| 162 | }) |
| 163 | .collect(), |
| 164 | ttl_in_seconds: canvaz.ttl_in_seconds, |
| 165 | }) |
| 166 | } |
| 167 | |
| 168 | #[tracing::instrument(level = "debug", skip(val))] |
| 169 | fn validate_uri(val: &str) -> (Option<String>, Option<String>) { |