All Projects → savepopulation → beaver

savepopulation / beaver

Licence: Apache-2.0 license
Beaver is a lightweight url meta data parser library.

Programming Languages

kotlin
9241 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to beaver

AndroidCoroutineScopes
This lib implements the most common CoroutineScopes used in Android apps.
Stars: ✭ 14 (-78.12%)
Mutual labels:  kotlin-coroutines
EverTranslator
Translate text anytime and everywhere, even you are gaming!
Stars: ✭ 59 (-7.81%)
Mutual labels:  kotlin-coroutines
RickAndMortyApp
A hobby project that showcases key android concepts
Stars: ✭ 41 (-35.94%)
Mutual labels:  kotlin-coroutines
Penicillin
Modern powerful Twitter API wrapper for Kotlin Multiplatform. #PureKotlin
Stars: ✭ 91 (+42.19%)
Mutual labels:  kotlin-coroutines
kotlin-everywhere
Kotlin/Everywhere Beijing 2019
Stars: ✭ 31 (-51.56%)
Mutual labels:  kotlin-coroutines
SketchwareManager
Coroutine-based library for managing Sketchware (Sketchware Pro/Studio) projects, collections and etc.
Stars: ✭ 54 (-15.62%)
Mutual labels:  kotlin-coroutines
DailyBugle
📰Modern MVVM Android application following single activity architecture which fetches news from 🕷️ news API. this repository contains some best practices ⚡ of android development
Stars: ✭ 17 (-73.44%)
Mutual labels:  kotlin-coroutines
BlueFlow
Android Bluetooth classic API wrapped in Coroutines Flow.
Stars: ✭ 64 (+0%)
Mutual labels:  kotlin-coroutines
Tracktor-ComposeUI
Track the progress of anything in one place
Stars: ✭ 25 (-60.94%)
Mutual labels:  kotlin-coroutines
android-clean-arc-coroutines
Clean Architecture(Coroutines,Dagger, MVVM, ROOM, retrofit, databinding)
Stars: ✭ 116 (+81.25%)
Mutual labels:  kotlin-coroutines
TTFancyGifDialog-Android
TTFancyGifDialog makes your Android Dialog Fancy and more Beautiful. A library that makes normal Android Dialog to high level Dialog with many styling options and fully customizable. Make dialog from few lines of code.
Stars: ✭ 61 (-4.69%)
Mutual labels:  android-lib
fakepixiv
仿pixiv android客户端 kotlin + MVVM + DataBinding
Stars: ✭ 31 (-51.56%)
Mutual labels:  kotlin-coroutines
cordova-spotify-oauth
🔐 Easy Spotify authentication for Cordova / PhoneGap apps
Stars: ✭ 15 (-76.56%)
Mutual labels:  android-lib
visual-goodies
Library for Material Design lists, cards, dialogs, etc
Stars: ✭ 101 (+57.81%)
Mutual labels:  android-lib
LocationFetcher
Easy Location fetching for Android apps.
Stars: ✭ 33 (-48.44%)
Mutual labels:  android-lib
TDDWeatherApp
Android App trying to apply TDD and using MVVM, Kotlin Coroutines
Stars: ✭ 38 (-40.62%)
Mutual labels:  kotlin-coroutines
NewsReader
Android News Reader app. Kotlin Coroutines, Retrofit and Realm
Stars: ✭ 21 (-67.19%)
Mutual labels:  kotlin-coroutines
SASlider
SASlider is lightweight cool looking custom slider control which enables the user to input integer or decimal values with high customizeability. User can select values by inputting in text field above slider, slide the control or tap anywhere on the slider to move it.
Stars: ✭ 16 (-75%)
Mutual labels:  android-lib
WanAndroidJetpack
🔥 WanAndroid 客户端,Kotlin + MVVM + Jetpack + Retrofit + Glide。基于 MVVM 架构,用 Jetpack 实现,网络采用 Kotlin 的协程和 Retrofit 配合使用!精美的 UI,便捷突出的功能实现,欢迎下载体验!
Stars: ✭ 124 (+93.75%)
Mutual labels:  kotlin-coroutines
ScreenKap
A simple screen recorder app for Android
Stars: ✭ 46 (-28.12%)
Mutual labels:  kotlin-coroutines

beaver

Android Arsenal

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.

Tech Stack:

  • Kotlin
  • Kotlin Coroutines
  • Room
  • Repository pattern

How to use?

It's easy to use. Just Init Beaver before start using.

Beaver.build(this)

And load url's metadata like the following:

launch {
  val metaData = Beaver.load("https://www.example.com").await()
  if (metaData != null) {
    // do what ever you want with your meta data..
  }

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's RichLinkPreview 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.

Beaver.build(this, localDataSource = yourLocalDataSourceImpl)

Dependency

maven { url 'https://jitpack.io' }
dependencies {
    implementation 'com.github.savepopulation:beaver:1.0.1'
}

Apps Using in Production

Screenshots:

License:

 Copyright 2018 Taylan SABIRCAN

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].