Skip to content

Instantly share code, notes, and snippets.

@srp
srp / keybase.md
Created January 5, 2018 17:38
keybase.md

Keybase proof

I hereby claim:

  • I am srp on github.
  • I am srparish (https://keybase.io/srparish) on keybase.
  • I have a public key ASCev3Yh3E9v4t_kyi2cV7-D8KyVF402GuQjcGODjaLIfAo

To claim this, I am signing this object:

def login(dbConn: DbConnection, req: Request): Try[Response] =
req.body.flatMap { reqJsonStr =>
json.parse(reqJsonStr).flatMap { reqJson =>
validateAndDecode[LoginRequest](reqJson).flatMap { loginReq =>
dbConn.findUser[UserDetails](dbConn, loginReq.username).flatMap { userDetails =>
doesPasswordMatch(userDetails.hashedPassword, loginReq.password).flatMap { _ =>
jwt.generateToken(loginReq.username).map { jwtToken =>
Response(200, json.encode(Map("token" -> jwtToken)))
}
}
def login(dbConn: DbConnection, req Reuqest): Try[Response] =
req.body match {
case Failure(err) =>
Failure(err)
case Success(reqJsonStr) =>
json.parse(reqJsonStr) match {
case Failure(err) =>
Failure(err)
case Success(reqJson) =>
validateAndDecode[LoginRequest](reqJson) match {
@srp
srp / login.scala
Last active January 2, 2017 20:11
case class LoginRequest(username: String, password: String)
case class UserDetails(username: String, hashedPassword: String)
def login(dbConn: DbConnection, req: Request): Try[Response] =
for {
reqJsonStr <- req.body
reqJson <- json.parse(reqJsonStr)
loginReq <- validateAndDecode[LoginRequest](reqJson)
userDetails <- dbConn.findUser[UserDetails](dbConn, loginReq.username)
_ <- doesPasswordMatch(userDetails.hashedPassword, loginReq.password)
login(_DbConn, req#{body = <<>>}) ->
{error, "No body provided"};
login(DbConn, req#{body = ReqJsonStr}) ->
parse_json(DbConn, ReqJsonStr).
parse_json(DbConn, ReqJsonStr) ->
case json:parse(ReqJsonStr) of
{error, Reason} -> {error, Reason};
{ok, ReqJson} -> decode_json(DbConn, ReqJson)
end
login(_DbConn, req#{body = <<>>}) ->
{error, "No body provided"};
login(DbConn, req#{body = ReqJsonStr}) ->
case json:parse(ReqJsonStr) of
{error, Reason} ->
{error, Reason};
{ok, ReqJson} ->
case validate_and_decode_login_request(ReqJson) of
{error, Reason} ->
{error, Reason};
@srp
srp / gridworld.scala
Created November 9, 2011 03:49
scala script to calculate gridworld
// To run: scala gridworld.scala
val l = 1.0
val R = -200
class Cell(val initValue: Option[Double], var value: Option[Double] = None) {
var x0: Int = -9999
var y0: Int = -9999
var world: IndexedSeq[IndexedSeq[Cell]] = null
value = initValue