public T GetData <T>(IDataId dataId) where T : class, IData { var folderId = dataId as FacebookMediaFolderId; if (folderId != null) { using (var data = new DataConnection(PublicationScope.Published)) { var album = data.Get <IFacebookAlbum>().Single(a => a.Id == folderId.Id); var id = new FacebookMediaFolderId { Id = album.Id }; var dataSourceId = _context.CreateDataSourceId(id, typeof(IMediaFileFolder)); return((new FacebookMediaFolder(album, Store.Id, dataSourceId)) as T); } } var fileId = dataId as FacebookMediaFileId; if (fileId != null) { using (var data = new DataConnection(PublicationScope.Published)) { var photo = data.Get <IFacebookPhoto>().Single(p => p.Id == fileId.Id); var album = data.Get <IFacebookAlbum>().Single(a => a.Id == fileId.AlbumId); var dataSourceId = _context.CreateDataSourceId(new FacebookMediaFileId { Id = photo.Id, AlbumId = album.Id }, typeof(IMediaFile)); return((new FacebookMediaFile(photo, album, Store.Id, dataSourceId)) as T); } } var photoId = dataId as FacebookPhotoId; if (photoId != null) { using (var data = new DataConnection(PublicationScope.Published)) { var album = data.Get <IFacebookAlbum>().SingleOrDefault(a => a.AlbumId == photoId.AlbumId); if (album != null) { var token = album.AccessToken; var client = new FacebookClient(token); dynamic photo = client.Get(photoId.Id); var id = new FacebookPhotoId { Id = photo.Id, AlbumId = album.AlbumId }; var facebookPhoto = new FacebookPhoto(_context.CreateDataSourceId(id, typeof(IFacebookPhoto))) { Id = photo.id, AlbumId = album.AlbumId, Title = photo.name ?? String.Empty }; return(facebookPhoto as T); } } } return(default(T)); }
public IQueryable <T> GetData <T>() where T : class, IData { if (typeof(T) == typeof(IMediaFileFolder)) { using (var data = new DataConnection(PublicationScope.Published)) { var list = new List <IMediaFileFolder>(); var albums = data.Get <IFacebookAlbum>(); foreach (var album in albums) { var id = new FacebookMediaFolderId { Id = album.Id }; var dataSourceId = _context.CreateDataSourceId(id, typeof(IMediaFileFolder)); var folder = new FacebookMediaFolder(album, Store.Id, dataSourceId); list.Add(folder); } return((IQueryable <T>)list.AsQueryable()); } } if (typeof(T) == typeof(IMediaFile)) { if (_cachedFacebookPhotos == null) { lock (Lock) { if (_cachedFacebookPhotos == null) { var list = new List <IMediaFile>(); using (var data = new DataConnection(PublicationScope.Published)) { var photos = data.Get <IFacebookPhoto>(); foreach (var photo in photos) { var album = data.Get <IFacebookAlbum>().Single(a => a.AlbumId == photo.AlbumId); var dataSourceId = _context.CreateDataSourceId(new FacebookMediaFileId { Id = photo.Id, AlbumId = album.Id }, typeof(IMediaFile)); var file = new FacebookMediaFile(photo, album, Store.Id, dataSourceId); list.Add(file); } } _cachedFacebookPhotos = list.AsQueryable(); } } } return((IQueryable <T>)_cachedFacebookPhotos); } if (typeof(T) == typeof(IFacebookPhoto)) { var list = new List <IFacebookPhoto>(); using (var data = new DataConnection(PublicationScope.Published)) { var albums = data.Get <IFacebookAlbum>(); foreach (var album in albums) { var token = album.AccessToken; var client = new FacebookClient(token); dynamic result = client.Get(album.AlbumId + "/photos"); foreach (var photo in result.data) { var id = new FacebookPhotoId { Id = photo.Id, AlbumId = album.AlbumId }; var dataSourceId = _context.CreateDataSourceId(id, typeof(FacebookPhoto)); var facebookPhoto = new FacebookPhoto(dataSourceId) { Id = photo.id, AlbumId = album.AlbumId, CreatedTime = DateTime.Parse(photo.created_time), UpdatedTime = DateTime.Parse(photo.updated_time), Title = photo.name ?? photo.id }; list.Add(facebookPhoto); } } return((IQueryable <T>)list.AsQueryable()); } } if (typeof(T) == typeof(IMediaFileStore)) { var store = new[] { Store }.AsQueryable(); return((IQueryable <T>)store); } return(Enumerable.Empty <T>().AsQueryable()); }