Advertisement
Guest User

RX make your head explode

a guest
Apr 28th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 1.34 KB | None | 0 0
  1.   Observable<String> createAccount(final String username, final String password, final String emailAddress) {
  2.  
  3.     mongoDatabase.getCollection(UserCodec.COLLETION_NAME, User)
  4.       .find(eq(UserCodec.USERNAME_PROPERTY, username))
  5.       .toObservable()
  6.       .isEmpty()
  7.       .map { final Boolean userStreamIsEmpty ->
  8.  
  9.       if (!userStreamIsEmpty) {
  10.  
  11.         throw new Exception("A user with the same username '${username}' was found in the DB")
  12.       }
  13.  
  14.       userStreamIsEmpty
  15.     }.flatMap({ final Boolean userStreamIsEmpty ->
  16.  
  17.       // MONGO DB REFERENCE IS RX MONGO, PASSWORD GENERATION IS BLOCKING. NOT SURE WHAT HAPPENS IN TERMS OF THREADING HERE...
  18.       mongoDatabase.getCollection(UserCodec.COLLETION_NAME, User)
  19.         .insertOne(new User(username: username, password: PasswordFactory.create().hash(password), emailAddress: emailAddress))
  20.         .asObservable()
  21.     } as Func1).map { final Success success ->
  22.  
  23.       mongoDatabase.getCollection(UserCodec.COLLETION_NAME, User)
  24.         .find(eq(UserCodec.USERNAME_PROPERTY, username))
  25.     }.flatMap({ final User retrievedUser ->
  26.  
  27.       Jwts
  28.         .builder()
  29.         .setPayload(Jackson.json(retrievedUser) as String)
  30.         .setIssuedAt(new Date())
  31.         .setExpiration(Date.from(LocalDateTime.now().plusHours(48).toInstant(ZoneOffset.UTC)))
  32.     } as Func1)
  33.     .bindExec()
  34.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement