Advertisement
jacekwilczynski

TS Repository

Aug 26th, 2019
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import axios, { AxiosResponse } from 'axios';
  2. import Event from 'Domain/Event/Event';
  3. import EventRepository from 'Domain/Event/EventRepository';
  4.  
  5. export default class RestEventRepository implements EventRepository {
  6.   constructor(private readonly url: string) {}
  7.  
  8.   public findEvents(): Promise<Event[]> {
  9.     return axios
  10.       .get(this.url)
  11.       .then((response: AxiosResponse<ResponseEvent[]>): Event[] => {
  12.         return this.createEvents(response.data);
  13.       });
  14.   }
  15.  
  16.   private createEvents(responseEvents: ResponseEvent[]): Event[] {
  17.     return responseEvents.map(responseEvent => {
  18.       const event = new Event(responseEvent.id);
  19.       event.title = responseEvent.title;
  20.       event.pageUrl = responseEvent.pageUrl;
  21.       return event;
  22.     });
  23.   }
  24. }
  25.  
  26. interface ResponseEvent {
  27.   id: number;
  28.   title: string;
  29.   pageUrl: string;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement