This repository has been archived by the owner on May 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
_a_s_i_cloud_files_object_request_8m_source.html
357 lines (339 loc) · 30.9 KB
/
_a_s_i_cloud_files_object_request_8m_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Nimbus: src/ASIHTTPRequest/src_optional/CloudFiles/ASICloudFilesObjectRequest.m Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-24278774-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div id="page">
<div style="position:relative">
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<a style="float: right;margin-right:20px;margin-top:20px" href='http://www.pledgie.com/campaigns/15519'><img alt='Click here to support Nimbus development and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/15519.png?skin_name=chrome' border='0' /></a>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Nimbus
 <span id="projectnumber">0.7.0 - <a href="http://github.com/jverkoey/nimbus">Nimbus is proudly hosted on Github</a></span>
</div>
<div id="projectbrief">An iOS framework whose growth is bounded by O(documentation).</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.4-20110629 -->
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('_a_s_i_cloud_files_object_request_8m.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">src/ASIHTTPRequest/src_optional/CloudFiles/ASICloudFilesObjectRequest.m</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// ASICloudFilesObjectRequest.m</span>
<a name="l00003"></a>00003 <span class="comment">//</span>
<a name="l00004"></a>00004 <span class="comment">// Created by Michael Mayo on 1/6/10.</span>
<a name="l00005"></a>00005 <span class="comment">//</span>
<a name="l00006"></a>00006
<a name="l00007"></a>00007 <span class="preprocessor">#import "ASICloudFilesObjectRequest.h"</span>
<a name="l00008"></a>00008 <span class="preprocessor">#import "ASICloudFilesObject.h"</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010
<a name="l00011"></a>00011 <span class="keyword">@implementation </span>ASICloudFilesObjectRequest
<a name="l00012"></a>00012
<a name="l00013"></a>00013 <span class="keyword">@synthesize</span> currentElement, currentContent, currentObject;
<a name="l00014"></a>00014 <span class="keyword">@synthesize</span> accountName, containerName;
<a name="l00015"></a>00015
<a name="l00016"></a>00016 <span class="preprocessor">#pragma mark -</span>
<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Constructors</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span>
<a name="l00019"></a>00019 + (id)storageRequestWithMethod:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)method containerName:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName {
<a name="l00020"></a>00020 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *urlString = [<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"%@/%@", [ASICloudFilesRequest storageURL], containerName];
<a name="l00021"></a>00021 ASICloudFilesObjectRequest *request = [[[ASICloudFilesObjectRequest alloc] initWithURL:[NSURL URLWithString:urlString]] autorelease];
<a name="l00022"></a>00022 [request setRequestMethod:method];
<a name="l00023"></a>00023 [request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]];
<a name="l00024"></a>00024 request.containerName = containerName;
<a name="l00025"></a>00025 <span class="keywordflow">return</span> request;
<a name="l00026"></a>00026 }
<a name="l00027"></a>00027
<a name="l00028"></a>00028 + (id)storageRequestWithMethod:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)method containerName:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName queryString:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)queryString {
<a name="l00029"></a>00029 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *urlString = [<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"%@/%@%@", [ASICloudFilesRequest storageURL], containerName, queryString];
<a name="l00030"></a>00030 ASICloudFilesObjectRequest *request = [[[ASICloudFilesObjectRequest alloc] initWithURL:[NSURL URLWithString:urlString]] autorelease];
<a name="l00031"></a>00031 [request setRequestMethod:method];
<a name="l00032"></a>00032 [request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]];
<a name="l00033"></a>00033 request.containerName = containerName;
<a name="l00034"></a>00034 <span class="keywordflow">return</span> request;
<a name="l00035"></a>00035 }
<a name="l00036"></a>00036
<a name="l00037"></a>00037 + (id)storageRequestWithMethod:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)method containerName:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath {
<a name="l00038"></a>00038 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *urlString = [<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"%@/%@/%@", [ASICloudFilesRequest storageURL], containerName, objectPath];
<a name="l00039"></a>00039 ASICloudFilesObjectRequest *request = [[[ASICloudFilesObjectRequest alloc] initWithURL:[NSURL URLWithString:urlString]] autorelease];
<a name="l00040"></a>00040 [request setRequestMethod:method];
<a name="l00041"></a>00041 [request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]];
<a name="l00042"></a>00042 request.containerName = containerName;
<a name="l00043"></a>00043 <span class="keywordflow">return</span> request;
<a name="l00044"></a>00044 }
<a name="l00045"></a>00045
<a name="l00046"></a>00046 <span class="preprocessor">#pragma mark -</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#pragma mark HEAD - Container Info</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>
<a name="l00049"></a>00049 + (id)containerInfoRequest:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName {
<a name="l00050"></a>00050 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"HEAD" containerName:containerName];
<a name="l00051"></a>00051 <span class="keywordflow">return</span> request;
<a name="l00052"></a>00052 }
<a name="l00053"></a>00053
<a name="l00054"></a>00054 - (NSUInteger)containerObjectCount {
<a name="l00055"></a>00055 <span class="keywordflow">return</span> [[[<span class="keyword">self</span> responseHeaders] objectForKey:@"X-Container-Object-Count"] intValue];
<a name="l00056"></a>00056 }
<a name="l00057"></a>00057
<a name="l00058"></a>00058 - (NSUInteger)containerBytesUsed {
<a name="l00059"></a>00059 <span class="keywordflow">return</span> [[[<span class="keyword">self</span> responseHeaders] objectForKey:@"X-Container-Bytes-Used"] intValue];
<a name="l00060"></a>00060 }
<a name="l00061"></a>00061
<a name="l00062"></a>00062 <span class="preprocessor">#pragma mark -</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#pragma mark HEAD - Object Info</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span>
<a name="l00065"></a>00065 + (id)objectInfoRequest:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath {
<a name="l00066"></a>00066 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"HEAD" containerName:containerName objectPath:objectPath];
<a name="l00067"></a>00067 <span class="keywordflow">return</span> request;
<a name="l00068"></a>00068 }
<a name="l00069"></a>00069
<a name="l00070"></a>00070 <span class="preprocessor">#pragma mark -</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#pragma mark GET - List Objects</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span>
<a name="l00073"></a>00073 + (<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)queryStringWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)container limit:(NSUInteger)limit marker:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)marker prefix:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)prefix path:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)path {
<a name="l00074"></a>00074 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *queryString = <span class="stringliteral">@"?format=xml"</span>;
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="keywordflow">if</span> (limit && limit > 0) {
<a name="l00077"></a>00077 queryString = [queryString stringByAppendingString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"&limit=%i", limit]];
<a name="l00078"></a>00078 }
<a name="l00079"></a>00079 <span class="keywordflow">if</span> (marker) {
<a name="l00080"></a>00080 queryString = [queryString stringByAppendingString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"&marker=%@", [marker stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
<a name="l00081"></a>00081 }
<a name="l00082"></a>00082 <span class="keywordflow">if</span> (path) {
<a name="l00083"></a>00083 queryString = [queryString stringByAppendingString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"&path=%@", [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
<a name="l00084"></a>00084 }
<a name="l00085"></a>00085
<a name="l00086"></a>00086 <span class="keywordflow">return</span> queryString;
<a name="l00087"></a>00087 }
<a name="l00088"></a>00088
<a name="l00089"></a>00089 + (id)listRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName limit:(NSUInteger)limit marker:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)marker prefix:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)prefix path:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)path {
<a name="l00090"></a>00090 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *queryString = [ASICloudFilesObjectRequest queryStringWithContainer:containerName limit:limit marker:marker prefix:prefix path:path];
<a name="l00091"></a>00091 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"GET" containerName:containerName queryString:queryString];
<a name="l00092"></a>00092 <span class="keywordflow">return</span> request;
<a name="l00093"></a>00093 }
<a name="l00094"></a>00094
<a name="l00095"></a>00095 + (id)listRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName {
<a name="l00096"></a>00096 <span class="keywordflow">return</span> [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:nil prefix:nil path:nil];
<a name="l00097"></a>00097 }
<a name="l00098"></a>00098
<a name="l00099"></a>00099 - (NSArray *)objects {
<a name="l00100"></a>00100 <span class="keywordflow">if</span> (objects) {
<a name="l00101"></a>00101 <span class="keywordflow">return</span> objects;
<a name="l00102"></a>00102 }
<a name="l00103"></a>00103 objects = [[[NSMutableArray alloc] init] autorelease];
<a name="l00104"></a>00104
<a name="l00105"></a>00105 NSXMLParser *parser = [[[NSXMLParser alloc] initWithData:[<span class="keyword">self</span> responseData]] autorelease];
<a name="l00106"></a>00106 [parser setDelegate:self];
<a name="l00107"></a>00107 [parser setShouldProcessNamespaces:NO];
<a name="l00108"></a>00108 [parser setShouldReportNamespacePrefixes:NO];
<a name="l00109"></a>00109 [parser setShouldResolveExternalEntities:NO];
<a name="l00110"></a>00110 [parser parse];
<a name="l00111"></a>00111 <span class="keywordflow">return</span> objects;
<a name="l00112"></a>00112 }
<a name="l00113"></a>00113
<a name="l00114"></a>00114 <span class="preprocessor">#pragma mark -</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#pragma mark GET - Retrieve Object</span>
<a name="l00116"></a>00116 <span class="preprocessor"></span>
<a name="l00117"></a>00117 + (id)getObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath {
<a name="l00118"></a>00118 <span class="keywordflow">return</span> [ASICloudFilesObjectRequest storageRequestWithMethod:@"GET" containerName:containerName objectPath:objectPath];
<a name="l00119"></a>00119 }
<a name="l00120"></a>00120
<a name="l00121"></a>00121 - (ASICloudFilesObject *)<span class="keywordtype">object</span> {
<a name="l00122"></a>00122 ASICloudFilesObject *<span class="keywordtype">object</span> = [ASICloudFilesObject object];
<a name="l00123"></a>00123
<a name="l00124"></a>00124 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *path = [<span class="keyword">self</span> url].path;
<a name="l00125"></a>00125 NSRange range = [path rangeOfString:self.containerName];
<a name="l00126"></a>00126 path = [path substringFromIndex:range.location + range.length + 1];
<a name="l00127"></a>00127
<a name="l00128"></a>00128 <span class="keywordtype">object</span>.name = path;
<a name="l00129"></a>00129 <span class="keywordtype">object</span>.hash = [[<span class="keyword">self</span> responseHeaders] objectForKey:@"ETag"];
<a name="l00130"></a>00130 <span class="keywordtype">object</span>.bytes = [[[<span class="keyword">self</span> responseHeaders] objectForKey:@"Content-Length"] intValue];
<a name="l00131"></a>00131 <span class="keywordtype">object</span>.contentType = [[<span class="keyword">self</span> responseHeaders] objectForKey:@"Content-Type"];
<a name="l00132"></a>00132 <span class="keywordtype">object</span>.lastModified = [[<span class="keyword">self</span> responseHeaders] objectForKey:@"Last-Modified"];
<a name="l00133"></a>00133 <span class="keywordtype">object</span>.metadata = [[NSMutableDictionary alloc] init];
<a name="l00134"></a>00134
<a name="l00135"></a>00135 <span class="keywordflow">for</span> (<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *key in [[<span class="keyword">self</span> responseHeaders] keyEnumerator]) {
<a name="l00136"></a>00136 NSRange metaRange = [key rangeOfString:@"X-Object-Meta-"];
<a name="l00137"></a>00137 <span class="keywordflow">if</span> (metaRange.location == 0) {
<a name="l00138"></a>00138 [object.metadata setObject:[[<span class="keyword">self</span> responseHeaders] objectForKey:key] forKey:[key substringFromIndex:metaRange.length]];
<a name="l00139"></a>00139 }
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141
<a name="l00142"></a>00142 <span class="keywordtype">object</span>.data = [<span class="keyword">self</span> responseData];
<a name="l00143"></a>00143
<a name="l00144"></a>00144 <span class="keywordflow">return</span> object;
<a name="l00145"></a>00145 }
<a name="l00146"></a>00146
<a name="l00147"></a>00147 <span class="preprocessor">#pragma mark -</span>
<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">#pragma mark PUT - Upload Object</span>
<a name="l00149"></a>00149 <span class="preprocessor"></span>
<a name="l00150"></a>00150 + (id)putObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName object:(ASICloudFilesObject *)object {
<a name="l00151"></a>00151 <span class="keywordflow">return</span> [<span class="keyword">self</span> putObjectRequestWithContainer:containerName objectPath:object.name contentType:object.contentType objectData:object.data metadata:object.metadata etag:nil];
<a name="l00152"></a>00152 }
<a name="l00153"></a>00153
<a name="l00154"></a>00154 + (id)putObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath contentType:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)contentType objectData:(<a class="code" href="class_n_s_data.html" title="For hashing raw data.">NSData</a> *)objectData metadata:(NSDictionary *)metadata etag:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)etag {
<a name="l00155"></a>00155
<a name="l00156"></a>00156 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"PUT" containerName:containerName objectPath:objectPath];
<a name="l00157"></a>00157 [request addRequestHeader:@"Content-Type" value:contentType];
<a name="l00158"></a>00158
<a name="l00159"></a>00159 <span class="comment">// add metadata to headers</span>
<a name="l00160"></a>00160 <span class="keywordflow">if</span> (metadata) {
<a name="l00161"></a>00161 <span class="keywordflow">for</span> (<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *key in [metadata keyEnumerator]) {
<a name="l00162"></a>00162 [request addRequestHeader:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"X-Object-Meta-%@", key] value:[metadata objectForKey:key]];
<a name="l00163"></a>00163 }
<a name="l00164"></a>00164 }
<a name="l00165"></a>00165
<a name="l00166"></a>00166 [request appendPostData:objectData];
<a name="l00167"></a>00167 <span class="keywordflow">return</span> request;
<a name="l00168"></a>00168 }
<a name="l00169"></a>00169
<a name="l00170"></a>00170 + (id)putObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath contentType:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)contentType file:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)filePath metadata:(NSDictionary *)metadata etag:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)etag
<a name="l00171"></a>00171 {
<a name="l00172"></a>00172 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"PUT" containerName:containerName objectPath:objectPath];
<a name="l00173"></a>00173 [request addRequestHeader:@"Content-Type" value:contentType];
<a name="l00174"></a>00174
<a name="l00175"></a>00175 <span class="comment">// add metadata to headers</span>
<a name="l00176"></a>00176 <span class="keywordflow">if</span> (metadata) {
<a name="l00177"></a>00177 <span class="keywordflow">for</span> (<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *key in [metadata keyEnumerator]) {
<a name="l00178"></a>00178 [request addRequestHeader:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"X-Object-Meta-%@", key] value:[metadata objectForKey:key]];
<a name="l00179"></a>00179 }
<a name="l00180"></a>00180 }
<a name="l00181"></a>00181
<a name="l00182"></a>00182 [request setShouldStreamPostDataFromDisk:YES];
<a name="l00183"></a>00183 [request setPostBodyFilePath:filePath];
<a name="l00184"></a>00184 <span class="keywordflow">return</span> request;
<a name="l00185"></a>00185 }
<a name="l00186"></a>00186
<a name="l00187"></a>00187 <span class="preprocessor">#pragma mark -</span>
<a name="l00188"></a>00188 <span class="preprocessor"></span><span class="preprocessor">#pragma mark POST - Set Object Metadata</span>
<a name="l00189"></a>00189 <span class="preprocessor"></span>
<a name="l00190"></a>00190 + (id)postObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName object:(ASICloudFilesObject *)object {
<a name="l00191"></a>00191 <span class="keywordflow">return</span> [<span class="keyword">self</span> postObjectRequestWithContainer:containerName objectPath:object.name metadata:object.metadata];
<a name="l00192"></a>00192 }
<a name="l00193"></a>00193
<a name="l00194"></a>00194 + (id)postObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath metadata:(NSDictionary *)metadata {
<a name="l00195"></a>00195 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"POST" containerName:containerName objectPath:objectPath];
<a name="l00196"></a>00196
<a name="l00197"></a>00197 <span class="comment">// add metadata to headers</span>
<a name="l00198"></a>00198 <span class="keywordflow">if</span> (metadata) {
<a name="l00199"></a>00199 <span class="keywordflow">for</span> (<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *key in [metadata keyEnumerator]) {
<a name="l00200"></a>00200 [request addRequestHeader:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"X-Object-Meta-%@", key] value:[metadata objectForKey:key]];
<a name="l00201"></a>00201 }
<a name="l00202"></a>00202 }
<a name="l00203"></a>00203
<a name="l00204"></a>00204 <span class="keywordflow">return</span> request;
<a name="l00205"></a>00205 }
<a name="l00206"></a>00206
<a name="l00207"></a>00207 <span class="preprocessor">#pragma mark -</span>
<a name="l00208"></a>00208 <span class="preprocessor"></span><span class="preprocessor">#pragma mark DELETE - Delete Object</span>
<a name="l00209"></a>00209 <span class="preprocessor"></span>
<a name="l00210"></a>00210 + (id)deleteObjectRequestWithContainer:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)containerName objectPath:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)objectPath {
<a name="l00211"></a>00211 ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"DELETE" containerName:containerName objectPath:objectPath];
<a name="l00212"></a>00212 <span class="keywordflow">return</span> request;
<a name="l00213"></a>00213 }
<a name="l00214"></a>00214
<a name="l00215"></a>00215 <span class="preprocessor">#pragma mark -</span>
<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="preprocessor">#pragma mark XML Parser Delegate</span>
<a name="l00217"></a>00217 <span class="preprocessor"></span>
<a name="l00218"></a>00218 - (void)parser:(NSXMLParser *)parser didStartElement:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)elementName namespaceURI:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)namespaceURI qualifiedName:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)qName attributes:(NSDictionary *)attributeDict {
<a name="l00219"></a>00219 [<span class="keyword">self</span> setCurrentElement:elementName];
<a name="l00220"></a>00220
<a name="l00221"></a>00221 <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"object"</span>]) {
<a name="l00222"></a>00222 [<span class="keyword">self</span> setCurrentObject:[ASICloudFilesObject object]];
<a name="l00223"></a>00223 }
<a name="l00224"></a>00224 [<span class="keyword">self</span> setCurrentContent:@""];
<a name="l00225"></a>00225 }
<a name="l00226"></a>00226
<a name="l00227"></a>00227 - (void)parser:(NSXMLParser *)parser didEndElement:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)elementName namespaceURI:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)namespaceURI qualifiedName:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)qName {
<a name="l00228"></a>00228 <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"name"</span>]) {
<a name="l00229"></a>00229 [<span class="keyword">self</span> currentObject].name = [<span class="keyword">self</span> currentContent];
<a name="l00230"></a>00230 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"hash"</span>]) {
<a name="l00231"></a>00231 [<span class="keyword">self</span> currentObject].hash = [<span class="keyword">self</span> currentContent];
<a name="l00232"></a>00232 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"bytes"</span>]) {
<a name="l00233"></a>00233 [<span class="keyword">self</span> currentObject].bytes = [[<span class="keyword">self</span> currentContent] intValue];
<a name="l00234"></a>00234 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"content_type"</span>]) {
<a name="l00235"></a>00235 [<span class="keyword">self</span> currentObject].contentType = [<span class="keyword">self</span> currentContent];
<a name="l00236"></a>00236 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"last_modified"</span>]) {
<a name="l00237"></a>00237 [<span class="keyword">self</span> currentObject].lastModified = [<span class="keyword">self</span> dateFromString:[<span class="keyword">self</span> currentContent]];
<a name="l00238"></a>00238 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ([elementName isEqualToString:<span class="stringliteral">@"object"</span>]) {
<a name="l00239"></a>00239 <span class="comment">// we're done with this object. time to move on to the next</span>
<a name="l00240"></a>00240 [objects addObject:currentObject];
<a name="l00241"></a>00241 [<span class="keyword">self</span> setCurrentObject:nil];
<a name="l00242"></a>00242 }
<a name="l00243"></a>00243 }
<a name="l00244"></a>00244
<a name="l00245"></a>00245 - (void)parser:(NSXMLParser *)parser foundCharacters:(<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *)string {
<a name="l00246"></a>00246 [<span class="keyword">self</span> setCurrentContent:[[<span class="keyword">self</span> currentContent] stringByAppendingString:string]];
<a name="l00247"></a>00247 }
<a name="l00248"></a>00248
<a name="l00249"></a>00249 <span class="preprocessor">#pragma mark -</span>
<a name="l00250"></a>00250 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Memory Management</span>
<a name="l00251"></a>00251 <span class="preprocessor"></span>
<a name="l00252"></a>00252 - (void)dealloc {
<a name="l00253"></a>00253 [currentElement release];
<a name="l00254"></a>00254 [currentContent release];
<a name="l00255"></a>00255 [currentObject release];
<a name="l00256"></a>00256 [accountName release];
<a name="l00257"></a>00257 [containerName release];
<a name="l00258"></a>00258 [<span class="keyword">super</span> dealloc];
<a name="l00259"></a>00259 }
<a name="l00260"></a>00260
<a name="l00261"></a>00261 <span class="keyword">@end</span>
</pre></div></div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ASICloudFilesObjectRequest.m</b> </li>
</div><!-- .fixedwidth -->
<span class="footer">Generated for Nimbus by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4-20110629 </span>
</ul>
</div>
</div> <!-- page -->
</body>
</html>