#lang scheme/base
(require "depend.ss"
"base.ss"
)
(define (content-transfer-encoding? v)
(case v
((7bit 8bit binary base64 quoted-printable) v)
(else #f)))
(define p:transfer (choice (tokens/comment-ci #"7bit" (return '7bit))
(tokens/comment-ci #"8bit" (return '8bit))
(tokens/comment-ci #"binary" (return 'binary))
(tokens/comment-ci #"base64" (return 'base64))
(tokens/comment-ci #"quoted-printable"
(return 'quoted-printable))))
(define read-content-transfer-encoding (make-reader p:transfer))
(mime-header-reader-set! "Content-Transfer-Encoding" read-content-transfer-encoding)
(define write-content-transfer-encoding (curry format "~a"))
(define content-transfer-encoding (make-parameter 'binary))
(define mime-include-content-transfer-encoding? (make-parameter #t))
(provide/contract
(read-content-transfer-encoding Reader/c)
(write-content-transfer-encoding (-> content-transfer-encoding? string?))
(content-transfer-encoding? (-> any/c any))
(content-transfer-encoding (parameter/c content-transfer-encoding?))
(mime-include-content-transfer-encoding? (parameter/c boolean?))
)