Hi Sven,

yes `session:` would be the ideal solution.
But because it wasn't there (only getter) I wasn't sure whether this was a
design decision - e.g. because sessions can't be reused.

Thanks!
Peter

On Tue, Nov 28, 2017 at 10:51 AM, Sven Van Caekenberghe <s...@stfx.eu>
wrote:

> Peter,
>
> > On 28 Nov 2017, at 10:42, Peter Uhnák <i.uh...@gmail.com> wrote:
> >
> > Hi,
> >
> > I have a scenario where I need to login to some web app and then reuse
> the session/cookies in further requests.
> >
> > The basic approach (as presented in Enterprise Pharo book) works just
> fine
> >
> > client := ZnClient new.
> >
> > client
> >       url: 'http://example.com/login';
> >       formAt: 'username' put: 'john....@acme.com';
> >       formAt: 'password' put: 'trustno1';
> >       post.
> >
> > client
> >       get: 'http://example.com/my-file'.
> >
> > The problem is when I want to change the way response is retrieved. E.g.
> >
> > client
> >       accept: 'text/json';
> >       contentReader: [ :entity | STON fromString: entity contents ];
> >       get: 'http://example.com/some.json'.
> >
> > "uh-oh... it still uses STON contentReader"
> > client
> >       get: 'http://example.com/homepage.html'
> >
> >
> > Of course I could manually copy all the cookies, however I imagine there
> is a better approach. Maybe injecting session from one ZnClient instance to
> another?
> >
> > Thanks,
> > Peter
>
> Reusing a ZnClient makes most sense when you access one host in a uniform
> way.
>
> Like you say, there are different options
>
>  - reset the content reader when needed (assign nil)
>  - make your content reader more intelligent (check the entity's content
> type and act accordingly)
>  - get the #session from one client and use in on another one (#session:
> must be added for this)
>
> ZnClient holds all kind of state (it is also a builder), so some
> occasional resetting (or managing this state) can be needed.
>
> Does this help ?
>
> Sven
>
>
>

Reply via email to