Added Amazon ECS associate-tag support.
[rl3.git] / rl3 / aws / awscredentials.sls
blob130eda0dfedcae04ed0de0f96e031f8266f0e5fd
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; Bravais' Edito Princeps: EBook Tool Suite        
3 ;; Copyright (C) 2007  Raymond Paul Racine
4 ;;
5 ;; This program is free software: you can redistribute it and/or modify
6 ;; it under the terms of the GNU General Public License as published by
7 ;; the Free Software Foundation, either version 3 of the License, or
8 ;; (at your option) any later version.
9 ;;
10 ;; This program is distributed in the hope that it will be useful,
11 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 ;; GNU General Public License for more details.
15 ;; You should have received a copy of the GNU General Public License
16 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
19 ;; Load AWS credentials from a protected file.
21 (library 
22  (rl3 aws awscredentials)
24  (export
25   aws-credentials-account-id
26   aws-credentials-access-key
27   aws-credentials-secret-key
28   aws-credentials-associate-tag
29   load-credentials)
31  (import
32   (rnrs base)
33   (only (rnrs lists)
34         assoc)
35   (only (rnrs io simple)
36         read call-with-input-file) 
37   (err5rs records syntactic))
39  (define-record-type aws-credentials #t #t account-id access-key secret-key associate-tag)
41   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42  ;; Read in aws properties from a protected file.
43  ;; string? -> aws-credentials?
44   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
45  (define (load-credentials fpath)
46    (call-with-input-file fpath
47      (lambda (ip)
48        (let ((props (read ip)))
49          (make-aws-credentials (cdr (assoc 'account-id props))
50                                (cdr (assoc 'access-key props))
51                                (cdr (assoc 'secret-key props))
52                                (cdr (assoc 'associate-tag props)))))))
53  )