aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2001-09-26 20:39:46 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2001-09-26 20:39:46 +0000
commit84e503afe3c6ea684663272df1a7de1da85a20b7 (patch)
tree381c642b3dedae6e9c75c02dd44d6ebfe2574d43 /src
parentef5322a92af5c193f04b599c01f0566ddc5ed5a2 (diff)
downloadluasocket-84e503afe3c6ea684663272df1a7de1da85a20b7.tar.gz
luasocket-84e503afe3c6ea684663272df1a7de1da85a20b7.tar.bz2
luasocket-84e503afe3c6ea684663272df1a7de1da85a20b7.zip
Changed some variable names.
Added correct scheme test.
Diffstat (limited to 'src')
-rw-r--r--src/ftp.lua46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/ftp.lua b/src/ftp.lua
index 98b08eb..1af4d30 100644
--- a/src/ftp.lua
+++ b/src/ftp.lua
@@ -273,11 +273,11 @@ end
273-- server: server socket bound to local address 273-- server: server socket bound to local address
274-- name: file name 274-- name: file name
275-- is_directory: is file a directory name? 275-- is_directory: is file a directory name?
276-- download_cb: callback to receive file contents 276-- content_cb: callback to receive file contents
277-- Returns 277-- Returns
278-- err: error message in case of error, nil otherwise 278-- err: error message in case of error, nil otherwise
279----------------------------------------------------------------------------- 279-----------------------------------------------------------------------------
280function Private.retrieve(control, server, name, is_directory, download_cb) 280function Private.retrieve(control, server, name, is_directory, content_cb)
281 local code, answer 281 local code, answer
282 local data 282 local data
283 -- ask server for file or directory listing accordingly 283 -- ask server for file or directory listing accordingly
@@ -295,7 +295,7 @@ function Private.retrieve(control, server, name, is_directory, download_cb)
295 control:close() 295 control:close()
296 return answer 296 return answer
297 end 297 end
298 answer = %Private.receive_indirect(data, download_cb) 298 answer = %Private.receive_indirect(data, content_cb)
299 if answer then 299 if answer then
300 control:close() 300 control:close()
301 return answer 301 return answer
@@ -380,10 +380,9 @@ end
380-- err: error message if any 380-- err: error message if any
381----------------------------------------------------------------------------- 381-----------------------------------------------------------------------------
382function Private.change_type(control, params) 382function Private.change_type(control, params)
383 local type 383 local type, _
384 if params == "type=i" then type = "i" 384 _, _, type = strfind(params or "", "type=(.)")
385 elseif params == "type=a" then type = "a" end 385 if type == "a" or type == "i" then
386 if type then
387 local code, err = %Private.command(control, "type", type, {200}) 386 local code, err = %Private.command(control, "type", type, {200})
388 if not code then return err end 387 if not code then return err end
389 end 388 end
@@ -443,25 +442,25 @@ end
443-- Input 442-- Input
444-- control: control connection with server 443-- control: control connection with server
445-- request: a table with the fields: 444-- request: a table with the fields:
446-- upload_cb: send callback to send file contents 445-- content_cb: send callback to send file contents
447-- segment: parsed URL path segments 446-- segment: parsed URL path segments
448-- Returns 447-- Returns
449-- err: error message if any 448-- err: error message if any
450----------------------------------------------------------------------------- 449-----------------------------------------------------------------------------
451function Private.upload(control, request, segment) 450function Private.upload(control, request, segment)
452 local code, name, upload_cb 451 local code, name, content_cb
453 -- get remote file name 452 -- get remote file name
454 name = segment[getn(segment)] 453 name = segment[getn(segment)]
455 if not name then 454 if not name then
456 control:close() 455 control:close()
457 return "Invalid file path" 456 return "Invalid file path"
458 end 457 end
459 upload_cb = request.upload_cb 458 content_cb = request.content_cb
460 -- setup passive connection 459 -- setup passive connection
461 local server, answer = %Private.port(control) 460 local server, answer = %Private.port(control)
462 if not server then return answer end 461 if not server then return answer end
463 -- ask server to receive file 462 -- ask server to receive file
464 code, answer = %Private.store(control, server, name, upload_cb) 463 code, answer = %Private.store(control, server, name, content_cb)
465 if not code then return answer end 464 if not code then return answer end
466end 465end
467 466
@@ -470,15 +469,15 @@ end
470-- Input 469-- Input
471-- control: control connection with server 470-- control: control connection with server
472-- request: a table with the fields: 471-- request: a table with the fields:
473-- download_cb: receive callback to receive file contents 472-- content_cb: receive callback to receive file contents
474-- segment: parsed URL path segments 473-- segment: parsed URL path segments
475-- Returns 474-- Returns
476-- err: error message if any 475-- err: error message if any
477----------------------------------------------------------------------------- 476-----------------------------------------------------------------------------
478function Private.download(control, request, segment) 477function Private.download(control, request, segment)
479 local code, name, is_directory, download_cb 478 local code, name, is_directory, content_cb
480 is_directory = segment.is_directory 479 is_directory = segment.is_directory
481 download_cb = request.download_cb 480 content_cb = request.content_cb
482 -- get remote file name 481 -- get remote file name
483 name = segment[getn(segment)] 482 name = segment[getn(segment)]
484 if not name and not is_directory then 483 if not name and not is_directory then
@@ -490,7 +489,7 @@ function Private.download(control, request, segment)
490 if not server then return answer end 489 if not server then return answer end
491 -- ask server to send file or directory listing 490 -- ask server to send file or directory listing
492 code, answer = %Private.retrieve(control, server, name, 491 code, answer = %Private.retrieve(control, server, name,
493 is_directory, download_cb) 492 is_directory, content_cb)
494 if not code then return answer end 493 if not code then return answer end
495end 494end
496 495
@@ -511,7 +510,8 @@ function Private.parse_url(request)
511 user = "anonymous", 510 user = "anonymous",
512 port = 21, 511 port = 21,
513 path = "/", 512 path = "/",
514 password = %Public.EMAIL 513 password = %Public.EMAIL,
514 scheme = "ftp"
515 }) 515 })
516 -- explicit login information overrides that given by URL 516 -- explicit login information overrides that given by URL
517 parsed.user = request.user or parsed.user 517 parsed.user = request.user or parsed.user
@@ -560,12 +560,15 @@ end
560-- type: "i" for "image" mode, "a" for "ascii" mode or "d" for directory 560-- type: "i" for "image" mode, "a" for "ascii" mode or "d" for directory
561-- user: account user name 561-- user: account user name
562-- password: account password 562-- password: account password
563-- download_cb: receive callback to receive file contents 563-- content_cb: receive callback to receive file contents
564-- Returns 564-- Returns
565-- err: error message if any 565-- err: error message if any
566----------------------------------------------------------------------------- 566-----------------------------------------------------------------------------
567function Public.get_cb(request) 567function Public.get_cb(request)
568 local parsed = %Private.parse_url(request) 568 local parsed = %Private.parse_url(request)
569 if parsed.scheme ~= "ftp" then
570 return format("unknown scheme '%s'", parsed.scheme)
571 end
569 local control, err = %Private.open(parsed) 572 local control, err = %Private.open(parsed)
570 if not control then return err end 573 if not control then return err end
571 local segment = %Private.parse_path(parsed) 574 local segment = %Private.parse_path(parsed)
@@ -583,12 +586,15 @@ end
583-- type: "i" for "image" mode, "a" for "ascii" mode or "d" for directory 586-- type: "i" for "image" mode, "a" for "ascii" mode or "d" for directory
584-- user: account user name 587-- user: account user name
585-- password: account password 588-- password: account password
586-- upload_cb: send callback to send file contents 589-- content_cb: send callback to send file contents
587-- Returns 590-- Returns
588-- err: error message if any 591-- err: error message if any
589----------------------------------------------------------------------------- 592-----------------------------------------------------------------------------
590function Public.put_cb(request) 593function Public.put_cb(request)
591 local parsed = %Private.parse_url(request) 594 local parsed = %Private.parse_url(request)
595 if parsed.scheme ~= "ftp" then
596 return format("unknown scheme '%s'", parsed.scheme)
597 end
592 local control, err = %Private.open(parsed) 598 local control, err = %Private.open(parsed)
593 if not control then return err end 599 if not control then return err end
594 local segment = %Private.parse_path(parsed) 600 local segment = %Private.parse_path(parsed)
@@ -612,7 +618,7 @@ end
612----------------------------------------------------------------------------- 618-----------------------------------------------------------------------------
613function Public.put(url_or_request, content) 619function Public.put(url_or_request, content)
614 local request = %Private.build_request(url_or_request) 620 local request = %Private.build_request(url_or_request)
615 request.upload_cb = function() 621 request.content_cb = function()
616 return %content, strlen(%content) 622 return %content, strlen(%content)
617 end 623 end
618 return %Public.put_cb(request) 624 return %Public.put_cb(request)
@@ -633,7 +639,7 @@ end
633function Public.get(url_or_request) 639function Public.get(url_or_request)
634 local cat = Concat.create() 640 local cat = Concat.create()
635 local request = %Private.build_request(url_or_request) 641 local request = %Private.build_request(url_or_request)
636 request.download_cb = function(chunk, err) 642 request.content_cb = function(chunk, err)
637 if chunk then %cat:addstring(chunk) end 643 if chunk then %cat:addstring(chunk) end
638 return 1 644 return 1
639 end 645 end