diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2020-07-07 23:25:01 +0200 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2020-07-07 23:25:01 +0200 |
commit | 64e6304bc329fb013e8495d0bbfad44d730256c2 (patch) | |
tree | 9e92ba203a1047d45423a793fdc4a8537cc85dba | |
parent | 4b55bfb1a37e722170003aa02c2eda4c2cfd6521 (diff) |
Add README.
-rw-r--r-- | README.org | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/README.org b/README.org new file mode 100644 index 0000000..051c313 --- /dev/null +++ b/README.org @@ -0,0 +1,27 @@ +Guile AWS is pre-alpha software. At the very least it’s yet another demonstration that Guile’s compiler tower can be used to generate an embedded domain specific language from JSON specifications. + +The DSL Guile AWS produces is unpolished and thus pretty repetitive and ugly. Even in the simplest of cases it is verbose: + +#+begin_src scheme +,use (aws api s3-2006-03-01) +,pp (ListBuckets #f) +… +#+end_src + +The output is even worse as it is currently unprocessed SXML. +It may not even work at all, because the AWS APIs are all a little different. + +Considering all these caveats there are a couple of obvious things to work on: + +** Use the requestUri + Since testing began with the EC2 API which only provides operations with the same =requestUri= of “/” the =(aws request)= module never implemented any handling of the =requestUri= field. The S3 API, however, is full of fancy URIs such as ="/{Bucket}/{Key+}?restore"= — it is not clear how to interpret the placeholders. +** Create aliases + The S3 API (for example) defines aliases for some operations, such as “PostObjectRestore” for “RestoreObject”. The compiler should process the “alias” field. +** Record possible errors +The S3 API (for example) defines possible error names. While their shape is not specified anywhere we should generate values for these error conditions. +** Do not require an input + Some operations don’t require any input, such as =ListBuckets=. For operations like that we should not be forced to specify #F. +** Process output shapes + We generate types for all defined shapes — including output shapes — but we don’t mashall the output SXML into appropriate Scheme values yet. +** Turn errors into Scheme conditions +This is easier said than done because different APIs return different kinds of errors. |