smalltalkpharopharocloudpharo-5

How can I refresh a session for every 60 second and display it on transcript with Pharo?


|a b |
a := ZnClient new.
a get: 'http://cloud-storage.com/login'.
a
formAt: 'username' put: 'jom';
formAt: 'password' put: 'mypass';
post;
get: 'http://cloud-storage.com/my-file'.
"Here I want to refresh the session for every 60sec and"
"to checking for newer data"
b := a maxNumberOfRedirects:60
Transcript show: b; cr.

I would like to implement a method that can refresh the ZnClient session every 60s for checking for newer data on the server I am logged into. I tried the redirect method of pharo but it does not seem to work. or say It does not show anything. Any idea?


Solution

  • | session data |
    
    session := ZnClient new url: 'http://cloud-storage.com'.
    
    "Login"
    session path: '/login';
        formAt: 'email' put: 'jom';
        formAt: 'password' put: 'mypass';
        post.
    
    "Get data"
    data := session path: '/my-file'; get; contents.
    
    "Check for new data every 60 secs for maximum 100 tries"
    [
        100 timesRepeat: [
            | newData |
            (Delay forSeconds: 60) wait.
            newData := session path: '/my-file'; get; contents.
            (data ~= newData) ifTrue: [Transcript show: newData; cr]
        ]
    ] fork.
    

    NB. Despite above example code you may want to consider trying If-Modified-Since method in ZnClient.