beaver

Beaver is a lightweight url meta data parser library. Beaver, loads the metadata of the given url and stores it locally and caches in memory by default. Beaver uses Kotlin-Coroutines for background operations. Room is used for local cache operations.

With defaults, load method checks memory cache, local cache and if there's no metadata available in caches it parses metada data from remote.

You can force to refresh with RemoteDataSource

Beaver.load("https://www.example.com",forceRefresh = true).await()

You can use only cache sources with

Beaver.load("https://www.example.com",forceLocal = true).await()

You can destroy Beaver easily with

Beaver.destroy()

You can drop cache

Beaver.dropCache()()

Or you can just drop local cache. By default, this clears all the local db

Beaver.dropLocalCache()()

If you want to drop only one item's local cache you can pass a url

Beaver.dropLocalCache("https://www.example.com")

Customizing Beaver

Beaver is fully customizable.

You can implement your own metada data parser with implementing MetaDataParser and passing to Beaver By defaults, Beaver uses meta data parser implementation of PannomKathrik'sRichLinkPreview library's meta data parser implementation. You can find this useful library from here: https://github.com/PonnamKarthik/RichLinkPreview

Beaver.build(this, metaDataParser = yourCustomMetaDataParserImpl)

By defaults, Beaver uses it's own AsnyManager for handling async operations. If you need you can implement AsyncManager pass it to Beaver and use your own implementation for async operations.

Beaver.build(this, asyncManager = yourCustomAsyncManagerImpl)

Also you can use your own memory cache implementation. You can implement DataSource.Cache<String, MetaData>? and pass while building.

Beaver.build(this, cacheDataSource = yourCacheDataSourceImpl)

You can customize your local storing implementation. By defaults Beaver uses it's own local cache implementation which uses Room. You can implement DataSource.Local<String, MetaData>? and pass it to Beaver instance while building.