14
|
1 /**
|
|
2 * Copyright: Copyright (c) 2009 Jacob Carlborg.
|
|
3 * Authors: Jacob Carlborg
|
|
4 * Version: Initial created: Aug 3, 2009
|
|
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
|
|
6 */
|
|
7 module dstep.foundation.NSURL;
|
|
8
|
|
9 import dstep.foundation.NSData;
|
|
10 import dstep.foundation.NSDictionary;
|
|
11 import dstep.foundation.NSNumber;
|
|
12 import dstep.foundation.NSObject;
|
|
13 import dstep.foundation.NSString;
|
|
14 import dstep.foundation.NSURLHandle;
|
|
15 import dstep.objc.bridge.Bridge;
|
|
16 import dstep.objc.objc : id;
|
|
17
|
|
18 import bindings = dstep.foundation.NSURL_bindings;
|
|
19
|
|
20 NSString NSURLFileScheme;
|
|
21
|
|
22 static this ()
|
|
23 {
|
|
24 NSURLFileScheme = new NSString(bindings.NSURLFileScheme);
|
|
25 }
|
|
26
|
|
27 class NSURL : NSObject, INSCoding, INSCopying, INSURLHandleClient
|
|
28 {
|
|
29 mixin ObjcWrap;
|
|
30 mixin TNSURLLoading;
|
|
31
|
|
32 Object initWithScheme (NSString scheme, NSString host, NSString path)
|
|
33 {
|
|
34 return invokeObjcSelf!(Object, "initWithScheme:host:path:", NSString, NSString, NSString)(scheme, host, path);
|
|
35 }
|
|
36
|
|
37 this (NSString scheme, NSString host, NSString path)
|
|
38 {
|
|
39 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
|
|
40 id result = Bridge.invokeObjcMethod!(id, "initWithScheme:host:path:", NSString, NSString, NSString)(objcObject, scheme, host, path);
|
|
41
|
|
42 if (result)
|
|
43 objcObject = ret;
|
|
44
|
|
45 dObject = this;
|
|
46 }
|
|
47
|
|
48 Object initFileURLWithPath (NSString path, bool isDir)
|
|
49 {
|
|
50 return invokeObjcSelf!(Object, "initFileURLWithPath:isDirectory:", NSString, bool)(path, isDir);
|
|
51 }
|
|
52
|
|
53 this (NSString path, bool isDir)
|
|
54 {
|
|
55 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
|
|
56 id result = Bridge.invokeObjcMethod!(id, "initFileURLWithPath:isDirectory:", NSString, bool)(objcObject, path, isDir);
|
|
57
|
|
58 if (result)
|
|
59 objcObject = ret;
|
|
60
|
|
61 dObject = this;
|
|
62 }
|
|
63
|
|
64 Object initFileURLWithPath (NSString path)
|
|
65 {
|
|
66 return invokeObjcSelf!(Object, "initFileURLWithPath:", NSString)(path);
|
|
67 }
|
|
68
|
|
69 this (NSString path)
|
|
70 {
|
|
71 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
|
|
72 id result = Bridge.invokeObjcMethod!(id, "initFileURLWithPath:", NSString)(objcObject, path);
|
|
73
|
|
74 if (result)
|
|
75 objcObject = ret;
|
|
76
|
|
77 dObject = this;
|
|
78 }
|
|
79
|
|
80 static Object fileURLWithPath (NSString path, bool isDir)
|
|
81 {
|
|
82 return invokeObjcSelfClass!(Object, "fileURLWithPath:isDirectory:", NSString, bool)(path, isDir);
|
|
83 }
|
|
84
|
|
85 static Object fileURLWithPath (NSString path)
|
|
86 {
|
|
87 return invokeObjcSelfClass!(Object, "fileURLWithPath:", NSString)(path);
|
|
88 }
|
|
89
|
|
90 Object initWithString (NSString URLString)
|
|
91 {
|
|
92 return invokeObjcSelf!(Object, "initWithString:", NSString)(URLString);
|
|
93 }
|
|
94
|
|
95 this (NSString URLString)
|
|
96 {
|
|
97 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
|
|
98 id result = Bridge.invokeObjcMethod!(id, "initWithString:", NSString)(objcObject, URLString);
|
|
99
|
|
100 if (result)
|
|
101 objcObject = ret;
|
|
102
|
|
103 dObject = this;
|
|
104 }
|
|
105
|
|
106 Object initWithString (NSString URLString, NSURL baseURL)
|
|
107 {
|
|
108 return invokeObjcSelf!(Object, "initWithString:relativeToURL:", NSString, NSURL)(URLString, baseURL);
|
|
109 }
|
|
110
|
|
111 this (NSString URLString, NSURL baseURL)
|
|
112 {
|
|
113 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
|
|
114 id result = Bridge.invokeObjcMethod!(id, "initWithString:relativeToURL:", NSString, NSURL)(objcObject, URLString, baseURL);
|
|
115
|
|
116 if (result)
|
|
117 objcObject = ret;
|
|
118
|
|
119 dObject = this;
|
|
120 }
|
|
121
|
|
122 static Object URLWithString (NSString URLString)
|
|
123 {
|
|
124 return invokeObjcSelfClass!(Object, "URLWithString:", NSString)(URLString);
|
|
125 }
|
|
126
|
|
127 static Object URLWithString (NSString URLString, NSURL baseURL)
|
|
128 {
|
|
129 return invokeObjcSelfClass!(Object, "URLWithString:relativeToURL:", NSString, NSURL)(URLString, baseURL);
|
|
130 }
|
|
131
|
|
132 NSString absoluteString ()
|
|
133 {
|
|
134 return invokeObjcSelf!(NSString, "absoluteString");
|
|
135 }
|
|
136
|
|
137 NSString relativeString ()
|
|
138 {
|
|
139 return invokeObjcSelf!(NSString, "relativeString");
|
|
140 }
|
|
141
|
|
142 NSURL baseURL ()
|
|
143 {
|
|
144 id result = invokeObjcSelf!(id, "baseURL"return result is this.objcObject ? this : (result !is null ? new NSURL(result) : null); }
|
|
145
|
|
146 NSURL absoluteURL ()
|
|
147 {
|
|
148 id result = invokeObjcSelf!(id, "absoluteURL"return result is this.objcObject ? this : (result !is null ? new NSURL(result) : null); }
|
|
149
|
|
150 NSString scheme ()
|
|
151 {
|
|
152 return invokeObjcSelf!(NSString, "scheme");
|
|
153 }
|
|
154
|
|
155 NSString resourceSpecifier ()
|
|
156 {
|
|
157 return invokeObjcSelf!(NSString, "resourceSpecifier");
|
|
158 }
|
|
159
|
|
160 NSString host ()
|
|
161 {
|
|
162 return invokeObjcSelf!(NSString, "host");
|
|
163 }
|
|
164
|
|
165 NSNumber port ()
|
|
166 {
|
|
167 return invokeObjcSelf!(NSNumber, "port");
|
|
168 }
|
|
169
|
|
170 NSString user ()
|
|
171 {
|
|
172 return invokeObjcSelf!(NSString, "user");
|
|
173 }
|
|
174
|
|
175 NSString password ()
|
|
176 {
|
|
177 return invokeObjcSelf!(NSString, "password");
|
|
178 }
|
|
179
|
|
180 NSString path ()
|
|
181 {
|
|
182 return invokeObjcSelf!(NSString, "path");
|
|
183 }
|
|
184
|
|
185 NSString fragment ()
|
|
186 {
|
|
187 return invokeObjcSelf!(NSString, "fragment");
|
|
188 }
|
|
189
|
|
190 NSString parameterString ()
|
|
191 {
|
|
192 return invokeObjcSelf!(NSString, "parameterString");
|
|
193 }
|
|
194
|
|
195 NSString query ()
|
|
196 {
|
|
197 return invokeObjcSelf!(NSString, "query");
|
|
198 }
|
|
199
|
|
200 NSString relativePath ()
|
|
201 {
|
|
202 return invokeObjcSelf!(NSString, "relativePath");
|
|
203 }
|
|
204
|
|
205 bool isFileURL ()
|
|
206 {
|
|
207 return invokeObjcSelf!(bool, "isFileURL");
|
|
208 }
|
|
209
|
|
210 NSURL standardizedURL ()
|
|
211 {
|
|
212 id result = invokeObjcSelf!(id, "standardizedURL"return result is this.objcObject ? this : (result !is null ? new NSURL(result) : null); }
|
|
213
|
|
214 void encodeWithCoder (NSCoder aCoder)
|
|
215 {
|
|
216 return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
|
|
217 }
|
|
218
|
|
219 Object initWithCoder (NSCoder aDecoder)
|
|
220 {
|
|
221 return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
|
|
222 }
|
|
223
|
|
224 this (NSCoder aDecoder)
|
|
225 {
|
|
226 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
|
|
227 id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder);
|
|
228
|
|
229 if (result)
|
|
230 objcObject = ret;
|
|
231
|
|
232 dObject = this;
|
|
233 }
|
|
234
|
|
235 Object copyWithZone (NSZone* zone)
|
|
236 {
|
|
237 return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
|
|
238 }
|
|
239
|
|
240 void URLHandle (NSURLHandle sender, NSData newBytes)
|
|
241 {
|
|
242 return invokeObjcSelf!(void, "URLHandle:resourceDataDidBecomeAvailable:", NSURLHandle, NSData)(sender, newBytes);
|
|
243 }
|
|
244
|
|
245 void URLHandleResourceDidBeginLoading (NSURLHandle sender)
|
|
246 {
|
|
247 return invokeObjcSelf!(void, "URLHandleResourceDidBeginLoading:", NSURLHandle)(sender);
|
|
248 }
|
|
249
|
|
250 void URLHandleResourceDidFinishLoading (NSURLHandle sender)
|
|
251 {
|
|
252 return invokeObjcSelf!(void, "URLHandleResourceDidFinishLoading:", NSURLHandle)(sender);
|
|
253 }
|
|
254
|
|
255 void URLHandleResourceDidCancelLoading (NSURLHandle sender)
|
|
256 {
|
|
257 return invokeObjcSelf!(void, "URLHandleResourceDidCancelLoading:", NSURLHandle)(sender);
|
|
258 }
|
|
259
|
|
260 void URLHandle (NSURLHandle sender, NSString reason)
|
|
261 {
|
|
262 return invokeObjcSelf!(void, "URLHandle:resourceDidFailLoadingWithReason:", NSURLHandle, NSString)(sender, reason);
|
|
263 }
|
|
264 }
|
|
265
|
|
266 template TNSURLLoading ()
|
|
267 {
|
|
268 NSData resourceDataUsingCache (bool shouldUseCache)
|
|
269 {
|
|
270 return invokeObjcSelf!(NSData, "resourceDataUsingCache:", bool)(shouldUseCache);
|
|
271 }
|
|
272
|
|
273 void loadResourceDataNotifyingClient (Object client, bool shouldUseCache)
|
|
274 {
|
|
275 return invokeObjcSelf!(void, "loadResourceDataNotifyingClient:usingCache:", Object, bool)(client, shouldUseCache);
|
|
276 }
|
|
277
|
|
278 Object propertyForKey (NSString propertyKey)
|
|
279 {
|
|
280 return invokeObjcSelf!(Object, "propertyForKey:", NSString)(propertyKey);
|
|
281 }
|
|
282
|
|
283 bool setResourceData (NSData data)
|
|
284 {
|
|
285 return invokeObjcSelf!(bool, "setResourceData:", NSData)(data);
|
|
286 }
|
|
287
|
|
288 bool setProperty (Object property, NSString propertyKey)
|
|
289 {
|
|
290 return invokeObjcSelf!(bool, "setProperty:forKey:", Object, NSString)(property, propertyKey);
|
|
291 }
|
|
292
|
|
293 NSURLHandle URLHandleUsingCache (bool shouldUseCache)
|
|
294 {
|
|
295 return invokeObjcSelf!(NSURLHandle, "URLHandleUsingCache:", bool)(shouldUseCache);
|
|
296 }
|
|
297 }
|
|
298
|
|
299 template TNSURLClient ()
|
|
300 {
|
|
301 void URL (NSURL sender, NSData newBytes);
|
|
302 void URLResourceDidFinishLoading (NSURL sender);
|
|
303 void URLResourceDidCancelLoading (NSURL sender);
|
|
304 void URL (NSURL sender, NSString reason);
|
|
305 }
|
|
306
|
|
307 template TNSURLUtilities ()
|
|
308 {
|
|
309 NSString stringByAddingPercentEscapesUsingEncoding (uint enc)
|
|
310 {
|
|
311 return invokeObjcSelf!(NSString, "stringByAddingPercentEscapesUsingEncoding:", uint)(enc);
|
|
312 }
|
|
313
|
|
314 NSString stringByReplacingPercentEscapesUsingEncoding (uint enc)
|
|
315 {
|
|
316 return invokeObjcSelf!(NSString, "stringByReplacingPercentEscapesUsingEncoding:", uint)(enc);
|
|
317 }
|
|
318 }
|
|
319
|