1/*
2 * Copyright 2014 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _B_GOPHER_REQUEST_H_
6#define _B_GOPHER_REQUEST_H_
7
8
9#include <deque>
10
11#include <NetworkRequest.h>
12#include <UrlProtocolRoster.h>
13
14
15namespace BPrivate {
16
17namespace Network {
18
19
20class BGopherRequest : public BNetworkRequest {
21public:
22	virtual						~BGopherRequest();
23
24			status_t			Stop();
25	const 	BUrlResult&			Result() const;
26            void                SetDisableListener(bool disable);
27
28private:
29			friend class BUrlProtocolRoster;
30
31								BGopherRequest(const BUrl& url,
32									BDataIO* output,
33									BUrlProtocolListener* listener = NULL,
34									BUrlContext* context = NULL);
35
36			status_t			_ProtocolLoop();
37			void				_SendRequest();
38
39			bool				_NeedsParsing();
40			bool				_NeedsLastDotStrip();
41
42			status_t			_ParseInput(bool last);
43
44			BString&			_HTMLEscapeString(BString &str);
45
46private:
47			char				fItemType;
48			BString				fPath;
49
50			ssize_t				fPosition;
51
52			BUrlResult			fResult;
53};
54
55
56} // namespace Network
57
58} // namespace BPrivate
59
60#endif // _B_GOPHER_REQUEST_H_
61