diff options
| author | transtrike <transtrike@gmail.com> | 2021-02-12 19:04:53 +0200 |
|---|---|---|
| committer | transtrike <transtrike@gmail.com> | 2021-02-12 19:04:53 +0200 |
| commit | bcd88af53b1a920d728ec98b45daa9ac2e2c0917 (patch) | |
| tree | fd27eef086822b0f02f74364cac0b940956d2458 /src/app/services | |
| parent | 1d1f05e3f74d70a558b4847a9107afa7952131cf (diff) | |
| download | DevHive-Angular-bcd88af53b1a920d728ec98b45daa9ac2e2c0917.tar DevHive-Angular-bcd88af53b1a920d728ec98b45daa9ac2e2c0917.tar.gz DevHive-Angular-bcd88af53b1a920d728ec98b45daa9ac2e2c0917.zip | |
Moved from DevHive
Diffstat (limited to 'src/app/services')
| -rw-r--r-- | src/app/services/cloudinary.service.ts | 17 | ||||
| -rw-r--r-- | src/app/services/comment.service.ts | 83 | ||||
| -rw-r--r-- | src/app/services/feed.service.ts | 50 | ||||
| -rw-r--r-- | src/app/services/language.service.ts | 113 | ||||
| -rw-r--r-- | src/app/services/post.service.ts | 86 | ||||
| -rw-r--r-- | src/app/services/technology.service.ts | 113 | ||||
| -rw-r--r-- | src/app/services/token.service.ts | 47 | ||||
| -rw-r--r-- | src/app/services/user.service.ts | 179 |
8 files changed, 688 insertions, 0 deletions
diff --git a/src/app/services/cloudinary.service.ts b/src/app/services/cloudinary.service.ts new file mode 100644 index 0000000..999e498 --- /dev/null +++ b/src/app/services/cloudinary.service.ts @@ -0,0 +1,17 @@ +import {HttpClient} from '@angular/common/http'; +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class CloudinaryService { + constructor(private _http: HttpClient) + { } + + getFileRequest(fileLink: string): Observable<Blob> { + return this._http.get(fileLink, { + responseType: 'blob' + }); + } +} diff --git a/src/app/services/comment.service.ts b/src/app/services/comment.service.ts new file mode 100644 index 0000000..c9dbf35 --- /dev/null +++ b/src/app/services/comment.service.ts @@ -0,0 +1,83 @@ +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Guid } from 'guid-typescript'; +import { Observable } from 'rxjs'; +import { Comment } from 'src/models/comment'; +import { AppConstants } from '../app-constants.module'; +import { TokenService } from './token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class CommentService { + constructor(private _http: HttpClient, private _tokenService: TokenService) + { } + + getDefaultComment(): Comment { + return new Comment(Guid.createEmpty(), Guid.createEmpty(), 'Gosho', 'Trapov', 'gosho_trapov', 'Your opinion on my idea?', new Date()); + } + + /* Requests from session storage */ + + createCommentWithSessionStorageRequest(postId: Guid, commentMessage: string): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.createCommentRequest(userId, token, postId, commentMessage); + } + + putCommentWithSessionStorageRequest(commentId: Guid, postId: Guid, newMessage: string): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putCommentRequest(userId, token, commentId, postId, newMessage); + } + + deleteCommentWithSessionStorage(commentId: Guid): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.deleteCommentRequest(commentId, token); + } + + /* Comment requests */ + + createCommentRequest(userId: Guid, authToken: string, postId: Guid, commentMessage: string): Observable<object> { + const body = { + postId: postId.toString(), + message: commentMessage + }; + const options = { + params: new HttpParams().set('UserId', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.post(AppConstants.API_COMMENT_URL, body, options); + } + + getCommentRequest(id: Guid): Observable<object> { + const options = { + params: new HttpParams().set('Id', id.toString()) + }; + return this._http.get(AppConstants.API_COMMENT_URL, options); + } + + putCommentRequest(userId: Guid, authToken: string, commentId: Guid, postId: Guid, newMessage: string): Observable<object> { + const body = { + commentId: commentId.toString(), + postId: postId.toString(), + newMessage: newMessage + }; + const options = { + params: new HttpParams().set('UserId', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_COMMENT_URL, body, options); + } + + deleteCommentRequest(commentId: Guid, authToken: string): Observable<object> { + const options = { + params: new HttpParams().set('Id', commentId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.delete(AppConstants.API_COMMENT_URL, options); + } +} diff --git a/src/app/services/feed.service.ts b/src/app/services/feed.service.ts new file mode 100644 index 0000000..d160f6d --- /dev/null +++ b/src/app/services/feed.service.ts @@ -0,0 +1,50 @@ +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Guid } from 'guid-typescript'; +import { Observable } from 'rxjs'; +import { AppConstants } from '../app-constants.module'; +import { TokenService } from './token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class FeedService { + constructor(private _http: HttpClient, private _tokenService: TokenService) + { } + + /* Requests from session storage */ + + getUserFeedFromSessionStorageRequest(pageNumber: number, firstTimeIssued: string, pageSize: number): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + + return this.getUserFeedRequest(userId, token, pageNumber, firstTimeIssued, pageSize); + } + + /* Feed requests */ + + getUserFeedRequest(userId: Guid, authToken: string, pageNumber: number, firstTimeIssued: string, pageSize: number): Observable<object> { + const body = { + pageNumber: pageNumber, + firstPageTimeIssued: firstTimeIssued, + pageSize: pageSize + }; + const options = { + params: new HttpParams().set('UserId', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.post(AppConstants.API_FEED_URL + '/GetPosts', body, options); + } + + getUserPostsRequest(userName: string, pageNumber: number, firstTimeIssued: string, pageSize: number): Observable<object> { + const body = { + pageNumber: pageNumber, + firstPageTimeIssued: firstTimeIssued, + pageSize: pageSize + }; + const options = { + params: new HttpParams().set('UserName', userName) + }; + return this._http.post(AppConstants.API_FEED_URL + '/GetUserPosts', body, options); + } +} diff --git a/src/app/services/language.service.ts b/src/app/services/language.service.ts new file mode 100644 index 0000000..15e241f --- /dev/null +++ b/src/app/services/language.service.ts @@ -0,0 +1,113 @@ +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Guid } from 'guid-typescript'; +import { Observable } from 'rxjs'; +import { Language } from 'src/models/language'; +import { AppConstants } from '../app-constants.module'; +import { TokenService } from './token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class LanguageService { + constructor(private _http: HttpClient, private _tokenService: TokenService) + { } + + /* Requests from session storage */ + + createLanguageWithSessionStorageRequest(name: string): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.createLanguageRequest(name, token); + } + + getAllLanguagesWithSessionStorageRequest(): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.getAllLanguagesRequest(token); + } + + putLanguageWithSessionStorageRequest(langId: Guid, newName: string): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putLanguageRequest(token, langId, newName); + } + + deleteLanguageWithSessionStorageRequest(langId: Guid): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.deleteLanguageRequest(token, langId); + } + + /* Language requests */ + + createLanguageRequest(name: string, authToken: string): Observable<object> { + const body = { + name: name + }; + const options = { + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.post(AppConstants.API_LANGUAGE_URL, body, options); + } + + getLanguageRequest(langId: Guid): Observable<object> { + const options = { + params: new HttpParams().set('Id', langId.toString()), + }; + return this._http.get(AppConstants.API_LANGUAGE_URL, options); + } + + getAllLanguagesRequest(authToken: string): Observable<object> { + const options = { + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.get(AppConstants.API_LANGUAGE_URL + '/GetLanguages', options); + } + + getFullLanguagesFromIncomplete(givenLanguages: Language[]): Promise<Language[]> { + if (givenLanguages.length === 0) { + return new Promise(resolve => resolve(givenLanguages)); + } + + // This accepts language array with incomplete languages, meaning + // languages that only have an id, but no name + return new Promise(resolve => { + const lastGuid = givenLanguages[givenLanguages.length - 1].id; + + // For each language, request his name and assign it + for (const lang of givenLanguages) { + this.getLanguageRequest(lang.id).subscribe( + (result: object) => { + // this only assigns the "name" property to the language, + // because only the name is returned from the request + Object.assign(lang, result); + + if (lastGuid === lang.id) { + resolve(givenLanguages); + } + } + ); + } + }); + } + + putLanguageRequest(authToken: string, langId: Guid, newName: string): Observable<object> { + const body = { + name: newName + }; + const options = { + params: new HttpParams().set('Id', langId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_LANGUAGE_URL, body, options); + } + + deleteLanguageRequest(authToken: string, langId: Guid): Observable<object> { + const options = { + params: new HttpParams().set('Id', langId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.delete(AppConstants.API_LANGUAGE_URL, options); + } +} diff --git a/src/app/services/post.service.ts b/src/app/services/post.service.ts new file mode 100644 index 0000000..7b2a539 --- /dev/null +++ b/src/app/services/post.service.ts @@ -0,0 +1,86 @@ +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import * as FormData from 'form-data'; +import { Guid } from 'guid-typescript'; +import { Observable } from 'rxjs'; +import { Post } from 'src/models/post'; +import { AppConstants } from '../app-constants.module'; +import { TokenService } from './token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class PostService { + constructor(private _http: HttpClient, private _tokenService: TokenService) + { } + + getDefaultPost(): Post { + return new Post(Guid.createEmpty(), 'Gosho', 'Trapov', 'gosho_trapov', 'Your opinion on my idea?', new Date(), [], []); + } + + /* Requests from session storage */ + + createPostWithSessionStorageRequest(postMessage: string, files: File[]): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.createPostRequest(userId, token, postMessage, files); + } + + putPostWithSessionStorageRequest(postId: Guid, newMessage: string, posts: File[]): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putPostRequest(userId, token, postId, newMessage, posts); + } + + deletePostWithSessionStorage(postId: Guid): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.deletePostRequest(postId, token); + } + + /* Post requests */ + + createPostRequest(userId: Guid, authToken: string, postMessage: string, files: File[]): Observable<object> { + const form = new FormData(); + form.append('message', postMessage); + for (const file of files) { + form.append('files', file, file.name); + } + const options = { + params: new HttpParams().set('UserId', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.post(AppConstants.API_POST_URL, form, options); + } + + getPostRequest(id: Guid): Observable<object> { + const options = { + params: new HttpParams().set('Id', id.toString()) + }; + return this._http.get(AppConstants.API_POST_URL, options); + } + + putPostRequest(userId: Guid, authToken: string, postId: Guid, newMessage: string, files: File[]): Observable<object> { + const form = new FormData(); + form.append('postId', postId); + form.append('newMessage', newMessage); + for (const file of files) { + form.append('files', file, file.name); + } + const options = { + params: new HttpParams().set('UserId', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_POST_URL, form, options); + } + + deletePostRequest(postId: Guid, authToken: string): Observable<object> { + const options = { + params: new HttpParams().set('Id', postId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.delete(AppConstants.API_POST_URL, options); + } +} diff --git a/src/app/services/technology.service.ts b/src/app/services/technology.service.ts new file mode 100644 index 0000000..dbdc039 --- /dev/null +++ b/src/app/services/technology.service.ts @@ -0,0 +1,113 @@ +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Guid } from 'guid-typescript'; +import { Observable } from 'rxjs'; +import { Technology } from 'src/models/technology'; +import { AppConstants } from '../app-constants.module'; +import { TokenService } from './token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class TechnologyService { + constructor(private _http: HttpClient, private _tokenService: TokenService) + { } + + /* Requests from session storage */ + + createTechnologyWithSessionStorageRequest(name: string): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.createtTechnologyRequest(name, token); + } + + getAllTechnologiesWithSessionStorageRequest(): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.getAllTechnologiesRequest(token); + } + + putTechnologyWithSessionStorageRequest(langId: Guid, newName: string): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putTechnologyRequest(token, langId, newName); + } + + deleteTechnologyWithSessionStorageRequest(langId: Guid): Observable<object> { + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.deleteTechnologyRequest(token, langId); + } + + /* Technology requests */ + + createtTechnologyRequest(name: string, authToken: string): Observable<object> { + const body = { + name: name + }; + const options = { + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.post(AppConstants.API_TECHNOLOGY_URL, body, options); + } + + getTechnologyRequest(techId: Guid): Observable<object> { + const options = { + params: new HttpParams().set('Id', techId.toString()) + }; + return this._http.get(AppConstants.API_TECHNOLOGY_URL, options); + } + + getAllTechnologiesRequest(authToken: string): Observable<object> { + const options = { + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.get(AppConstants.API_TECHNOLOGY_URL + '/GetTechnologies', options); + } + + getFullTechnologiesFromIncomplete(givenTechnologies: Technology[]): Promise<Technology[]> { + if (givenTechnologies.length === 0) { + return new Promise(resolve => resolve(givenTechnologies)); + } + + // This accepts language array with incomplete languages, meaning + // languages that only have an id, but no name + return new Promise(resolve => { + const lastGuid = givenTechnologies[givenTechnologies.length - 1].id; + + // For each language, request his name and assign it + for (const tech of givenTechnologies) { + this.getTechnologyRequest(tech.id).subscribe( + (result: object) => { + // this only assigns the "name" property to the language, + // because only the name is returned from the request + Object.assign(tech, result); + + if (lastGuid === tech.id) { + resolve(givenTechnologies); + } + } + ); + } + }); + } + + putTechnologyRequest(authToken: string, langId: Guid, newName: string): Observable<object> { + const body = { + name: newName + }; + const options = { + params: new HttpParams().set('Id', langId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_TECHNOLOGY_URL, body, options); + } + + deleteTechnologyRequest(authToken: string, langId: Guid): Observable<object> { + const options = { + params: new HttpParams().set('Id', langId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.delete(AppConstants.API_TECHNOLOGY_URL, options); + } +} diff --git a/src/app/services/token.service.ts b/src/app/services/token.service.ts new file mode 100644 index 0000000..62bc07e --- /dev/null +++ b/src/app/services/token.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { Guid } from 'guid-typescript'; +import jwt_decode from 'jwt-decode'; +import { IJWTPayload } from 'src/interfaces/jwt-payload'; +import { IUserCredentials } from 'src/interfaces/user-credentials'; +import { AppConstants } from '../app-constants.module'; + +@Injectable({ + providedIn: 'root' +}) +export class TokenService { + constructor() + { } + + /* Session storage */ + + setUserTokenToSessionStorage(response: object): void { + const token = JSON.stringify(response); + sessionStorage.setItem(AppConstants.SESSION_TOKEN_KEY, token.substr(10, token.length - 12)); + } + + getTokenFromSessionStorage(): string { + return sessionStorage.getItem(AppConstants.SESSION_TOKEN_KEY) ?? ''; + } + + getUserIdFromSessionStorageToken(): Guid { + const jwt: IJWTPayload = { + token: this.getTokenFromSessionStorage() + }; + const userCred = jwt_decode<IUserCredentials>(jwt.token); + + return userCred.ID; + } + + getUsernameFromSessionStorageToken(): string { + const jwt: IJWTPayload = { + token: this.getTokenFromSessionStorage() + }; + const userCred = jwt_decode<IUserCredentials>(jwt.token); + + return userCred.Username; + } + + logoutUserFromSessionStorage(): void { + sessionStorage.removeItem(AppConstants.SESSION_TOKEN_KEY); + } +} diff --git a/src/app/services/user.service.ts b/src/app/services/user.service.ts new file mode 100644 index 0000000..31862c4 --- /dev/null +++ b/src/app/services/user.service.ts @@ -0,0 +1,179 @@ +import { Injectable } from '@angular/core'; +import { Guid } from 'guid-typescript'; +import { User } from '../../models/identity/user'; +import { FormGroup } from '@angular/forms'; +import { AppConstants } from 'src/app/app-constants.module'; +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { Role } from 'src/models/identity/role'; +import { Friend } from 'src/models/identity/friend'; +import { TokenService } from './token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + constructor(private _http: HttpClient, private _tokenService: TokenService) + { } + + getDefaultUser(): User { + return new User(Guid.createEmpty(), 'gosho_trapov', 'Gosho', 'Trapov', 'gotra@bg.com', AppConstants.FALLBACK_PROFILE_ICON, [], [], [], []); + } + + /* Requests from session storage */ + + getUserFromSessionStorageRequest(): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.getUserRequest(userId, token); + } + + addFriendToUserFromSessionStorageRequest(newFriendUserName: string): Observable<object> { + const userUserName = this._tokenService.getUsernameFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.addFriendToUserRequest(userUserName, token, newFriendUserName); + } + + putUserFromSessionStorageRequest(updateUserFormGroup: FormGroup, userRoles: Role[], userFriends: Friend[]): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putUserRequest(userId, token, updateUserFormGroup, userRoles, userFriends); + } + + putProfilePictureFromSessionStorageRequest(newPicture: File): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putProfilePictureRequest(userId, token, newPicture); + } + + putBareUserFromSessionStorageRequest(user: User, password: string): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.putBareUserRequest(userId, token, user, password); + } + + deleteUserFromSessionStorageRequest(): Observable<object> { + const userId = this._tokenService.getUserIdFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.deleteUserRequest(userId, token); + } + + removeFriendFromUserFromSessionStorageRequest(friendToRemoveUserName: string): Observable<object> { + const userUserName = this._tokenService.getUsernameFromSessionStorageToken(); + const token = this._tokenService.getTokenFromSessionStorage(); + + return this.removeFriendFromUserRequest(userUserName, token, friendToRemoveUserName); + } + + + /* User requests */ + + loginUserRequest(loginUserFormGroup: FormGroup): Observable<object> { + const body = { + UserName: loginUserFormGroup.get('username')?.value, + Password: loginUserFormGroup.get('password')?.value + }; + return this._http.post(AppConstants.API_USER_LOGIN_URL, body); + } + + registerUserRequest(registerUserFormGroup: FormGroup): Observable<object> { + const body = { + UserName: registerUserFormGroup.get('username')?.value, + Email: registerUserFormGroup.get('email')?.value, + FirstName: registerUserFormGroup.get('firstName')?.value, + LastName: registerUserFormGroup.get('lastName')?.value, + Password: registerUserFormGroup.get('password')?.value + }; + return this._http.post(AppConstants.API_USER_REGISTER_URL, body); + } + + addFriendToUserRequest(userUserName: string, authToken: string, newFriendUserName: string): Observable<object> { + const body = { + newFriendUserName: newFriendUserName + }; + const options = { + params: new HttpParams().set('UserName', userUserName), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_USER_URL + '/AddFriend', body, options); + } + + getUserRequest(userId: Guid, authToken: string): Observable<object> { + const options = { + params: new HttpParams().set('Id', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.get(AppConstants.API_USER_URL, options); + } + + getUserByUsernameRequest(username: string): Observable<object> { + const options = { + params: new HttpParams().set('UserName', username), + }; + return this._http.get(AppConstants.API_USER_URL + '/GetUser', options); + } + + putUserRequest(userId: Guid, authToken: string, updateUserFormGroup: FormGroup, userRoles: Role[], userFriends: Friend[]): Observable<object> { + const body = { + UserName: updateUserFormGroup.get('username')?.value, + Email: updateUserFormGroup.get('email')?.value, + FirstName: updateUserFormGroup.get('firstName')?.value, + LastName: updateUserFormGroup.get('lastName')?.value, + Password: updateUserFormGroup.get('password')?.value, + Roles: userRoles, + Friends: userFriends, + Languages: updateUserFormGroup.get('languages')?.value, + Technologies: updateUserFormGroup.get('technologies')?.value + }; + const options = { + params: new HttpParams().set('Id', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_USER_URL, body, options); + } + + putBareUserRequest(userId: Guid, authToken: string, user: User, password: string): Observable<object> { + const body: object = user; + Object.assign(body, { password: password }); + const options = { + params: new HttpParams().set('Id', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_USER_URL, body, options); + } + + putProfilePictureRequest(userId: Guid, authToken: string, newPicture: File): Observable<object> { + const form = new FormData(); + form.append('picture', newPicture); + const options = { + params: new HttpParams().set('UserId', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.put(AppConstants.API_USER_URL + '/ProfilePicture', form, options); + } + + deleteUserRequest(userId: Guid, authToken: string): Observable<object> { + const options = { + params: new HttpParams().set('Id', userId.toString()), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.delete(AppConstants.API_USER_URL, options); + } + + removeFriendFromUserRequest(userUserName: string, authToken: string, friendToRemoveUserName: string): Observable<object> { + const body = { + friendUserNameToRemove: friendToRemoveUserName + }; + const options = { + params: new HttpParams().set('UserName', userUserName), + headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken) + }; + return this._http.post(AppConstants.API_USER_URL + '/RemoveFriend', body, options); + } +} |
