Skip to content

Commit 0c05a9f

Browse files
committed
MOBILE-3339 ionic: Remove usage of angular/http deprecated package
1 parent a4f39f0 commit 0c05a9f

File tree

7 files changed

+82
-88
lines changed

7 files changed

+82
-88
lines changed

src/addon/mod/book/providers/book.ts

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// limitations under the License.
1414

1515
import { Injectable } from '@angular/core';
16-
import { Http, Response } from '@angular/http';
1716
import { CoreFileProvider } from '@providers/file';
1817
import { CoreFilepoolProvider } from '@providers/filepool';
1918
import { CoreLoggerProvider } from '@providers/logger';
@@ -25,7 +24,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
2524
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
2625
import { CoreSite } from '@classes/site';
2726
import { CoreTagItem } from '@core/tag/providers/tag';
28-
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
27+
import { CoreWSProvider, CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
2928

3029
/**
3130
* Service that provides some features for books.
@@ -37,10 +36,16 @@ export class AddonModBookProvider {
3736
protected ROOT_CACHE_KEY = 'mmaModBook:';
3837
protected logger;
3938

40-
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider,
41-
private fileProvider: CoreFileProvider, private filepoolProvider: CoreFilepoolProvider, private http: Http,
42-
private utils: CoreUtilsProvider, private courseProvider: CoreCourseProvider, private domUtils: CoreDomUtilsProvider,
43-
private logHelper: CoreCourseLogHelperProvider) {
39+
constructor(logger: CoreLoggerProvider,
40+
protected sitesProvider: CoreSitesProvider,
41+
protected textUtils: CoreTextUtilsProvider,
42+
protected fileProvider: CoreFileProvider,
43+
protected filepoolProvider: CoreFilepoolProvider,
44+
protected wsProvider: CoreWSProvider,
45+
protected utils: CoreUtilsProvider,
46+
protected courseProvider: CoreCourseProvider,
47+
protected domUtils: CoreDomUtilsProvider,
48+
protected logHelper: CoreCourseLogHelperProvider) {
4449
this.logger = logger.getInstance('AddonModBookProvider');
4550
}
4651

@@ -128,19 +133,11 @@ export class AddonModBookProvider {
128133
return this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
129134
}
130135

131-
return promise.then((url) => {
132-
// Fetch the URL content.
133-
const promise = this.http.get(url).toPromise();
134-
135-
return promise.then((response: Response): any => {
136-
const content = response.text();
137-
if (typeof content !== 'string') {
138-
return Promise.reject(null);
139-
} else {
140-
// Now that we have the content, we update the SRC to point back to the external resource.
141-
return this.domUtils.restoreSourcesInHtml(content, contentsMap[chapterId].paths);
142-
}
143-
});
136+
return promise.then(async (url) => {
137+
const content = await this.wsProvider.getText(url);
138+
139+
// Now that we have the content, we update the SRC to point back to the external resource.
140+
return this.domUtils.restoreSourcesInHtml(content, contentsMap[chapterId].paths);
144141
});
145142
}
146143

src/addon/mod/page/providers/helper.ts

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { CoreFilepoolProvider } from '@providers/filepool';
2020
import { AddonModPageProvider } from './page';
2121
import { CoreFileProvider } from '@providers/file';
2222
import { CoreSitesProvider } from '@providers/sites';
23-
import { Http, Response } from '@angular/http';
23+
import { CoreWSProvider } from '@providers/ws';
2424

2525
/**
2626
* Service that provides some features for page.
@@ -30,9 +30,13 @@ export class AddonModPageHelperProvider {
3030

3131
protected logger;
3232

33-
constructor(logger: CoreLoggerProvider, private domUtils: CoreDomUtilsProvider, private filepoolProvider: CoreFilepoolProvider,
34-
private fileProvider: CoreFileProvider, private textUtils: CoreTextUtilsProvider, private http: Http,
35-
private sitesProvider: CoreSitesProvider) {
33+
constructor(logger: CoreLoggerProvider,
34+
protected domUtils: CoreDomUtilsProvider,
35+
protected filepoolProvider: CoreFilepoolProvider,
36+
protected fileProvider: CoreFileProvider,
37+
protected textUtils: CoreTextUtilsProvider,
38+
protected wsProvider: CoreWSProvider,
39+
protected sitesProvider: CoreSitesProvider) {
3640
this.logger = logger.getInstance('AddonModPageHelperProvider');
3741
}
3842

@@ -79,21 +83,12 @@ export class AddonModPageHelperProvider {
7983
promise = this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
8084
}
8185

82-
return promise.then((url) => {
86+
return promise.then(async (url) => {
87+
const content = await this.wsProvider.getText(url);
8388

84-
// Fetch the URL content.
85-
const promise = this.http.get(url).toPromise();
86-
87-
return promise.then((response: Response): any => {
88-
const content = response.text();
89-
if (typeof content !== 'string') {
90-
return Promise.reject(null);
91-
}
92-
93-
// Now that we have the content, we update the SRC to point back to the external resource.
94-
// That will be caught by core-format-text.
95-
return this.domUtils.restoreSourcesInHtml(content, paths);
96-
});
89+
// Now that we have the content, we update the SRC to point back to the external resource.
90+
// That will be caught by core-format-text.
91+
return this.domUtils.restoreSourcesInHtml(content, paths);
9792
});
9893
}
9994

src/addon/remotethemes/providers/remotethemes.ts

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
import { Injectable } from '@angular/core';
16-
import { Http } from '@angular/http';
16+
import { CoreWSProvider } from '@providers/ws';
1717
import { CoreAppProvider } from '@providers/app';
1818
import { CoreFileProvider } from '@providers/file';
1919
import { CoreFilepoolProvider } from '@providers/filepool';
@@ -34,9 +34,13 @@ export class AddonRemoteThemesProvider {
3434
protected logger;
3535
protected stylesEls: {[siteId: string]: {element: HTMLStyleElement, hash: string}} = {};
3636

37-
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private fileProvider: CoreFileProvider,
38-
private filepoolProvider: CoreFilepoolProvider, private http: Http, private utils: CoreUtilsProvider,
39-
private appProvider: CoreAppProvider) {
37+
constructor(logger: CoreLoggerProvider,
38+
protected sitesProvider: CoreSitesProvider,
39+
protected fileProvider: CoreFileProvider,
40+
protected filepoolProvider: CoreFilepoolProvider,
41+
protected wsProvider: CoreWSProvider,
42+
protected utils: CoreUtilsProvider,
43+
protected appProvider: CoreAppProvider) {
4044
this.logger = logger.getInstance('AddonRemoteThemesProvider');
4145
}
4246

@@ -174,18 +178,13 @@ export class AddonRemoteThemesProvider {
174178
return;
175179
}
176180

177-
return promise.then((url) => {
181+
return promise.then(async (url) => {
178182
this.logger.debug('Loading styles from: ', url);
179183

180184
// Get the CSS content using HTTP because we will treat the styles before saving them in the file.
181-
return this.http.get(url).toPromise();
182-
}).then((response): any => {
183-
const text = response && response.text();
184-
if (typeof text == 'string') {
185-
return {fileUrl: fileUrl, styles: this.get35Styles(text)};
186-
} else {
187-
return Promise.reject(null);
188-
}
185+
const text = await this.wsProvider.getText(url);
186+
187+
return {fileUrl: fileUrl, styles: this.get35Styles(text)};
189188
});
190189
});
191190
}
@@ -263,23 +262,18 @@ export class AddonRemoteThemesProvider {
263262
return Promise.resolve();
264263
}
265264

266-
return this.http.get(url).toPromise().then((response) => {
267-
let text = response && response.text();
268-
if (typeof text == 'string') {
269-
text = this.get35Styles(text);
265+
return this.wsProvider.getText(url).then((text) => {
266+
text = this.get35Styles(text);
270267

271-
const styleEl = document.createElement('style');
272-
styleEl.setAttribute('id', 'mobilecssurl-tmpsite');
273-
styleEl.innerHTML = text;
268+
const styleEl = document.createElement('style');
269+
styleEl.setAttribute('id', 'mobilecssurl-tmpsite');
270+
styleEl.innerHTML = text;
274271

275-
document.head.appendChild(styleEl);
276-
this.stylesEls.tmpsite = {
277-
element: styleEl,
278-
hash: ''
279-
};
280-
} else {
281-
return Promise.reject(null);
282-
}
272+
document.head.appendChild(styleEl);
273+
this.stylesEls.tmpsite = {
274+
element: styleEl,
275+
hash: ''
276+
};
283277
});
284278
}
285279

src/app/app.module.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
1717
import { NgModule, COMPILER_OPTIONS } from '@angular/core';
1818
import { IonicApp, IonicModule, Platform, Content, ScrollEvent, Config, Refresher } from 'ionic-angular';
1919
import { assert } from 'ionic-angular/util/util';
20-
import { HttpModule } from '@angular/http';
2120
import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
2221
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
2322
import { LocationStrategy } from '@angular/common';
@@ -202,7 +201,6 @@ export const WP_PROVIDER: any = null;
202201
BrowserModule,
203202
BrowserAnimationsModule,
204203
HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
205-
HttpModule,
206204
IonicModule.forRoot(MoodleMobileApp, {
207205
pageTransition: 'core-page-transition'
208206
}),

src/core/compile/providers/compile.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import { CoreSitePluginsProvider } from '@core/siteplugins/providers/siteplugins
4646
// Import other libraries and providers.
4747
import { DomSanitizer } from '@angular/platform-browser';
4848
import { FormBuilder, Validators } from '@angular/forms';
49-
import { Http } from '@angular/http';
5049
import { HttpClient } from '@angular/common/http';
5150
import { CoreConfigConstants } from '../../../configconstants';
5251
import { CoreConstants } from '@core/constants';
@@ -136,7 +135,7 @@ export class CoreCompileProvider {
136135

137136
// Other Ionic/Angular providers that don't depend on where they are injected.
138137
protected OTHER_PROVIDERS = [
139-
TranslateService, Http, HttpClient, Platform, DomSanitizer, ActionSheetController, AlertController, LoadingController,
138+
TranslateService, HttpClient, Platform, DomSanitizer, ActionSheetController, AlertController, LoadingController,
140139
ModalController, PopoverController, ToastController, FormBuilder
141140
];
142141

src/core/siteplugins/providers/helper.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// limitations under the License.
1414

1515
import { Injectable } from '@angular/core';
16-
import { Http } from '@angular/http';
1716
import { TranslateService } from '@ngx-translate/core';
1817
import { CoreAppProvider } from '@providers/app';
1918
import { CoreEventsProvider } from '@providers/events';
@@ -33,6 +32,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
3332
import { CoreCoursesProvider } from '@core/courses/providers/courses';
3433
import { CoreFilterHelperProvider } from '@core/filter/providers/helper';
3534
import { CorePluginFileDelegate } from '@providers/plugin-file-delegate';
35+
import { CoreWSProvider } from '@providers/ws';
3636

3737
// Delegates
3838
import { CoreMainMenuDelegate } from '@core/mainmenu/providers/delegate';
@@ -93,7 +93,7 @@ export class CoreSitePluginsHelperProvider {
9393
private moduleDelegate: CoreCourseModuleDelegate,
9494
private userDelegate: CoreUserDelegate,
9595
private langProvider: CoreLangProvider,
96-
private http: Http,
96+
private wsProvider: CoreWSProvider,
9797
private sitePluginsProvider: CoreSitePluginsProvider,
9898
private prefetchDelegate: CoreCourseModulePrefetchDelegate,
9999
private compileProvider: CoreCompileProvider,
@@ -208,15 +208,7 @@ export class CoreSitePluginsHelperProvider {
208208
undefined, undefined, undefined, handlerSchema.styles.version).then((url) => {
209209

210210
// File is downloaded, get the contents.
211-
return this.http.get(url).toPromise();
212-
}).then((response): any => {
213-
const text = response && response.text();
214-
215-
if (typeof text == 'string') {
216-
return text;
217-
} else {
218-
return Promise.reject(null);
219-
}
211+
return this.wsProvider.getText(url);
220212
});
221213
});
222214
}

src/providers/ws.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
// limitations under the License.
1414

1515
import { Injectable } from '@angular/core';
16-
import { Http } from '@angular/http';
17-
import { HttpClient } from '@angular/common/http';
16+
import { HttpClient, HttpResponse } from '@angular/common/http';
1817
import { TranslateService } from '@ngx-translate/core';
1918
import { FileTransfer, FileUploadOptions } from '@ionic-native/file-transfer';
2019
import { CoreAppProvider } from './app';
@@ -92,10 +91,14 @@ export class CoreWSProvider {
9291
protected retryCalls = [];
9392
protected retryTimeout = 0;
9493

95-
constructor(private http: HttpClient, private translate: TranslateService, private appProvider: CoreAppProvider,
96-
private textUtils: CoreTextUtilsProvider, logger: CoreLoggerProvider,
97-
private fileProvider: CoreFileProvider, private fileTransfer: FileTransfer, private commonHttp: Http,
98-
private mimeUtils: CoreMimetypeUtilsProvider) {
94+
constructor(protected http: HttpClient,
95+
protected translate: TranslateService,
96+
protected appProvider: CoreAppProvider,
97+
protected textUtils: CoreTextUtilsProvider,
98+
protected fileProvider: CoreFileProvider,
99+
protected fileTransfer: FileTransfer,
100+
protected mimeUtils: CoreMimetypeUtilsProvider,
101+
logger: CoreLoggerProvider) {
99102
this.logger = logger.getInstance('CoreWSProvider');
100103
}
101104

@@ -499,11 +502,11 @@ export class CoreWSProvider {
499502
* @param url URL to perform the request.
500503
* @return Promise resolved with the response.
501504
*/
502-
performHead(url: string): Promise<any> {
505+
performHead(url: string): Promise<HttpResponse<any>> {
503506
let promise = this.getPromiseHttp('head', url);
504507

505508
if (!promise) {
506-
promise = this.commonHttp.head(url).timeout(this.getRequestTimeout()).toPromise();
509+
promise = this.http.head(url, {observe: 'response'}).timeout(this.getRequestTimeout()).toPromise();
507510
promise = this.setPromiseHttp(promise, 'head', url);
508511
}
509512

@@ -828,6 +831,22 @@ export class CoreWSProvider {
828831
return Promise.reject(this.translate.instant('core.errorinvalidresponse'));
829832
});
830833
}
834+
835+
/**
836+
* Perform an HTTP request requesting for a text response.
837+
*
838+
* @param url Url to get.
839+
* @return Resolved with the text when done.
840+
*/
841+
async getText(url: string): Promise<string> {
842+
// Fetch the URL content.
843+
const content = await this.http.get(url, { responseType: 'text' }).toPromise();
844+
if (typeof content !== 'string') {
845+
return Promise.reject(null);
846+
}
847+
848+
return content;
849+
}
831850
}
832851

833852
/**

0 commit comments

Comments
 (0)