Revision 3dabe5d2 kamaki/clients/connection/__init__.py

b/kamaki/clients/connection/__init__.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34

  
34 35
class HTTPResponse(object):
35 36

  
36 37
    def __init__(self, request=None, prefetched=False):
37
        self.request=request
38
        self.request = request
38 39
        self.prefetched = prefetched
39 40

  
40 41
    def _get_response(self):
......
49 50
        Use this after finished using the response"""
50 51
        raise NotImplementedError
51 52

  
52
    @property 
53
    @property
53 54
    def prefetched(self):
54 55
        return self._prefetched
56

  
55 57
    @prefetched.setter
56 58
    def prefetched(self, p):
57 59
        self._prefetched = p
58 60

  
59
    @property 
61
    @property
60 62
    def content(self):
61 63
        self._get_response()
62 64
        return self._content
63
    @content.setter 
65

  
66
    @content.setter
64 67
    def content(self, v):
65 68
        self._content = v
66 69

  
67
    @property 
70
    @property
68 71
    def text(self):
69 72
        self._get_response()
70 73
        return self._text
71
    @text.setter 
74

  
75
    @text.setter
72 76
    def text(self, v):
73 77
        self._text = v
74 78

  
75
    @property 
79
    @property
76 80
    def json(self):
77 81
        self._get_response()
78 82
        return self._json
79
    @json.setter 
83

  
84
    @json.setter
80 85
    def json(self, v):
81 86
        self._json = v
82 87

  
83
    @property 
88
    @property
84 89
    def headers(self):
85 90
        self._get_response()
86 91
        return self._headers
87
    @headers.setter 
92

  
93
    @headers.setter
88 94
    def headers(self, v):
89 95
        self._headers = v
90 96

  
91
    @property 
97
    @property
92 98
    def status_code(self):
93 99
        self._get_response()
94 100
        return self._status_code
95
    @status_code.setter 
101

  
102
    @status_code.setter
96 103
    def status_code(self, v):
97 104
        self._status_code = v
98 105

  
99
    @property 
106
    @property
100 107
    def status(self):
101 108
        self._get_response()
102 109
        return self._status
103
    @status.setter 
110

  
111
    @status.setter
104 112
    def status(self, v):
105 113
        self._status = v
106 114

  
107
    @property 
115
    @property
108 116
    def request(self):
109 117
        return self._request
110
    @request.setter 
118

  
119
    @request.setter
111 120
    def request(self, v):
112 121
        self._request = v
113 122

  
123

  
114 124
class HTTPConnectionError(Exception):
115 125
    def __init__(self, message, status=0, details=''):
116
    	super(HTTPConnectionError, self).__init__(message)
126
        super(HTTPConnectionError, self).__init__(message)
117 127
        self.message = message
118 128
        self.status = status
119 129
        self.details = details
120 130

  
131

  
121 132
class HTTPConnection(object):
122 133

  
123 134
    def __init__(self, method=None, url=None, params={}, headers={}):
124
    	self.headers = headers
125
    	self.params = params
126
    	self.url = url
127
    	self.method = method
135
        self.headers = headers
136
        self.params = params
137
        self.url = url
138
        self.method = method
128 139

  
129 140
    def raise_for_status(self, r):
130 141
        message = "%d %s" % (r.status_code, r.status)
......
135 146
        raise HTTPConnectionError(message, r.status_code, details)
136 147

  
137 148
    def set_header(self, name, value):
138
    	self.headers[unicode(name)] = unicode(value)
149
        self.headers[unicode(name)] = unicode(value)
139 150

  
140 151
    def remove_header(self, name):
141
    	try:
142
    		self.headers.pop(name)
143
    	except KeyError:
144
    		pass
152
        try:
153
            self.headers.pop(name)
154
        except KeyError:
155
            pass
145 156

  
146 157
    def replace_headers(self, new_headers):
147
    	self.headers = new_headers
158
        self.headers = new_headers
148 159

  
149 160
    def reset_headers(self):
150
    	self.replace_headers({})
161
        self.replace_headers({})
151 162

  
152 163
    def set_param(self, name, value=None):
153
    	self.params[name] = value
164
        self.params[name] = value
154 165

  
155 166
    def remove_param(self, name):
156
    	try:
157
    		self.params.pop(name)
158
    	except KeyError:
159
    		pass
167
        try:
168
            self.params.pop(name)
169
        except KeyError:
170
            pass
160 171

  
161 172
    def replace_params(self, new_params):
162
    	self.params = new_params
173
        self.params = new_params
163 174

  
164 175
    def reset_params(self):
165
    	self.replace_params({})
176
        self.replace_params({})
166 177

  
167 178
    def set_url(self, url):
168
    	self.url = url
179
        self.url = url
169 180

  
170 181
    def set_method(self, method):
171
    	self.method = method
172

  
173
	def perform_request(self, method=None, url=None, async_headers={}, async_params={}, data=None):
174
		"""
175
		@return an HTTPResponse (also in self.response of this object)
176
		named args offer the ability to reset a request or a part of the request
177
		e.g. r = HTTPConnection(url='http://....', method='GET')
178
			 r.perform_request()
179
			 r.perform_request(method='POST')
180
		will perform a GET request and later a POST request on the same URL
181
		another example:
182
			 r = HTTPConnection(url='http://....', params='format=json')
183
			 r.perform_request(method='GET')
184
			 r.perform_request(method='POST')
185
		"""
186
		raise NotImplementedError
182
        self.method = method
183

  
184
    def perform_request(self,
185
        method=None,
186
        url=None,
187
        async_headers={},
188
        async_params={},
189
        data=None):
190
        """
191
        @return an HTTPResponse (also in self.response of this object)
192
        named args offer the ability to reset a request or a part of the
193
        request
194
        e.g. r = HTTPConnection(url='http://....', method='GET')
195
             r.perform_request()
196
             r.perform_request(method='POST')
197
        will perform a GET request and later a POST request on the same URL
198
        another example:
199
             r = HTTPConnection(url='http://....', params='format=json')
200
             r.perform_request(method='GET')
201
             r.perform_request(method='POST')
202
        """
203
        raise NotImplementedError
187 204

  
188 205
    """
189
    @property 
206
    @property
190 207
    def response(self):
191 208
        return self._response
192 209
    @response.setter

Also available in: Unified diff