Skip to content

Instantly share code, notes, and snippets.

Kato Richardson katowulf

Block or report user

Report or block katowulf

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@katowulf
katowulf / pseudo_code.js
Last active Jul 18, 2019
Convert Cloud Storage json file to event stream and store output in Firestore
View pseudo_code.js
JSONStream = require('JSONStream');
es = require('event-stream');
fileStream = storage.bucket('your-bucket').file('your-JSON-file').createReadStream();
db = admin.firestore();
return new Promise( (resolve, reject) => {
batchPromises = [];
batchSize = 0;
batch = db.batch();
@katowulf
katowulf / simpleDocSharing_listMembers.js
Last active Jun 7, 2019
Psuedo rules examples for role based document sharing in Firestore.
View simpleDocSharing_listMembers.js
// docs/{docId}/users is an array of user ids allowed to access the doc
/match/docs/{docId} {
allow read if request.auth.uid in getData('docs/$(docId)').users;
}
/**
* Shortcut to simplify pathing
*/
function getPath(childPath) {
@katowulf
katowulf / logger.ts
Created May 9, 2019
A simple JavaScript/TypeScript logger for outputting messages to console and to DOM
View logger.ts
'use strict';
///////////////////////////////////
// Rudimentary logger impl that outputs
// to the JS console and to <div> tag
// in demo app.
//
// ♡ Firebase
///////////////////////////////////
@katowulf
katowulf / client-index.ts
Last active May 9, 2019
Example of validating Firestore writes using Cloud Functions endpoints
View client-index.ts
import './style.css';
import logger from './logger'; // see https://gist.github.com/katowulf/08cd54013ad75f2c4d6cc9961ec77db1
import {sendRequest} from './request';
const endpoint = 'https://us-central1-YOUR_PROJECT_ID_HERE.cloudfunctions.net/validateRequest';
const data = {
string: 'foo',
integer: 23,
boolean: false,
@katowulf
katowulf / client.js
Last active May 9, 2019
Firestore security rules validation example
View client.js
import * as firebase from "firebase/app";
import 'firebase/firestore';
import config from './config';
firebase.initializeApp(config);
const data = {
string: 'foo',
integer: 23,
boolean: false,
@katowulf
katowulf / create_user_functions.js
Created Dec 3, 2018
Create a Firebase user from an authenticated Cloud Functions HTTPS endpoint.
View create_user_functions.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const express = require('express');
const cookieParser = require('cookie-parser')();
const cors = require('cors')({origin: true});
const app = express();
// See https://github.com/firebase/functions-samples/blob/Node-8/authorized-https-endpoint/functions/index.js
const validateFirebaseIdToken = require('./validateFirebaseIdToken');
@katowulf
katowulf / rules.js
Created Nov 16, 2018
Group inheritance and doc sharing in Firebase rules. See https://roles-example-rtdb.stackblitz.io/
View rules.js
{
"rules": {
".read": false,
".write": false,
"roles-example": {
// grant global read to our admin tools
".read": "auth.uid === 'ACCESS_MANAGER'",
// The documents which we are restricting access to
"docs": {
@katowulf
katowulf / call.js
Last active Jun 4, 2019
Modular Functions layout for Firebase
View call.js
export const run = (data, context) => {
const path = data.path;
if( path !== "bar" ) {
throw new functions.https.HttpsError('invalid-argument', "Path was not valid");
}
return {foo: "bar"};
}
@katowulf
katowulf / enable_debug_logging.java
Created May 29, 2018
Enable debug logging in Firestore
View enable_debug_logging.java
/******* Android **********/
// See https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore.html#setLoggingEnabled(boolean)
FirebaseFirestore.setLoggingEnabled(true);
/******* Server-side Java **********/
/**
See https://medium.com/@hiranya911/logging-in-java-libraries-for-firebase-and-google-cloud-platform-f8742493b73f
1) Add the slf4j-simple binding to the application classpath
2) Set the -Dorg.slf4j.simpleLogger.defaultLogLevel=debug system property
**/
@katowulf
katowulf / functions_index.js
Last active Jun 19, 2019
Upload file to Storage, add custom metadata, and fetch that metadata in Functions
View functions_index.js
const functions = require('firebase-functions');
const util = require('util');
const admin = require('firebase-admin');
admin.initializeApp();
exports.uploadedFile = functions.storage.object().onFinalize((uploadedObject) => {
console.log('object keys', Object.keys(uploadedObject));
// This contains the custom metadata
console.log('metedata keys', Object.keys(uploadedObject.metadata));
You can’t perform that action at this time.