import { injectable, inject, } from "inversify"; import { IOpenPlanetNode, IOpenPlanetNodeConfig, IAuth, IService, IGetAccessTokenParams, IGetAccessTokenError, IGetAccessTokenResponse, } from "./interfaces"; import { IAvailabilityService } from "./resources/availability/service"; import { IUserService } from "./resources/user/userService"; import { IBookmarkListService } from "./resources/bookmarkList/service"; import { IBookmarkService } from "./resources/bookmark/bookmarkService"; import { IPlaceService } from "./resources/place/service"; import { IPartnerActivityService } from "./resources/partnerActivity/service"; import { IPoiService } from "./resources/poi/service"; import { ILodgingService } from "./resources/lodging/service"; import { ITagService } from "./resources/tag/service"; import { ISearchService } from "./resources/search/service"; import * as TYPES from "./types"; import { IBlogPostService } from "./resources/blogPost/blogPostService"; import { IBlogCategoryService } from "./resources/blogCategory/blogCategoryService"; import { IBookmarkPopularityService } from "./resources/bookmarkPopularity/service"; import { IAssociationService } from "./resources/association/service"; import { IAssociationEntryService } from "./resources/associationEntry/service"; import { IVideoPlaylistService } from "./resources/videoPlaylist/service"; import { IVideoService } from "./resources/video/service"; import { IVideoSourceService } from "./resources/videoSource/service"; import { IBlacklistItemService } from "./resources/blacklistItem/service"; import { ITagAssociationService } from "./resources/tagAssociation/service"; import { IProductService } from "./resources/product/service"; @injectable() export default class Client implements IOpenPlanetNode { clientId: string; @inject(TYPES.Auth) private auth: IAuth; @inject(TYPES.AvailabilityService) availability: IAvailabilityService; @inject(TYPES.UserService) user: IUserService; @inject(TYPES.BlogPostService) blogPost: IBlogPostService; @inject(TYPES.BlogCategoryService) blogCategory: IBlogCategoryService; @inject(TYPES.BookmarkListService) bookmarkList: IBookmarkListService; @inject(TYPES.BookmarkService) bookmark: IBookmarkService; @inject(TYPES.BookmarkPopularityService) bookmarkPopularity: IBookmarkPopularityService; @inject(TYPES.LodgingService) lodging: ILodgingService; @inject(TYPES.PoiService) poi: IPoiService; @inject(TYPES.PartnerActivityService) partnerActivity: IPartnerActivityService; @inject(TYPES.PlaceService) place: IPlaceService; @inject(TYPES.TagService) tag: ITagService; @inject(TYPES.SearchService) search: ISearchService; @inject(TYPES.AssociationService) association: IAssociationService; @inject(TYPES.AssociationEntryService) associationEntry: IAssociationEntryService; @inject(TYPES.VideoService) video: IVideoService; @inject(TYPES.VideoSourceService) videoSource: IVideoSourceService; @inject(TYPES.VideoPlaylistService) videoPlaylist: IVideoPlaylistService; @inject(TYPES.BlacklistItemService) blacklistItem: IBlacklistItemService; @inject(TYPES.TagAssociationService) tagAssociation: ITagAssociationService; @inject(TYPES.ProductService) product: IProductService; public async authorize(params: IGetAccessTokenParams): Promise { const token = await this.auth.getAccessToken(params); this.setAccessToken(token.accessToken); return token; } public setAccessToken(accessToken: string) { this.user.accessToken = accessToken; this.bookmarkPopularity.accessToken = accessToken; this.bookmarkList.accessToken = accessToken; this.bookmark.accessToken = accessToken; this.poi.accessToken = accessToken; this.place.accessToken = accessToken; this.partnerActivity.accessToken = accessToken; this.tag.accessToken = accessToken; this.search.accessToken = accessToken; this.association.accessToken = accessToken; this.associationEntry.accessToken = accessToken; this.video.accessToken= accessToken; this.videoPlaylist.accessToken = accessToken; this.videoSource.accessToken = accessToken; this.blacklistItem.accessToken = accessToken; this.tagAssociation.accessToken = accessToken; this.product.accessToken = accessToken; } }