aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/repository/remote.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/program/aedifex/repository/remote.lux')
-rw-r--r--stdlib/source/program/aedifex/repository/remote.lux31
1 files changed, 15 insertions, 16 deletions
diff --git a/stdlib/source/program/aedifex/repository/remote.lux b/stdlib/source/program/aedifex/repository/remote.lux
index eb285bb67..dcf1e1d51 100644
--- a/stdlib/source/program/aedifex/repository/remote.lux
+++ b/stdlib/source/program/aedifex/repository/remote.lux
@@ -80,12 +80,12 @@
(format (///artifact.uri version_template artifact) extension))
(def: buffer_size
- (n.* 512 1,024))
+ (n.* 1,024 1,024))
(def: user_agent
(format "LuxAedifex/" (version.format language/lux.version)))
-(structure: #export (repository identity address)
+(implementation: #export (repository identity address)
(All [s] (-> (Maybe Identity) Address (//.Repository IO)))
(def: (download uri)
@@ -99,21 +99,20 @@
input (|> connection
java/net/URLConnection::getInputStream
(\ ! map (|>> java/io/BufferedInputStream::new)))
- #let [buffer (binary.create ..buffer_size)]
- output (loop [output (\ binary.monoid identity)]
+ #let [buffer (binary.create ..buffer_size)]]
+ (loop [output (\ binary.monoid identity)]
+ (do !
+ [bytes_read (java/io/BufferedInputStream::read buffer +0 (.int ..buffer_size) input)]
+ (case bytes_read
+ -1 (do !
+ [_ (java/lang/AutoCloseable::close input)]
+ (wrap output))
+ +0 (recur output)
+ _ (if (n.= ..buffer_size bytes_read)
+ (recur (\ binary.monoid compose output buffer))
(do !
- [bytes_read (java/io/BufferedInputStream::read buffer +0 (.int ..buffer_size) input)]
- (case bytes_read
- -1 (do !
- [_ (java/lang/AutoCloseable::close input)]
- (wrap output))
- +0 (recur output)
- _ (if (n.= ..buffer_size bytes_read)
- (recur (\ binary.monoid compose output buffer))
- (do !
- [chunk (\ io.monad wrap (binary.slice 0 (.nat bytes_read) buffer))]
- (recur (\ binary.monoid compose output chunk)))))))]
- (wrap output)))
+ [chunk (\ io.monad wrap (binary.slice 0 (.nat bytes_read) buffer))]
+ (recur (\ binary.monoid compose output chunk)))))))))
(def: (upload uri content)
(case identity