- let body = new URLSearchParams()
- body.set('client_id', this.clientId)
- body.set('client_secret', this.clientSecret)
- body.set('response_type', 'code')
- body.set('grant_type', 'password')
- body.set('scope', 'upload')
- body.set('username', username)
- body.set('password', password)
-
- let headers = new Headers()
- headers.append('Content-Type', 'application/x-www-form-urlencoded')
-
- let options = {
- headers: headers
- }
-
- return this.http.post(AuthService.BASE_TOKEN_URL, body.toString(), options)
- .map(this.restExtractor.extractDataGet)
- .map(res => {
- res.username = username
- return res
- })
- .flatMap(res => this.mergeUserInformations(res))
- .map(res => this.handleLogin(res))
- .catch((res) => this.restExtractor.handleError(res))
+ // Form url encoded
+ const body = {
+ client_id: this.clientId,
+ client_secret: this.clientSecret,
+ response_type: 'code',
+ grant_type: 'password',
+ scope: 'upload',
+ username,
+ password
+ }
+
+ const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
+ return this.http.post<UserLogin>(AuthService.BASE_TOKEN_URL, objectToUrlEncoded(body), { headers })
+ .pipe(
+ map(res => Object.assign(res, { username })),
+ mergeMap(res => this.mergeUserInformation(res)),
+ map(res => this.handleLogin(res)),
+ catchError(res => this.restExtractor.handleError(res))
+ )