Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stable release for 2019 (#277) #306

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 6 additions & 1 deletion .smalltalk.ston
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,10 @@ SmalltalkCISpec {
#load : 'Tests',
#platforms : [ #squeak ]
}
]
],
#testing : {
#coverage : {
#packages : [ 'IMAPClient-Core', 'IMAPClient-Protocol' ]
}
}
}
3 changes: 2 additions & 1 deletion .squot
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ OrderedDictionary {
'packages\/BaselineOfIMAPClient.package' : #SquotCypressCodeSerializer,
'packages\/IMAPClient-Core.package' : #SquotCypressCodeSerializer,
'packages\/IMAPClient-Tests.package' : #SquotCypressCodeSerializer,
'packages\/IMAPClient-UI.package' : #SquotCypressCodeSerializer
'packages\/IMAPClient-UI.package' : #SquotCypressCodeSerializer,
'packages\/IMAPClient-Protocol.package' : #SquotCypressCodeSerializer
}
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ sudo: false

smalltalk:
- Squeak-5.1
- Squeak-5.2
- Squeak-trunk

matrix:
allow_failures:
- smalltalk: Squeak-trunk
40 changes: 10 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
We proudly present our IMAP Client for Smalltalk Squeak, which we developed and improved during the summer term 2018 of the Software Engineering course.

