Server/client split; WIP

This commit is contained in:
Tony Garnock-Jones 2016-10-29 07:16:29 -04:00
parent f16b0884f0
commit 23a923ad77
4 changed files with 53 additions and 3 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
compiled/

16
rmq/client.rkt Normal file
View File

@ -0,0 +1,16 @@
#lang racket/base
(provide )
(require "private/util.rkt")
(module+ test (require rackunit))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(struct client (callback-url-base
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (subscribe! client topic [callback #f]

31
rmq/private/util.rkt Normal file
View File

@ -0,0 +1,31 @@
#lang racket/base
(provide random-hex-string
extend-url-string-query)
(require (only-in file/sha1 bytes->hex-string))
(require (only-in racket/random crypto-random-bytes))
(require net/url)
(module+ test (require rackunit))
(define (random-hex-string half-length)
(bytes->hex-string (crypto-random-bytes half-length)))
(define (extend-url-string-query urlstr extension)
(define u (string->url urlstr))
(url->string (struct-copy url u [query (append (url-query u) extension)])))
(module+ test
(check-equal? (extend-url-string-query "http://localhost/" '((a . "hi")))
"http://localhost/?a=hi")
(check-equal? (extend-url-string-query "http://localhost/" '())
"http://localhost/")
(check-equal? (extend-url-string-query "http://localhost?foo=bar" '())
"http://localhost?foo=bar")
(check-equal? (extend-url-string-query "http://localhost/?foo=bar" '())
"http://localhost/?foo=bar")
(check-equal? (extend-url-string-query "http://localhost?foo=bar" '((a . "hi")))
"http://localhost?foo=bar&a=hi")
(check-equal? (extend-url-string-query "http://localhost/?foo=bar" '((a . "hi")))
"http://localhost/?foo=bar&a=hi"))

View File

@ -1,16 +1,18 @@
#lang syndicate/actor
(provide )
(require racket/format)
(require racket/set)
(require racket/random)
(require net/url)
(require net/uri-codec)
(require file/sha1)
(require/activate syndicate/drivers/timer)
(require/activate syndicate/drivers/web)
(require syndicate/protocol/advertise)
(require "private/util.rkt")
(module+ test (require rackunit))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -181,7 +183,7 @@
(define (subscription-change-validate mode lease topic callback)
(define u (string->url callback))
(define res (url->resource u))
(define challenge (bytes->hex-string (crypto-random-bytes 16)))
(define challenge (random-hex-string 16))
(define id (gensym 'validation))
(define extra-query (list* (cons 'hub.mode mode)
(cons 'hub.topic topic)