Skip to content

Instantly share code, notes, and snippets.

View lanceon's full-sized avatar

Oleksiy lanceon

View GitHub Profile
@lanceon
lanceon / js-error-logging-services.md
Created November 10, 2017 07:23 — forked from cheeaun/js-error-logging-services.md
JavaScript error logging services
@lanceon
lanceon / Event-stream based GraphQL subscriptions.md
Created November 8, 2017 15:59 — forked from OlegIlyenko/Event-stream based GraphQL subscriptions.md
Event-stream based GraphQL subscriptions for real-time updates

In this gist I would like to describe an idea for GraphQL subscriptions. It was inspired by conversations about subscriptions in the GraphQL slack channel and different GH issues, like #89 and #411.

Conceptual Model

At the moment GraphQL allows 2 types of queries:

  • query
  • mutation

Reference implementation also adds the third type: subscription. It does not have any semantics yet, so here I would like to propose one possible semantics interpretation and the reasoning behind it.

@lanceon
lanceon / curl.md
Created August 25, 2017 11:43 — forked from subfuzion/curl.md
curl POST examples

Common Options

-#, --progress-bar Make curl display a simple progress bar instead of the more informational standard meter.

-b, --cookie <name=data> Supply cookie with request. If no =, then specifies the cookie file to use (see -c).

-c, --cookie-jar <file name> File to save response cookies to.

@lanceon
lanceon / AkkaHttpCorsSupport.scala
Created August 25, 2017 09:49 — forked from mushtaq/AkkaHttpCorsSupport.scala
Akka HTTP 1.0 CORS Support
import akka.http.scaladsl.model.HttpHeader
import akka.http.scaladsl.model.HttpMethods._
import akka.http.scaladsl.model.HttpResponse
import akka.http.scaladsl.model.headers.`Access-Control-Allow-Credentials`
import akka.http.scaladsl.model.headers.`Access-Control-Allow-Methods`
import akka.http.scaladsl.model.headers.`Access-Control-Allow-Origin`
import akka.http.scaladsl.model.headers.Origin
import akka.http.scaladsl.server.Directive0
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.MethodRejection
@lanceon
lanceon / AkkaHttpMicroService.scala
Created August 25, 2017 09:36 — forked from jeroenr/AkkaHttpMicroService.scala
Akka HTTP API with CORS headers and custom Media types
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.stream.ActorMaterializer
object Boot extends App with Service with CorsSupport {
override implicit val system = ActorSystem()
override implicit val executor = system.dispatcher
override implicit val materializer = ActorMaterializer()
Http().bindAndHandle(corsHandler(routes), "0.0.0.0", 1337)
@lanceon
lanceon / FutureEither.scala
Created July 4, 2017 17:19 — forked from jnape/FutureEither.scala
Making dealing with Future[Either[L, R]] palatable in Scala
package com.thoughtworks.futureeither
import concurrent.{Await, Future}
import scala.concurrent.ExecutionContext.Implicits.global
import concurrent.duration.FiniteDuration
import java.util.concurrent.TimeUnit
class FutureEither[L, R](private val future: Future[Either[L, R]]) {
def flatMap[R2](block: R => FutureEither[L, R2]): FutureEither[L, R2] = {
@lanceon
lanceon / log.scala
Created June 26, 2017 20:57 — forked from adamw/log.scala
Logging request duration, path, status code using Akka HTTP
val rejectionHandler = RejectionHandler.default
def logDuration(inner: Route): Route = { ctx =>
val start = System.currentTimeMillis()
// handling rejections here so that we get proper status codes
val innerRejectionsHandled = handleRejections(rejectionHandler)(inner)
mapResponse { resp =>
val d = System.currentTimeMillis() - start
logger.info(s"[${resp.status.intValue()}] ${ctx.request.method.name} ${ctx.request.uri} took: ${d}ms")
resp
}(innerRejectionsHandled)(ctx)
@lanceon
lanceon / application.confg
Created April 21, 2017 07:31
Example: Minimal HTTP server for static content using Scala and Akka - HTTP
akka.http.server {
parsing {
max-content-length = 110M
}
}
akka {
loglevel = DEBUG
}
@lanceon
lanceon / package.json
Created March 16, 2017 11:55
package.json local filesystem dependency file path example on Windows
{
"name": "name",
"version": "0.0.0",
"description": "description",
"private": true,
"author": "author",
"dependencies": {
"dependency": "file:C:\\path\\to\\folder"
}
}