## Installation
1. Get [Squeak 5.1 or later](http://www.squeak.org)
1. Get [Squeak 5.2 or later](http://www.squeak.org)
2. Load [Metacello](https://github.com/metacello/metacello)
3. Finally, load the package with the following command:

Expand All @@ -14,29 +14,11 @@ Metacello new
load.
```

4. Afterwards load additional changes from Squeak-trunk:
4. Now you can setup a Menu Entry under "Apps" using `ICFolderDialog install`.

We needed to use some Squeak Methods, which werent available in Squeak-5.1, so we had to update them manually.
Please follow the following steps:

1. Open Monticello Browser

![](screenshots/40866916-aaf887fc-6600-11e8-9dc8-847775df210c.png)

2. Select `http://source.squeak.org/trunk` on the right and press `open`

![](screenshots/40867006-45090ee8-6601-11e8-8e89-9d9f6a536792.png)

3. In the new window search for `Network`, select the newest commit and click `Load`

![](screenshots/40867029-7fddabc8-6601-11e8-9247-7df69755c6e9.png)

4. Do the Same for `Collections`

![](screenshots/40867038-95f11300-6601-11e8-9ce6-70933baae984.png)

## Open
You can open the tool with the command `ICLoginDialog open: ICFolderDialog new`
You can open the tool with the command `ICFolderDialog new` or using a Menu Entry.

## Configuration
You can customize the number of mails, which are fetched on the initial update process, and the number of mails which are loaded if you press the `Load older Mails` Button. Default are 100 and 10. Change `ICFolder>>numbersOfHeadersToFetch{AtLoaderOlderMail | AtTheBeginning}`
Expand All @@ -61,7 +43,7 @@ You can open the tool with the command `ICLoginDialog open: ICFolderDialog new`
- Display emails correctly (parse different encodings)

## Usage
Start the IMAP Client with `ICFolderDialog open`. Add new Accounts with the `+` Button. We tested the functionality with the HPI OWA Accounts. But other accounts should work fine.
Start the IMAP Client with `ICFolderDialog new`. Add new Accounts with the `+` Button. We tested the functionality with the HPI OWA Accounts. But other accounts should work fine.
```
Server: owa.hpi.de
Port: 993
Expand All @@ -70,16 +52,12 @@ Password: xxxxxxx
Use SSL: True
```

## Safety
You don't have to be worried about your passwords, of course we won't save them. After closing the IMAP-Client and reopening it your are welcomed by a password prompt to re-enter your credentials.

## Issue
There are some open issues left (we wanted to give you a good starting point ;-)) - just kidding, we didn't had enough time to fix all of these, so we left some in the Issues section.
## Security
Your password isn't stored on disk, but visible to your Squeak environment. After closing the IMAP-Client and reopening it your are welcomed by a password prompt to re-enter your credentials.

## Architecture

![](screenshots/architecture.png)
## Documentation

Hava a look at the GitHub Project Wiki to find more insights into the project.

## History
2016: Johannes Schneider, Maximilian Söchting, Julian Weise, Alexander Riese, Alexander Loeser
Expand All @@ -88,6 +66,8 @@ There are some open issues left (we wanted to give you a good starting point ;-)

2018: Claudia Grabowski, Leonard Von Merzljak, Marius Walter, David Hennemann

2019: Paul Methfessel, Martin Taraz, Otto Kissig, Tim Garrels, Felix Rindt

## Questions

If you have any question, feel free to drop us a line :-)
2 changes: 1 addition & 1 deletion packages/BaselineOfIMAPClient.package/.squot-contents
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SquotTrackedObjectMetadata {
#objectClassName : #PackageInfo,
#serializer : #SquotCypressCodeSerializer
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ baseline: spec
package: 'JSON' with: [ spec file: 'JSON-ul.35'; repository: 'http://www.squeaksource.com/JSON' ];
package: 'IMAPClient-Core';
package: 'IMAPClient-UI';
package: 'IMAPClient-Protocol';
package: 'IMAPClient-Tests' with: [ spec requires: #('default' 'libaries')].
spec
group: 'default' with: #('IMAPClient-UI' 'IMAPClient-Core');
group: 'default' with: #('IMAPClient-UI' 'IMAPClient-Core' 'IMAPClient-Protocol');
group: 'Tests' with: #('IMAPClient-Tests');
group: 'libaries' with: #('JSON')]
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"class" : {
},
"instance" : {
"baseline:" : "C.G. 7/25/2018 18:25" } }
"baseline:" : "pm 7/12/2019 20:46" } }
2 changes: 1 addition & 1 deletion packages/IMAPClient-Core.package/.squot-contents
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SquotTrackedObjectMetadata {
#objectClassName : #PackageInfo,
#serializer : #SquotCypressCodeSerializer
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
An ICAccountInfo is a dataobject holding information needed to connect to a server such as server address and user credentials. It also ensures basic IMAP datatype validity.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
constants
initialUsername
initialAccountName

^ String empty
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
constants
initialSsl

^ true
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
constants
initialPassword
invalidHost

^ String empty
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
constants
defaultPassword
invalidPassword

^ String empty
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
constants
invalidPort

^ -1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
constants
defaultUsername
invalidUsername

^ String empty
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
instance creation
newWith: aDataDictionary

^ self new
accountName: (aDataDictionary at: 'accountName');
host: (aDataDictionary at: 'address');
port: ((aDataDictionary at: 'port') asNumber);
username: (aDataDictionary at: 'username');
password: (aDataDictionary at: 'password');
ssl: (aDataDictionary at: 'ssl')
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
accountName: aString

accountName := aString
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
accountName

^ accountName ifNil: [accountName := self class initialAccountName]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
accessing
asDictionary

| dict |
dict := Dictionary new.
dict at: 'ssl' put: self ssl;
at: 'accountName' put: self accountName;
at: 'address' put: self host;
at: 'port' put: self port;
at: 'username' put: self username;
at: 'password' put: self password.

^ dict

Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
validation
canConvert: aString

^ ('"|\\' asRegex matchesIn: aString) isEmpty
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
validation
hasValidServerInfo

^ self host ~= self class invalidHost
and: [self port ~= self class invalidPort]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
validation
hasValidUserInfo

^ self username ~= self class invalidUsername
and: [self password ~= self class invalidPassword]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
host: aString

host := aString
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
host

^ host ifNil: [host := self class invalidHost]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
validation
isValid

^ self hasValidServerInfo and: [self hasValidUserInfo]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
accessing
password: aString

(self canConvert: aString) ifFalse: [self error: (aString, ' is not IMAP convertable')].
password := aString
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
password

^ password ifNil: [password := self class invalidPassword]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
passwordAsIMAPString

^ '"', self password, '"'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
port: aNumber

port := aNumber
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
port

^ port ifNil: [port := self class invalidPort]
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
printing
printOn: aStream

aStream nextPut: ({
self accountName.
self host.
self port.
self username.
self password.
self ssl
} joinSeparatedBy: ' ')
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
ssl: aBool

ssl := aBool
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
ssl

^ ssl ifNil: [ssl := self class initialSsl]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
accessing
username: aString

(self canConvert: aString) ifFalse: [self error: (aString, ' is not IMAP convertable')].
username := aString
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
username

^ username ifNil: [username := self class invalidUsername]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
usernameAsIMAPString

^ '"', self username, '"'
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"class" : {
"initialAccountName" : "tg 7/10/2019 17:43",
"initialSsl" : "tg 7/10/2019 17:43",
"invalidHost" : "tg 7/10/2019 20:08",
"invalidPassword" : "tg 7/10/2019 20:10",
"invalidPort" : "tg 7/10/2019 20:09",
"invalidUsername" : "tg 7/10/2019 20:10",
"newWith:" : "mt 7/26/2019 15:19" },
"instance" : {
"accountName" : "tg 7/10/2019 20:20",
"accountName:" : "tg 7/10/2019 17:35",
"asDictionary" : "tg 7/18/2019 23:07",
"canConvert:" : "fr 7/26/2019 15:37",
"hasValidServerInfo" : "tg 7/15/2019 12:08",
"hasValidUserInfo" : "tg 7/15/2019 12:08",
"host" : "tg 7/10/2019 20:06",
"host:" : "tg 7/10/2019 17:11",
"isValid" : "fr 7/26/2019 15:57",
"password" : "tg 7/15/2019 12:11",
"password:" : "tg 7/10/2019 17:18",
"passwordAsIMAPString" : "tg 7/10/2019 17:18",
"port" : "tg 7/10/2019 20:09",
"port:" : "tg 7/10/2019 17:11",
"printOn:" : "fr 7/26/2019 16:52",
"ssl" : "tg 7/10/2019 20:21",
"ssl:" : "tg 7/10/2019 17:34",
"username" : "fr 7/26/2019 15:37",
"username:" : "tg 7/10/2019 17:18",
"usernameAsIMAPString" : "tg 7/10/2019 17:18" } }
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@
],
"classvars" : [
],
"commentStamp" : "ms 7/28/2016 11:38",
"commentStamp" : "tg 7/15/2019 12:14",
"instvars" : [
"accountName",
"host",
"port",
"username",
"password" ],
"name" : "ICAuthenticationInfo",
"password",
"ssl" ],
"name" : "ICAccountInfo",
"pools" : [
],
"super" : "Object",
Expand Down

This file was deleted.

This file was deleted.

Loading