Skip to content

Instantly share code, notes, and snippets.

View jefferyshivers's full-sized avatar

jeffery shivers jefferyshivers

View GitHub Profile
@jefferyshivers
jefferyshivers / money-service-client.js
Created March 21, 2020 19:09
Example gRPC client in Node
const PROTO_PATH = __dirname + '/.protop/path/awesomelabs/numbers/money.proto';
const grpc = require('grpc');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync(PROTO_PATH, { keepCase: true, enums: String });
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const numbers = protoDescriptor.awesomelabs.numbers;
const moneyServiceStub = new numbers.MoneyService('localhost:8080', grpc.credentials.createInsecure());
@jefferyshivers
jefferyshivers / money.proto
Created March 21, 2020 17:57
Example proto file for a simple Money service
syntax = "proto3";
package awesomelabs.numbers;
service MoneyService {
rpc Convert(ConvertMoneyRequest) returns (Money);
}
enum Currency {
USD = 0;
@jefferyshivers
jefferyshivers / gradle.groovy
Last active March 21, 2020 17:55
Partial Gradle build script for a Protop project
task protop(type: Exec) {
commandLine "protop", "sync", "--git-refresh"
}
protobuf {
generateProtoTasks {
all().each { task ->
task.dependsOn protop // Make sure `protop sync` happens before the proto generators
}
}
}
@jefferyshivers
jefferyshivers / MoneyService.java
Last active March 21, 2020 17:37
MoneyService Java implementation
package awesomelabs.numbers;
import io.grpc.stub.StreamObserver;
public class MoneyService extends MoneyServiceGrpc.MoneyServiceImplBase {
@Override
public void convert(MoneyOuterClass.ConvertMoneyRequest request,
StreamObserver<MoneyOuterClass.Money> responseObserver) {
MoneyOuterClass.Money originalMoney = request.getOriginal();
@jefferyshivers
jefferyshivers / PDF.java
Last active October 1, 2019 03:04
Example implementation of Flying Saucer to render a PDF from HTML.
import com.lowagie.text.DocumentException;
import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.*;
import java.net.URL;
public class PDF {
private void render() throws DocumentException, IOException {
ITextRenderer iTextRenderer = new ITextRenderer();
iTextRenderer.setDocument(getHtml());
@jefferyshivers
jefferyshivers / React-Express-Boilerplate.md
Last active December 28, 2017 14:11
guide for starting a simple React project with ExpressJS (and Webpack)