Guest User

Untitled

a guest
May 27th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.09 KB | None | 0 0
  1. (function()
  2. {
  3. var root;
  4. if (typeof ProvideCustomRxRootObject == "undefined")
  5. {
  6. root = this.Rx;
  7. }
  8. else
  9. {
  10. root = ProvideCustomRxRootObject();
  11. }
  12. var observable = root.Observable;
  13.  
  14. var fromMooToolsEvent = observable.FromMooToolsEvent = function(mooToolsObject, eventType) {
  15. return observable.Create(function(observer) {
  16. var handler = function(eventObject) {
  17. observer.OnNext(eventObject);
  18. };
  19.  
  20. mooToolsObject.addEvent(eventType, handler);
  21.  
  22. return function() {
  23. mooToolsObject.removeEvent(eventType, handler);
  24. };
  25. });
  26. };
  27.  
  28. var _mooToolsToObservable = function(type) {
  29. return fromMooToolsEvent(this, type);
  30. }
  31.  
  32. Window.implement({
  33. addEventAsObservable : _mooToolsToObservable
  34. });
  35.  
  36. Document.implement({
  37. addEventAsObservable : _mooToolsToObservable
  38. });
  39.  
  40. Element.implement({
  41. addEventAsObservable : _mooToolsToObservable
  42. });
  43.  
  44. Elements.implement({
  45. addEventAsObservable : _mooToolsToObservable
  46. });
  47.  
  48. Events.implement({
  49. addEventAsObservable : _mooToolsToObservable
  50. });
  51.  
  52. var mooToolsRequest = observable.MooToolsRequest = function(options) {
  53.  
  54. var subject = new root.AsyncSubject();
  55. var request = null;
  56.  
  57. try {
  58. newOptions.onSuccess = function(responseText, responseXML) {
  59. subject.OnNext({ responseText: responseText, responseXML: responseXML });
  60. subject.OnCompleted();
  61. };
  62.  
  63. newOptions.onFailure = function(xhr) {
  64. subject.OnError({ kind: "failure", xhr: xhr });
  65. };
  66.  
  67. newOptions.onException = function(headerName, value) {
  68. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  69. };
  70.  
  71. request = new Request(newOptions);
  72. request.send();
  73. }
  74. catch(err) {
  75. subject.OnError(err);
  76. }
  77.  
  78. var refCount = new root.RefCountDisposable(root.Disposable.Create(function() {
  79. if(request) {
  80. request.cancel();
  81. }
  82. }));
  83.  
  84. return observable.CreateWithDisposable(function(subscriber) {
  85. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  86. });
  87. };
  88.  
  89. Request.implement({
  90.  
  91. toObservable: function () {
  92. var subject = new root.AsyncSubject();
  93. var request = this;
  94. try {
  95.  
  96. request.addEvents({
  97.  
  98. success: function(responseText, responseXML) {
  99. subject.OnNext({ responseXML: responseXML, responseText: responseText });
  100. subject.OnCompleted();
  101. },
  102.  
  103. failure: function(xhr) {
  104. subject.OnError({ kind: "failure", xhr: xhr });
  105. },
  106.  
  107. exception: function(headerName, value) {
  108. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  109. }
  110.  
  111. });
  112.  
  113. request.send();
  114. }
  115. catch (err) {
  116. subject.OnError(err);
  117. }
  118.  
  119. var refCount = new root.RefCountDisposable(root.Disposable.Create(function () {
  120. request.cancel();
  121. }));
  122.  
  123. return observable.CreateWithDisposable(function (subscriber) {
  124. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  125. });
  126. }
  127. });
  128.  
  129. observable.MooToolsJSONRequest = function(options)
  130. {
  131. var subject = new root.AsyncSubject();
  132. var request = null;
  133.  
  134. try {
  135. newOptions.onSuccess = function(responseJSON, responseText) {
  136. subject.OnNext({ responseJSON: responseJSON, responseText: responseText });
  137. subject.OnCompleted();
  138. };
  139.  
  140. newOptions.onFailure = function(xhr) {
  141. subject.OnError({ kind: "failure", xhr: xhr });
  142. };
  143.  
  144. newOptions.onException = function(headerName, value) {
  145. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  146. };
  147.  
  148. request = new Request(newOptions);
  149. request.send();
  150. }
  151. catch(err) {
  152. subject.OnError(err);
  153. }
  154.  
  155. var refCount = new root.RefCountDisposable(root.Disposable.Create(function() {
  156. if(request) {
  157. request.cancel();
  158. }
  159. }));
  160.  
  161. return observable.CreateWithDisposable(function(subscriber) {
  162. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  163. });
  164. }
  165.  
  166. Request.JSON.implement({
  167.  
  168. toObservable: function () {
  169. var subject = new root.AsyncSubject();
  170. var request = this;
  171. try {
  172.  
  173. request.addEvents({
  174.  
  175. success: function(responseJSON, responseText) {
  176. subject.OnNext({ responseJSON: responseJSON, responseText: responseText });
  177. subject.OnCompleted();
  178. },
  179.  
  180. failure: function(xhr) {
  181. subject.OnError({ kind: "failure", xhr: xhr });
  182. },
  183.  
  184. exception: function(headerName, value) {
  185. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  186. }
  187.  
  188. });
  189.  
  190. request.send();
  191. }
  192. catch (err) {
  193. subject.OnError(err);
  194. }
  195.  
  196. var refCount = new root.RefCountDisposable(root.Disposable.Create(function () {
  197. request.cancel();
  198. }));
  199.  
  200. return observable.CreateWithDisposable(function (subscriber) {
  201. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  202. });
  203. }
  204. });
  205.  
  206. observable.MooToolsHTMLRequest = function(options) {
  207.  
  208. var newOptions = {};
  209. for (var k in options) {
  210. newOptions[k] = options[k];
  211. }
  212.  
  213. var subject = new root.AsyncSubject();
  214. var request = null;
  215.  
  216. try {
  217. newOptions.onSuccess = function(html) {
  218. subject.OnNext(html);
  219. subject.OnCompleted();
  220. };
  221.  
  222. newOptions.onFailure = function(xhr) {
  223. subject.OnError({ kind: "failure", xhr: xhr });
  224. };
  225.  
  226. newOptions.onException = function(headerName, value) {
  227. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  228. };
  229.  
  230. request = new Request.HTML(newOptions);
  231. request.send();
  232. }
  233. catch(err) {
  234. subject.OnError(err);
  235. }
  236.  
  237. var refCount = new root.RefCountDisposable(root.Disposable.Create(function() {
  238. if(request) {
  239. request.cancel();
  240. }
  241. }));
  242.  
  243. return observable.CreateWithDisposable(function(subscriber) {
  244. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  245. });
  246. }
  247.  
  248. Request.HTML.implement({
  249.  
  250. toObservable: function () {
  251. var subject = new root.AsyncSubject();
  252. var request = this;
  253. try {
  254.  
  255. request.addEvents({
  256.  
  257. success: function(html) {
  258. subject.OnNext(html);
  259. subject.OnCompleted();
  260. },
  261.  
  262. failure: function(xhr) {
  263. subject.OnError({ kind: "failure", xhr: xhr });
  264. },
  265.  
  266. exception: function(headerName, value) {
  267. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  268. }
  269.  
  270. });
  271.  
  272. request.send();
  273. }
  274. catch (err) {
  275. subject.OnError(err);
  276. }
  277.  
  278. var refCount = new root.RefCountDisposable(root.Disposable.Create(function () {
  279. request.cancel();
  280. }));
  281.  
  282. return observable.CreateWithDisposable(function (subscriber) {
  283. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  284. });
  285. }
  286. });
  287.  
  288. observable.MooToolsJSONPRequest = function(options) {
  289.  
  290. var subject = new root.AsyncSubject();
  291. var request = null;
  292.  
  293. try {
  294. options.onSuccess = function(html) {
  295. subject.OnNext(html);
  296. subject.OnCompleted();
  297. };
  298.  
  299. options.onFailure = function(xhr) {
  300. subject.OnError({ kind: "failure", xhr: xhr });
  301. };
  302.  
  303. options.onException = function(headerName, value) {
  304. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  305. };
  306.  
  307. request = new Request.JSONP(options);
  308. request.send();
  309. }
  310. catch(err) {
  311. subject.OnError(err);
  312. }
  313.  
  314. var refCount = new root.RefCountDisposable(root.Disposable.Create(function() {
  315. if(request) {
  316. request.cancel();
  317. }
  318. }));
  319.  
  320. return observable.CreateWithDisposable(function(subscriber) {
  321. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  322. });
  323. }
  324.  
  325. Request.JSONP.implement({
  326.  
  327. toObservable: function () {
  328. var subject = new root.AsyncSubject();
  329. var request = this;
  330. try {
  331.  
  332. request.addEvents({
  333.  
  334. success: function(data) {
  335. subject.OnNext(data);
  336. subject.OnCompleted();
  337. },
  338.  
  339. failure: function(xhr) {
  340. subject.OnError({ kind: "failure", xhr: xhr });
  341. },
  342.  
  343. exception: function(headerName, value) {
  344. subject.OnError({ kind: "exception", headerName: headerName, value: value });
  345. }
  346.  
  347. });
  348.  
  349. request.send();
  350. }
  351. catch (err) {
  352. subject.OnError(err);
  353. }
  354.  
  355. var refCount = new root.RefCountDisposable(root.Disposable.Create(function () {
  356. request.cancel();
  357. }));
  358.  
  359. return observable.CreateWithDisposable(function (subscriber) {
  360. return new root.CompositeDisposable(subject.Subscribe(subscriber), refCount.GetDisposable());
  361. });
  362. }
  363. });
  364.  
  365. })();
Add Comment
Please, Sign In to add comment