aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/repository/identity.lux
diff options
context:
space:
mode:
authorEduardo Julian2020-12-23 06:33:44 -0400
committerEduardo Julian2020-12-23 06:33:44 -0400
commitd29e091e98dabb8dfcf816899ada480ecbf7e357 (patch)
treea9d34c7fbb700cdb0c1f1226d377150614ce9914 /stdlib/source/program/aedifex/repository/identity.lux
parentcad959345afb8bf0bd1e5eefe6c63f136833b3ce (diff)
Refactored "export" common syntax.
Diffstat (limited to 'stdlib/source/program/aedifex/repository/identity.lux')
-rw-r--r--stdlib/source/program/aedifex/repository/identity.lux42
1 files changed, 42 insertions, 0 deletions
diff --git a/stdlib/source/program/aedifex/repository/identity.lux b/stdlib/source/program/aedifex/repository/identity.lux
new file mode 100644
index 000000000..fbc93f367
--- /dev/null
+++ b/stdlib/source/program/aedifex/repository/identity.lux
@@ -0,0 +1,42 @@
+(.module:
+ [lux #*
+ ["." host (#+ import:)]
+ [abstract
+ [equivalence (#+ Equivalence)]]
+ [data
+ ["." product]
+ ["." text
+ ["%" format (#+ format)]
+ ["." encoding]]]])
+
+(type: #export User
+ Text)
+
+(type: #export Password
+ Text)
+
+(type: #export Identity
+ {#user User
+ #password Password})
+
+(def: #export equivalence
+ (Equivalence Identity)
+ ($_ product.equivalence
+ text.equivalence
+ text.equivalence
+ ))
+
+(import: java/util/Base64$Encoder
+ ["#::."
+ (encodeToString [[byte]] java/lang/String)])
+
+(import: java/util/Base64
+ ["#::."
+ (#static getEncoder [] java/util/Base64$Encoder)])
+
+(def: #export (basic-auth user password)
+ (-> User Password Text)
+ (let [credentials (\ encoding.utf8 encode (format user ":" password))]
+ (|> (java/util/Base64::getEncoder)
+ (java/util/Base64$Encoder::encodeToString credentials)
+ (format "Basic "))))