MCFtpRepository.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:22:28 +0100
changeset 111 7444c3a2d014
child 233 979de6702a64
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
111
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCFileBasedRepository subclass:#MCFtpRepository
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'host directory user password connection'
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Repositories'
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCFtpRepository class methodsFor:'as yet unclassified'!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
creationTemplate
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
'MCFtpRepository
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	host: ''modules.squeakfoundation.org''
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	directory: ''mc''
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	user: ''squeak''
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	password: ''squeak'''
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
description
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ 'FTP'
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
fillInTheBlankRequest
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ 'FTP Repository:'
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
host: host directory: directory user: user password: password
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	^ self new
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		host: host;
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
		directory: directory;
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
		user: user;
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
		password: password
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
morphicConfigure
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	^ self fillInTheBlankConfigure
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
templateCreationSelector
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	^ #host:directory:user:password: 
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
! !
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!MCFtpRepository methodsFor:'as yet unclassified'!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
clientDo: aBlock
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	| client |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	client _ FTPClient openOnHostNamed: host.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	client loginUser: user password: password.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	directory isEmpty ifFalse: [client changeDirectoryTo: directory].
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	^ [aBlock value: client] ensure: [client close]
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
directory: dirPath
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	directory _ dirPath
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
host: hostname
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	host _ hostname
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
parseDirectoryListing: aString
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
	| stream files line tokens |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	stream _ aString readStream.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	files _ OrderedCollection new.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	[stream atEnd] whileFalse:
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
		[line _ stream nextLine.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
		tokens _ line findTokens: ' '.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
		tokens size > 2 ifTrue: [files add: tokens last]].
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	^ files
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
password: passwordString
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	password _ passwordString
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
user: userString
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	user _ userString
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
! !
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
!MCFtpRepository methodsFor:'required'!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
allFileNames
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
	^ self clientDo:
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
		[:client |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		self parseDirectoryListing: client getDirectory]
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
description
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	^ 'ftp://', user, '@', host, '/', directory
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
readStreamForFileNamed: aString do: aBlock
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
	| stream |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
	^ self clientDo:
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
		[:client |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
		client binary.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
		stream _ RWBinaryOrTextStream on: String new.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
		stream nextPutAll: (client getFileNamed: aString).
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
		aBlock value: stream reset]
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
writeStreamForFileNamed: aString replace: ignoreBoolean do: aBlock
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	| stream |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
	stream _ RWBinaryOrTextStream on: String new.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	aBlock value: stream.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	self clientDo:
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
		[:client |
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
		client binary.
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
		client putFileStreamContents: stream reset as: aString]
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
! !
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
!MCFtpRepository class methodsFor:'documentation'!
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
version
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCFtpRepository.st,v 1.1 2006-11-22 13:22:28 cg Exp $'
7444c3a2d014 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
! !