url_link object which handle the url_link content
| 185 | |
| 186 | |
| 187 | class UrlLink: |
| 188 | """ |
| 189 | url_link object which handle the url_link content |
| 190 | """ |
| 191 | |
| 192 | def __init__( |
| 193 | self, |
| 194 | payload: UrlLinkPayload, |
| 195 | ): |
| 196 | """ |
| 197 | initialization |
| 198 | :param payload: |
| 199 | """ |
| 200 | self.payload: UrlLinkPayload = payload |
| 201 | |
| 202 | @classmethod |
| 203 | def create( |
| 204 | cls: Type[UrlLink], |
| 205 | url: str, |
| 206 | title: Optional[str] = None, |
| 207 | thumbnail_url: Optional[str] = None, |
| 208 | description: Optional[str] = None |
| 209 | ) -> UrlLink: |
| 210 | """ |
| 211 | create urllink from url string |
| 212 | """ |
| 213 | log.info('create url_link for %s', url) |
| 214 | |
| 215 | metadata = get_url_metadata(url) |
| 216 | |
| 217 | payload = UrlLinkPayload(url=url) |
| 218 | |
| 219 | payload.title = title or metadata.get('title', None) |
| 220 | payload.thumbnailUrl = thumbnail_url or metadata.get('image', None) |
| 221 | payload.description = description or metadata.get('description', None) |
| 222 | return UrlLink(payload) |
| 223 | |
| 224 | def __str__(self) -> str: |
| 225 | """ |
| 226 | UrlLink string format output |
| 227 | :return: |
| 228 | """ |
| 229 | return 'UrlLink<%s>' % self.payload.url |
| 230 | |
| 231 | @property |
| 232 | def title(self) -> str: |
| 233 | """ |
| 234 | get UrlLink title |
| 235 | :return: |
| 236 | """ |
| 237 | return self.payload.title or '' |
| 238 | |
| 239 | @property |
| 240 | def thumbnailUrl(self) -> str: |
| 241 | """ |
| 242 | get thumbnail url |
| 243 | :return: |
| 244 | """ |