48 lines
1.7 KiB
Smalltalk
48 lines
1.7 KiB
Smalltalk
accessing
|
|
exportProfileImageOn: fileReference
|
|
|
|
| file tempFile tempFileHash fileHash |
|
|
file := fileReference asFileReference.
|
|
file exists
|
|
ifFalse: [ file ensureCreateFile.
|
|
file binaryWriteStreamDo: [ :stream |
|
|
stream nextPutAll: profileImageUrl retrieveContents ].
|
|
super class inform: 'Exported as: ', String cr, file fullName.
|
|
^ file]
|
|
|
|
ifTrue: [
|
|
tempFile := FileLocator temp / fileReference basename.
|
|
tempFile ensureCreateFile.
|
|
tempFile binaryWriteStreamDo: [ :stream |
|
|
stream nextPutAll: profileImageUrl asUrl retrieveContents.
|
|
super class
|
|
inform: 'Exported as: ', String cr, tempFile fullName. ].
|
|
|
|
OSSUnixSubprocess new
|
|
command: 'openssl';
|
|
arguments: { 'dgst' . '-sha256' . file fullName};
|
|
workingDirectory: (self folder)fullName;
|
|
redirectStdout;
|
|
redirectStderr;
|
|
runAndWaitOnExitDo: [ :process :outString |
|
|
fileHash := (outString splitOn: ' ' ) second trimmed].
|
|
|
|
OSSUnixSubprocess new
|
|
command: 'openssl';
|
|
arguments: { 'dgst' . '-sha256' . tempFile fullName};
|
|
workingDirectory: (self folder)fullName;
|
|
redirectStdout;
|
|
redirectStderr;
|
|
runAndWaitOnExitDo: [ :process :outString |
|
|
tempFileHash := (outString splitOn: ' ' ) second trimmed].
|
|
|
|
fileHash = tempFileHash
|
|
ifFalse: [
|
|
file copyTo: self folder /
|
|
(file basenameWithoutExtension , '-',
|
|
('-' join:
|
|
((file creationTime asLocalStringYMDHM) splitOn: ' ')), '.jpg').
|
|
file ensureDelete.
|
|
^ { 'Profile image changed' ->
|
|
(tempFile moveTo: file)} asDictionary ]].
|
|
^ { 'Same Profile Image' -> file } asDictionary |