Skip to content

Instantly share code, notes, and snippets.

View sergiocasero's full-sized avatar
😄

Sergio Casero Hernández sergiocasero

😄
View GitHub Profile
@sergiocasero
sergiocasero / Explanation.md
Last active December 13, 2023 10:16
Firebase wrapper for iOS and Android with kotlin multiplatform

Hello guys, I've raised into that problem for a days, but i think I've found one solution, maybe this isn't the better way to do that, but... I will share it. (This is inspired in the Firebase multiplatform repo -> https://github.com/RubyLichtenstein/Kotlin-Multiplatform-Firebase, I'm just summarizing that)

If you want to call some code from a DataSource or Repository from your common code, and the libraries you're using use callbacks, you need to wrap them and there are some problems:

Let me explain it with an example:

expect class RemoteDataSource() {
@sergiocasero
sergiocasero / good_morning.yaml
Last active January 23, 2023 14:34
Good morning Home Asssistant
description: ""
trigger:
- platform: time
at: "08:00:00"
condition: []
action:
- service: notify.telegram
data:
message: >
{# Change these entities with your's #}
test:
stage: test
script:
- ./gradlew test jacocoTestReport
tags:
- docker-L
artifacts:
paths:
- shared/build/reports/jacoco.xml
@sergiocasero
sergiocasero / crontab
Last active September 29, 2022 11:15
A simple, lightweight but powerfull telegram bot that sends your public IP through telegram in case it changes, really useful if you have dynamic IPs but also have a private cloud
# Every minute, perfect for IP_INFO free tier
* * * * * /usr/bin/python3 /PATH_TO_THE_SCRIPT/ipbot.py
!#/bin/bash
for d in */ ; do
cd $d
if [ -f "pubspec.yaml" ]; then
echo "$d is a flutter project"
flutter clean
else
echo "$d is a gradle project"
./gradlew clean
@sergiocasero
sergiocasero / build.gradle.kts
Last active March 30, 2021 08:13
Add common code to sonarqube analysis
buildscript {
repositories {
// repos
}
dependencies {
// deps
}
}
plugins {
@sergiocasero
sergiocasero / project_cleaner.md
Created February 3, 2021 07:42
This is a quite simple script that cleans all your grade/flutter projects inside a folder

Works on linux and macOS (and linux inside Windows)

  1. Download the script (or copy paste it)
  2. Put the script in the same folder than your projects
  3. chmod +x your_script_name.sh, if you didn't change the name => `chmod +x projects_cleaner.sh
  4. ./projects_cleaner.sh
  5. Wait and enjoy!!

If you find this gist helpful, don't forget the star! :)

@sergiocasero
sergiocasero / pico_micropython.sh
Created February 1, 2021 20:26
This is a simple and small script to automatize the raspberry pi pico micropython SDK compilation
mkdir pico_micropython_install
cd pico_micropython_install
git clone -b pico https://github.com/raspberrypi/micropython.git
cd micropython
git submodule update --init -- lib/pico-sdk
cd lib/pico-sdk
git submodule update --init
cd ../..
make -C mpy-cross
cd ports/rp2
package com.sergiocasero.backend.push
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential
import com.sergiocasero.jvm.network.createService
import com.sergiocasero.model.PushTopic
import com.sergiocasero.properties.Property
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.runBlocking
import okhttp3.ResponseBody
import retrofit2.http.Body
@sergiocasero
sergiocasero / ssl_pinning_android_ktor.kt
Last active September 22, 2020 16:09
Simple snippet that demonstrates how to make https request with SSL pinning by using ktor on Android
class AndroidRemote(private val context: Context) : Remote {
companion object {
private const val SSL_PROTOCOL = "TLSv1.2"
private const val KEYSTORE_PROTOCOL = "BKS"
private const val KEY_MANAGER_ALG = "X509"
private const val KEYSTORE_PATH = "YOUR_ASSET_NAME.bks"
private val KEYSTORE_PASSWORD = "YOUR_PASS".toCharArray() // Find better place to store this please hahaha
private const val API_ENDPOINT = "API_ENDPOINT"