Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core';
- import { Http, Headers } from '@angular/http';
- import 'rxjs/add/operator/map';
- import { HttpClient, HttpHeaders } from '@angular/common/http';
- import { Resource } from '../models/resource.model';
- import { Observable } from 'rxjs/Observable';
- import { Serializer } from '../serializer/serializer';
- import { AuthenticationService } from './authentication.service';
- @Injectable()
- export class SharedService<T extends Resource> {
- constructor(
- private httpClient: HttpClient,
- private url: string,
- private endpoint: string,
- private authentication: AuthenticationService,
- private serializer: Serializer
- ) { }
- create(resource: T) {
- let headers = new HttpHeaders();
- headers = headers.set('Content-Type', 'application/json; charset=utf-8');
- return this.httpClient.post(`${this.url}/${this.endpoint}`, JSON.stringify(resource), { headers: headers });
- }
- //PUT
- update(item: T): Observable<T> {
- return this.httpClient.put<T>(`${this.url}/${this.endpoint}`, JSON.stringify(item), { headers: this.addHeaders() })
- .map(data => this.serializer.fromJson(data) as T);
- }
- //GET
- read(id: number): Observable<T> {
- return this.httpClient.get(`${this.url}/${this.endpoint}/${id}`, { headers: this.addHeaders() })
- .map((data: any) => this.serializer.fromJson(data) as T);
- }
- //GET ALL
- list(): Observable<T[]> {
- return this.httpClient.get<T>(`${this.url}/${this.endpoint}` , {headers : this.addHeaders()})
- .map((data: any) =>
- this.convertData(data.items));
- }
- protected convertData(data: any): T[] {
- return data.map(item => {this.serializer.fromJson(item)});
- }
- protected addHeaders() {
- let token = ('Bearer ' + this.authentication.getToken()).valueOf();
- let headers = new HttpHeaders();
- headers = headers.set('Content-Type', 'application/json; charset=utf-8').set('Authorization', token);
- return headers;
- }
- }
- import { User } from "../models/user/user.model";
- import { Serializer } from "./serializer";
- import { Resource } from "../models/resource.model";
- export class UserSerializer extends Serializer {
- fromJson(json: any): Resource {
- const user = new User();
- user.id = json.id;
- user.name = json.name;
- user.surname = json.surname;
- user.email = json.email;
- user.phoneNumber = json.phoneNumber;
- user.password = json.password;
- user.username = json.username;
- user.active = json.active;
- console.log('serializer');
- console.log(user);
- return user;
- }
- }
- import { Resource } from "../resource.model";
- export class User extends Resource{
- username: string;
- email: string;
- name: string;
- surname: string;
- phoneNumber: string;
- password?: string;
- active : boolean;
- }
Add Comment
Please, Sign In to add comment