MOBILE-3339 ionic: Remove usage of angular/http deprecated package
parent
a4f39f08ad
commit
0c05a9fc41
|
@ -13,7 +13,6 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Http, Response } from '@angular/http';
|
|
||||||
import { CoreFileProvider } from '@providers/file';
|
import { CoreFileProvider } from '@providers/file';
|
||||||
import { CoreFilepoolProvider } from '@providers/filepool';
|
import { CoreFilepoolProvider } from '@providers/filepool';
|
||||||
import { CoreLoggerProvider } from '@providers/logger';
|
import { CoreLoggerProvider } from '@providers/logger';
|
||||||
|
@ -25,7 +24,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
|
||||||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||||
import { CoreSite } from '@classes/site';
|
import { CoreSite } from '@classes/site';
|
||||||
import { CoreTagItem } from '@core/tag/providers/tag';
|
import { CoreTagItem } from '@core/tag/providers/tag';
|
||||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
import { CoreWSProvider, CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that provides some features for books.
|
* Service that provides some features for books.
|
||||||
|
@ -37,10 +36,16 @@ export class AddonModBookProvider {
|
||||||
protected ROOT_CACHE_KEY = 'mmaModBook:';
|
protected ROOT_CACHE_KEY = 'mmaModBook:';
|
||||||
protected logger;
|
protected logger;
|
||||||
|
|
||||||
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider,
|
constructor(logger: CoreLoggerProvider,
|
||||||
private fileProvider: CoreFileProvider, private filepoolProvider: CoreFilepoolProvider, private http: Http,
|
protected sitesProvider: CoreSitesProvider,
|
||||||
private utils: CoreUtilsProvider, private courseProvider: CoreCourseProvider, private domUtils: CoreDomUtilsProvider,
|
protected textUtils: CoreTextUtilsProvider,
|
||||||
private logHelper: CoreCourseLogHelperProvider) {
|
protected fileProvider: CoreFileProvider,
|
||||||
|
protected filepoolProvider: CoreFilepoolProvider,
|
||||||
|
protected wsProvider: CoreWSProvider,
|
||||||
|
protected utils: CoreUtilsProvider,
|
||||||
|
protected courseProvider: CoreCourseProvider,
|
||||||
|
protected domUtils: CoreDomUtilsProvider,
|
||||||
|
protected logHelper: CoreCourseLogHelperProvider) {
|
||||||
this.logger = logger.getInstance('AddonModBookProvider');
|
this.logger = logger.getInstance('AddonModBookProvider');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,19 +133,11 @@ export class AddonModBookProvider {
|
||||||
return this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
|
return this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
return promise.then((url) => {
|
return promise.then(async (url) => {
|
||||||
// Fetch the URL content.
|
const content = await this.wsProvider.getText(url);
|
||||||
const promise = this.http.get(url).toPromise();
|
|
||||||
|
|
||||||
return promise.then((response: Response): any => {
|
|
||||||
const content = response.text();
|
|
||||||
if (typeof content !== 'string') {
|
|
||||||
return Promise.reject(null);
|
|
||||||
} else {
|
|
||||||
// Now that we have the content, we update the SRC to point back to the external resource.
|
// Now that we have the content, we update the SRC to point back to the external resource.
|
||||||
return this.domUtils.restoreSourcesInHtml(content, contentsMap[chapterId].paths);
|
return this.domUtils.restoreSourcesInHtml(content, contentsMap[chapterId].paths);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ import { CoreFilepoolProvider } from '@providers/filepool';
|
||||||
import { AddonModPageProvider } from './page';
|
import { AddonModPageProvider } from './page';
|
||||||
import { CoreFileProvider } from '@providers/file';
|
import { CoreFileProvider } from '@providers/file';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { Http, Response } from '@angular/http';
|
import { CoreWSProvider } from '@providers/ws';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that provides some features for page.
|
* Service that provides some features for page.
|
||||||
|
@ -30,9 +30,13 @@ export class AddonModPageHelperProvider {
|
||||||
|
|
||||||
protected logger;
|
protected logger;
|
||||||
|
|
||||||
constructor(logger: CoreLoggerProvider, private domUtils: CoreDomUtilsProvider, private filepoolProvider: CoreFilepoolProvider,
|
constructor(logger: CoreLoggerProvider,
|
||||||
private fileProvider: CoreFileProvider, private textUtils: CoreTextUtilsProvider, private http: Http,
|
protected domUtils: CoreDomUtilsProvider,
|
||||||
private sitesProvider: CoreSitesProvider) {
|
protected filepoolProvider: CoreFilepoolProvider,
|
||||||
|
protected fileProvider: CoreFileProvider,
|
||||||
|
protected textUtils: CoreTextUtilsProvider,
|
||||||
|
protected wsProvider: CoreWSProvider,
|
||||||
|
protected sitesProvider: CoreSitesProvider) {
|
||||||
this.logger = logger.getInstance('AddonModPageHelperProvider');
|
this.logger = logger.getInstance('AddonModPageHelperProvider');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,22 +83,13 @@ export class AddonModPageHelperProvider {
|
||||||
promise = this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
|
promise = this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
return promise.then((url) => {
|
return promise.then(async (url) => {
|
||||||
|
const content = await this.wsProvider.getText(url);
|
||||||
// Fetch the URL content.
|
|
||||||
const promise = this.http.get(url).toPromise();
|
|
||||||
|
|
||||||
return promise.then((response: Response): any => {
|
|
||||||
const content = response.text();
|
|
||||||
if (typeof content !== 'string') {
|
|
||||||
return Promise.reject(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now that we have the content, we update the SRC to point back to the external resource.
|
// Now that we have the content, we update the SRC to point back to the external resource.
|
||||||
// That will be caught by core-format-text.
|
// That will be caught by core-format-text.
|
||||||
return this.domUtils.restoreSourcesInHtml(content, paths);
|
return this.domUtils.restoreSourcesInHtml(content, paths);
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Http } from '@angular/http';
|
import { CoreWSProvider } from '@providers/ws';
|
||||||
import { CoreAppProvider } from '@providers/app';
|
import { CoreAppProvider } from '@providers/app';
|
||||||
import { CoreFileProvider } from '@providers/file';
|
import { CoreFileProvider } from '@providers/file';
|
||||||
import { CoreFilepoolProvider } from '@providers/filepool';
|
import { CoreFilepoolProvider } from '@providers/filepool';
|
||||||
|
@ -34,9 +34,13 @@ export class AddonRemoteThemesProvider {
|
||||||
protected logger;
|
protected logger;
|
||||||
protected stylesEls: {[siteId: string]: {element: HTMLStyleElement, hash: string}} = {};
|
protected stylesEls: {[siteId: string]: {element: HTMLStyleElement, hash: string}} = {};
|
||||||
|
|
||||||
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private fileProvider: CoreFileProvider,
|
constructor(logger: CoreLoggerProvider,
|
||||||
private filepoolProvider: CoreFilepoolProvider, private http: Http, private utils: CoreUtilsProvider,
|
protected sitesProvider: CoreSitesProvider,
|
||||||
private appProvider: CoreAppProvider) {
|
protected fileProvider: CoreFileProvider,
|
||||||
|
protected filepoolProvider: CoreFilepoolProvider,
|
||||||
|
protected wsProvider: CoreWSProvider,
|
||||||
|
protected utils: CoreUtilsProvider,
|
||||||
|
protected appProvider: CoreAppProvider) {
|
||||||
this.logger = logger.getInstance('AddonRemoteThemesProvider');
|
this.logger = logger.getInstance('AddonRemoteThemesProvider');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,18 +178,13 @@ export class AddonRemoteThemesProvider {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return promise.then((url) => {
|
return promise.then(async (url) => {
|
||||||
this.logger.debug('Loading styles from: ', url);
|
this.logger.debug('Loading styles from: ', url);
|
||||||
|
|
||||||
// Get the CSS content using HTTP because we will treat the styles before saving them in the file.
|
// Get the CSS content using HTTP because we will treat the styles before saving them in the file.
|
||||||
return this.http.get(url).toPromise();
|
const text = await this.wsProvider.getText(url);
|
||||||
}).then((response): any => {
|
|
||||||
const text = response && response.text();
|
|
||||||
if (typeof text == 'string') {
|
|
||||||
return {fileUrl: fileUrl, styles: this.get35Styles(text)};
|
return {fileUrl: fileUrl, styles: this.get35Styles(text)};
|
||||||
} else {
|
|
||||||
return Promise.reject(null);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -263,9 +262,7 @@ export class AddonRemoteThemesProvider {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.http.get(url).toPromise().then((response) => {
|
return this.wsProvider.getText(url).then((text) => {
|
||||||
let text = response && response.text();
|
|
||||||
if (typeof text == 'string') {
|
|
||||||
text = this.get35Styles(text);
|
text = this.get35Styles(text);
|
||||||
|
|
||||||
const styleEl = document.createElement('style');
|
const styleEl = document.createElement('style');
|
||||||
|
@ -277,9 +274,6 @@ export class AddonRemoteThemesProvider {
|
||||||
element: styleEl,
|
element: styleEl,
|
||||||
hash: ''
|
hash: ''
|
||||||
};
|
};
|
||||||
} else {
|
|
||||||
return Promise.reject(null);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { NgModule, COMPILER_OPTIONS } from '@angular/core';
|
import { NgModule, COMPILER_OPTIONS } from '@angular/core';
|
||||||
import { IonicApp, IonicModule, Platform, Content, ScrollEvent, Config, Refresher } from 'ionic-angular';
|
import { IonicApp, IonicModule, Platform, Content, ScrollEvent, Config, Refresher } from 'ionic-angular';
|
||||||
import { assert } from 'ionic-angular/util/util';
|
import { assert } from 'ionic-angular/util/util';
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
||||||
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
|
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
|
||||||
import { LocationStrategy } from '@angular/common';
|
import { LocationStrategy } from '@angular/common';
|
||||||
|
@ -202,7 +201,6 @@ export const WP_PROVIDER: any = null;
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
|
HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
|
||||||
HttpModule,
|
|
||||||
IonicModule.forRoot(MoodleMobileApp, {
|
IonicModule.forRoot(MoodleMobileApp, {
|
||||||
pageTransition: 'core-page-transition'
|
pageTransition: 'core-page-transition'
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -46,7 +46,6 @@ import { CoreSitePluginsProvider } from '@core/siteplugins/providers/siteplugins
|
||||||
// Import other libraries and providers.
|
// Import other libraries and providers.
|
||||||
import { DomSanitizer } from '@angular/platform-browser';
|
import { DomSanitizer } from '@angular/platform-browser';
|
||||||
import { FormBuilder, Validators } from '@angular/forms';
|
import { FormBuilder, Validators } from '@angular/forms';
|
||||||
import { Http } from '@angular/http';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { CoreConfigConstants } from '../../../configconstants';
|
import { CoreConfigConstants } from '../../../configconstants';
|
||||||
import { CoreConstants } from '@core/constants';
|
import { CoreConstants } from '@core/constants';
|
||||||
|
@ -136,7 +135,7 @@ export class CoreCompileProvider {
|
||||||
|
|
||||||
// Other Ionic/Angular providers that don't depend on where they are injected.
|
// Other Ionic/Angular providers that don't depend on where they are injected.
|
||||||
protected OTHER_PROVIDERS = [
|
protected OTHER_PROVIDERS = [
|
||||||
TranslateService, Http, HttpClient, Platform, DomSanitizer, ActionSheetController, AlertController, LoadingController,
|
TranslateService, HttpClient, Platform, DomSanitizer, ActionSheetController, AlertController, LoadingController,
|
||||||
ModalController, PopoverController, ToastController, FormBuilder
|
ModalController, PopoverController, ToastController, FormBuilder
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Http } from '@angular/http';
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreAppProvider } from '@providers/app';
|
import { CoreAppProvider } from '@providers/app';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
|
@ -33,6 +32,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
|
||||||
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
import { CoreCoursesProvider } from '@core/courses/providers/courses';
|
||||||
import { CoreFilterHelperProvider } from '@core/filter/providers/helper';
|
import { CoreFilterHelperProvider } from '@core/filter/providers/helper';
|
||||||
import { CorePluginFileDelegate } from '@providers/plugin-file-delegate';
|
import { CorePluginFileDelegate } from '@providers/plugin-file-delegate';
|
||||||
|
import { CoreWSProvider } from '@providers/ws';
|
||||||
|
|
||||||
// Delegates
|
// Delegates
|
||||||
import { CoreMainMenuDelegate } from '@core/mainmenu/providers/delegate';
|
import { CoreMainMenuDelegate } from '@core/mainmenu/providers/delegate';
|
||||||
|
@ -93,7 +93,7 @@ export class CoreSitePluginsHelperProvider {
|
||||||
private moduleDelegate: CoreCourseModuleDelegate,
|
private moduleDelegate: CoreCourseModuleDelegate,
|
||||||
private userDelegate: CoreUserDelegate,
|
private userDelegate: CoreUserDelegate,
|
||||||
private langProvider: CoreLangProvider,
|
private langProvider: CoreLangProvider,
|
||||||
private http: Http,
|
private wsProvider: CoreWSProvider,
|
||||||
private sitePluginsProvider: CoreSitePluginsProvider,
|
private sitePluginsProvider: CoreSitePluginsProvider,
|
||||||
private prefetchDelegate: CoreCourseModulePrefetchDelegate,
|
private prefetchDelegate: CoreCourseModulePrefetchDelegate,
|
||||||
private compileProvider: CoreCompileProvider,
|
private compileProvider: CoreCompileProvider,
|
||||||
|
@ -208,15 +208,7 @@ export class CoreSitePluginsHelperProvider {
|
||||||
undefined, undefined, undefined, handlerSchema.styles.version).then((url) => {
|
undefined, undefined, undefined, handlerSchema.styles.version).then((url) => {
|
||||||
|
|
||||||
// File is downloaded, get the contents.
|
// File is downloaded, get the contents.
|
||||||
return this.http.get(url).toPromise();
|
return this.wsProvider.getText(url);
|
||||||
}).then((response): any => {
|
|
||||||
const text = response && response.text();
|
|
||||||
|
|
||||||
if (typeof text == 'string') {
|
|
||||||
return text;
|
|
||||||
} else {
|
|
||||||
return Promise.reject(null);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Http } from '@angular/http';
|
import { HttpClient, HttpResponse } from '@angular/common/http';
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { FileTransfer, FileUploadOptions } from '@ionic-native/file-transfer';
|
import { FileTransfer, FileUploadOptions } from '@ionic-native/file-transfer';
|
||||||
import { CoreAppProvider } from './app';
|
import { CoreAppProvider } from './app';
|
||||||
|
@ -92,10 +91,14 @@ export class CoreWSProvider {
|
||||||
protected retryCalls = [];
|
protected retryCalls = [];
|
||||||
protected retryTimeout = 0;
|
protected retryTimeout = 0;
|
||||||
|
|
||||||
constructor(private http: HttpClient, private translate: TranslateService, private appProvider: CoreAppProvider,
|
constructor(protected http: HttpClient,
|
||||||
private textUtils: CoreTextUtilsProvider, logger: CoreLoggerProvider,
|
protected translate: TranslateService,
|
||||||
private fileProvider: CoreFileProvider, private fileTransfer: FileTransfer, private commonHttp: Http,
|
protected appProvider: CoreAppProvider,
|
||||||
private mimeUtils: CoreMimetypeUtilsProvider) {
|
protected textUtils: CoreTextUtilsProvider,
|
||||||
|
protected fileProvider: CoreFileProvider,
|
||||||
|
protected fileTransfer: FileTransfer,
|
||||||
|
protected mimeUtils: CoreMimetypeUtilsProvider,
|
||||||
|
logger: CoreLoggerProvider) {
|
||||||
this.logger = logger.getInstance('CoreWSProvider');
|
this.logger = logger.getInstance('CoreWSProvider');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,11 +502,11 @@ export class CoreWSProvider {
|
||||||
* @param url URL to perform the request.
|
* @param url URL to perform the request.
|
||||||
* @return Promise resolved with the response.
|
* @return Promise resolved with the response.
|
||||||
*/
|
*/
|
||||||
performHead(url: string): Promise<any> {
|
performHead(url: string): Promise<HttpResponse<any>> {
|
||||||
let promise = this.getPromiseHttp('head', url);
|
let promise = this.getPromiseHttp('head', url);
|
||||||
|
|
||||||
if (!promise) {
|
if (!promise) {
|
||||||
promise = this.commonHttp.head(url).timeout(this.getRequestTimeout()).toPromise();
|
promise = this.http.head(url, {observe: 'response'}).timeout(this.getRequestTimeout()).toPromise();
|
||||||
promise = this.setPromiseHttp(promise, 'head', url);
|
promise = this.setPromiseHttp(promise, 'head', url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -828,6 +831,22 @@ export class CoreWSProvider {
|
||||||
return Promise.reject(this.translate.instant('core.errorinvalidresponse'));
|
return Promise.reject(this.translate.instant('core.errorinvalidresponse'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform an HTTP request requesting for a text response.
|
||||||
|
*
|
||||||
|
* @param url Url to get.
|
||||||
|
* @return Resolved with the text when done.
|
||||||
|
*/
|
||||||
|
async getText(url: string): Promise<string> {
|
||||||
|
// Fetch the URL content.
|
||||||
|
const content = await this.http.get(url, { responseType: 'text' }).toPromise();
|
||||||
|
if (typeof content !== 'string') {
|
||||||
|
return Promise.reject(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return content;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue