1+ // Copyright (c) Microsoft Corporation. All rights reserved.
2+ // This code is licensed by Microsoft Corporation under the terms
3+ // of the MICROSOFT REACTIVE EXTENSIONS FOR JAVASCRIPT AND .NET LIBRARIES License.
4+ // See http://go.microsoft.com/fwlink/?LinkId=186234.
5+
6+ // Copyright (c) Microsoft Corporation. All rights reserved.
7+ // This code is licensed by Microsoft Corporation under the terms
8+ // of the MICROSOFT REACTIVE EXTENSIONS FOR JAVASCRIPT AND .NET LIBRARIES License.
9+ // See http://go.microsoft.com/fwlink/?LinkId=186234.
10+
11+ ( function ( global , undefined ) {
12+ var root = global . Rx ,
13+ observable = root . Observable ,
14+ observableCreateWithDisposable = observable . createWithDisposable ,
15+ disposableCreate = root . Disposable . create ,
16+ CompositeDisposable = root . CompositeDisposable ,
17+ RefCountDisposable = root . RefCountDisposable ,
18+ AsyncSubject = root . AsyncSubject ,
19+
20+ fromMooToolsEvent = observable . fromMooToolsEvent = function ( mooToolsObject , eventType ) {
21+ return observable . Create ( function ( observer ) {
22+ var handler = function ( eventObject ) {
23+ observer . onNext ( eventObject ) ;
24+ } ;
25+ mooToolsObject . addEvent ( eventType , handler ) ;
26+ return function ( ) {
27+ mooToolsObject . removeEvent ( eventType , handler ) ;
28+ } ;
29+ } ) ;
30+ } ,
31+
32+ mooToolsToObservable = function ( type ) {
33+ return fromMooToolsEvent ( this , type ) ;
34+ } ;
35+
36+ Window . implement ( {
37+ addEventAsObservable : fromMooToolsEvent
38+ } ) ;
39+
40+ Document . implement ( {
41+ addEventAsObservable : fromMooToolsEvent
42+ } ) ;
43+
44+ Element . implement ( {
45+ addEventAsObservable : fromMooToolsEvent
46+ } ) ;
47+
48+ Elements . implement ( {
49+ addEventAsObservable : fromMooToolsEvent
50+ } ) ;
51+
52+ Events . implement ( {
53+ addEventAsObservable : fromMooToolsEvent
54+ } ) ;
55+
56+ var mooToolsRequest = observable . createMooToolsRequest = function ( options ) {
57+ var subject = new AsyncSubject ( ) , request , refCount ;
58+ options . onSuccess = function ( responseText , responseXML ) {
59+ subject . onNext ( { responseText : responseText , responseXML : responseXML } ) ;
60+ subject . onCompleted ( ) ;
61+ } ;
62+ options . onFailure = function ( xhr ) {
63+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
64+ } ;
65+ options . onException = function ( headerName , value ) {
66+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
67+ } ;
68+ try {
69+ request = new Request ( options ) ;
70+ request . send ( ) ;
71+ } catch ( e ) {
72+ subject . onError ( e ) ;
73+ }
74+ refCount = new RefCountDisposable ( disposableCreate ( function ( ) {
75+ if ( request ) {
76+ request . cancel ( ) ;
77+ }
78+ } ) ) ;
79+ return observableCreateWithDisposable ( function ( subscriber ) {
80+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
81+ } ) ;
82+ } ;
83+
84+ Request . implement ( {
85+ toObservable : function ( ) {
86+ var subject = new AsyncSubject ( ) , request = this , refCount ;
87+ request . addEvents ( {
88+ success : function ( responseText , responseXML ) {
89+ subject . onNext ( { responseXML : responseXML , responseText : responseText } ) ;
90+ subject . onCompleted ( ) ;
91+ } ,
92+ failure : function ( xhr ) {
93+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
94+ } ,
95+ exception : function ( headerName , value ) {
96+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
97+ }
98+ } ) ;
99+ try {
100+ request . send ( ) ;
101+ } catch ( e ) {
102+ subject . onError ( e ) ;
103+ }
104+ refCount = new RefCountDisposable ( disposableCreate ( function ( ) {
105+ request . cancel ( ) ;
106+ } ) ) ;
107+ return observableCreateWithDisposable ( function ( subscriber ) {
108+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
109+ } ) ;
110+ }
111+ } ) ;
112+
113+ observable . createMooToolsJSONRequest = function ( options ) {
114+ var subject = new AsyncSubject ( ) , request , refCount ;
115+ options . onSuccess = function ( responseJSON , responseText ) {
116+ subject . onNext ( { responseJSON : responseJSON , responseText : responseText } ) ;
117+ subject . onCompleted ( ) ;
118+ } ;
119+ options . onFailure = function ( xhr ) {
120+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
121+ } ;
122+ options . onException = function ( headerName , value ) {
123+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
124+ } ;
125+ try {
126+ request = new Request ( newOptions ) ;
127+ request . send ( ) ;
128+ } catch ( e ) {
129+ subject . onError ( e ) ;
130+ }
131+ refCount = new RefCountDisposable ( disposableCreate ( function ( ) {
132+ if ( request ) {
133+ request . cancel ( ) ;
134+ }
135+ } ) ) ;
136+ return observableCreateWithDisposable ( function ( subscriber ) {
137+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
138+ } ) ;
139+ } ;
140+
141+ Request . JSON . implement ( {
142+ toObservable : function ( ) {
143+ var subject = new root . AsyncSubject ( ) , request = this , refCount ;
144+ request . addEvents ( {
145+ success : function ( responseJSON , responseText ) {
146+ subject . onNext ( { responseJSON : responseJSON , responseText : responseText } ) ;
147+ subject . onCompleted ( ) ;
148+ } ,
149+ failure : function ( xhr ) {
150+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
151+ } ,
152+ exception : function ( headerName , value ) {
153+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
154+ }
155+ } ) ;
156+ try {
157+ request . send ( ) ;
158+ } catch ( e ) {
159+ subject . onError ( e ) ;
160+ }
161+ refCount = new RefCountDisposable ( disposableCreate ( function ( ) {
162+ request . cancel ( ) ;
163+ } ) ) ;
164+ return observableCreateWithDisposable ( function ( subscriber ) {
165+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
166+ } ) ;
167+ }
168+ } ) ;
169+
170+ observable . createMooToolsHTMLRequest = function ( options ) {
171+ var subject = new AsyncSubject ( ) , request , refCount ;
172+ options . onSuccess = function ( html ) {
173+ subject . onNext ( html ) ;
174+ subject . onCompleted ( ) ;
175+ } ;
176+ options . onFailure = function ( xhr ) {
177+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
178+ } ;
179+ options . onException = function ( headerName , value ) {
180+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
181+ } ;
182+ try {
183+ request = new Request . HTML ( newOptions ) ;
184+ request . send ( ) ;
185+ } catch ( e ) {
186+ subject . onError ( e ) ;
187+ }
188+ refCount = new RefCountDisposable ( root . Disposable . Create ( function ( ) {
189+ if ( request ) {
190+ request . cancel ( ) ;
191+ }
192+ } ) ) ;
193+
194+ return observableCreateWithDisposable ( function ( subscriber ) {
195+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
196+ } ) ;
197+ }
198+
199+ Request . HTML . implement ( {
200+ toObservable : function ( ) {
201+ var subject = new AsyncSubject ( ) , request = this , refCount ;
202+ request . addEvents ( {
203+ success : function ( html ) {
204+ subject . onNext ( html ) ;
205+ subject . onCompleted ( ) ;
206+ } ,
207+ failure : function ( xhr ) {
208+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
209+ } ,
210+ exception : function ( headerName , value ) {
211+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
212+ }
213+ } ) ;
214+ try {
215+ request . send ( ) ;
216+ } catch ( e ) {
217+ subject . onError ( e ) ;
218+ }
219+ refCount = new RefCountDisposable ( disposableCreate ( function ( ) {
220+ request . cancel ( ) ;
221+ } ) ) ;
222+ return observableCreateWithDisposable ( function ( subscriber ) {
223+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
224+ } ) ;
225+ }
226+ } ) ;
227+
228+ observable . createMooToolsJSONPRequest = function ( options ) {
229+ var subject = new AsyncSubject ( ) , request , refCount ;
230+ options . onSuccess = function ( html ) {
231+ subject . onNext ( html ) ;
232+ subject . onCompleted ( ) ;
233+ } ;
234+ options . onFailure = function ( xhr ) {
235+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
236+ } ;
237+ options . onException = function ( headerName , value ) {
238+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
239+ } ;
240+ try {
241+ request = new Request . JSONP ( options ) ;
242+ request . send ( ) ;
243+ } catch ( e ) {
244+ subject . onError ( e ) ;
245+ }
246+ refCount = new RefCountDisposable ( disposableCreate ( function ( ) {
247+ if ( request ) {
248+ request . cancel ( ) ;
249+ }
250+ } ) ) ;
251+ return observableCreateWithDisposable ( function ( subscriber ) {
252+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
253+ } ) ;
254+ } ;
255+
256+ Request . JSONP . implement ( {
257+ toObservable : function ( ) {
258+ var subject = new AsyncSubject ( ) , request = this , refCount ;
259+ request . addEvents ( {
260+ success : function ( data ) {
261+ subject . onNext ( data ) ;
262+ subject . onCompleted ( ) ;
263+ } ,
264+ failure : function ( xhr ) {
265+ subject . onError ( { kind : 'failure' , xhr : xhr } ) ;
266+ } ,
267+ exception : function ( headerName , value ) {
268+ subject . onError ( { kind : 'exception' , headerName : headerName , value : value } ) ;
269+ }
270+ } ) ;
271+ try {
272+ request . send ( ) ;
273+ } catch ( e ) {
274+ subject . onError ( e ) ;
275+ }
276+ refCount = new RefCountDisposable ( disposablecCreate ( function ( ) {
277+ request . cancel ( ) ;
278+ } ) ) ;
279+ return observableCreateWithDisposable ( function ( subscriber ) {
280+ return new CompositeDisposable ( subject . subscribe ( subscriber ) , refCount . getDisposable ( ) ) ;
281+ } ) ;
282+ }
283+ } ) ;
284+ } ) ( this ) ;
0 commit comments