package mediabrowser.apiinteraction; import mediabrowser.apiinteraction.device.IDevice; import mediabrowser.apiinteraction.http.HttpHeaders; import mediabrowser.model.apiclient.ApiHelpers; import mediabrowser.model.extensions.*; import mediabrowser.model.drawing.*; import mediabrowser.model.dto.*; import mediabrowser.model.entities.*; import mediabrowser.model.livetv.*; import mediabrowser.model.logging.*; import mediabrowser.model.querying.*; import mediabrowser.model.serialization.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; /** Provides api methods that are usable on all platforms */ public abstract class BaseApiClient { //C# TO JAVA CONVERTER TODO TASK: Events are not available in Java: // public event EventHandler ServerLocationChanged; private void OnServerLocationChanged() { //if (ServerLocationChanged != null) //{ //ServerLocationChanged(this, EventArgs.Empty); //} } protected ILogger Logger; /** Gets the json serializer. <value>The json serializer.</value> */ protected IJsonSerializer jsonSerializer; public final IJsonSerializer getJsonSerializer() { return jsonSerializer; } public final void setJsonSerializer(IJsonSerializer value) { jsonSerializer = value; } /** If specified this will be used as a default when an explicit value is not specified. */ private Integer privateImageQuality = null; public final Integer getImageQuality() { return privateImageQuality; } public final void setImageQuality(Integer value) { privateImageQuality = value; } protected BaseApiClient(ILogger logger, IJsonSerializer jsonSerializer, String serverAddress, String clientName, IDevice device, String applicationVersion) { if (logger == null) { throw new IllegalArgumentException("logger"); } if (jsonSerializer == null) { throw new IllegalArgumentException("jsonSerializer"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(serverAddress)) { throw new IllegalArgumentException("serverAddress"); } setJsonSerializer(jsonSerializer); Logger = logger; setClientName(clientName); this.device = device; setApplicationVersion(applicationVersion); setServerAddress(serverAddress); } protected BaseApiClient(ILogger logger, IJsonSerializer jsonSerializer, String serverAddress, String accessToken) { if (logger == null) { throw new IllegalArgumentException("logger"); } if (jsonSerializer == null) { throw new IllegalArgumentException("jsonSerializer"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(serverAddress)) { throw new IllegalArgumentException("serverAddress"); } setJsonSerializer(jsonSerializer); Logger = logger; setAccessToken(accessToken); setServerAddress(serverAddress); } /** Gets the name of the server host. <value>The name of the server host.</value> */ private String privateServerAddress; public final String getServerAddress() { return privateServerAddress; } protected void setServerAddress(String value) { privateServerAddress = value; } /** Changes the server location. @param address The address. */ public final void ChangeServerLocation(String address) { setServerAddress(address); SetAuthenticationInfo(null, null); OnServerLocationChanged(); } private IDevice device; public final IDevice getDevice() { return device; } /** Gets or sets the type of the client. <value>The type of the client.</value> */ private String privateClientName; public final String getClientName() { return privateClientName; } public final void setClientName(String value) { privateClientName = value; } public final String getDeviceName() { return getDevice().getDeviceName(); } /** Gets or sets the application version. <value>The application version.</value> */ private String privateApplicationVersion; public final String getApplicationVersion() { return privateApplicationVersion; } public final void setApplicationVersion(String value) { privateApplicationVersion = value; } public final String getDeviceId() { return getDevice().getDeviceId(); } /** Gets or sets the access token. <value>The access token.</value> */ private String privateAccessToken; public final String getAccessToken() { return privateAccessToken; } private void setAccessToken(String value) { privateAccessToken = value; } /** Gets or sets the current user id. <value>The current user id.</value> */ private String privateCurrentUserId; public final String getCurrentUserId() { return privateCurrentUserId; } private void setCurrentUserId(String value) { privateCurrentUserId = value; } /** Gets the current api url based on hostname and port. <value>The API URL.</value> */ public final String getApiUrl() { return getServerAddress() + "/emby"; } /** Gets the name of the slug. @param name The name. @return System.String. */ protected final String GetSlugName(String name) { return ApiHelpers.GetSlugName(name); } /** Gets the name of the authorization scheme. <value>The name of the authorization scheme.</value> */ protected final String getAuthorizationScheme() { return "MediaBrowser"; } /** Gets the authorization header parameter. <value>The authorization header parameter.</value> */ protected final String getAuthorizationParameter() { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(getClientName()) && tangible.DotNetToJavaStringHelper.isNullOrEmpty(getDeviceId()) && tangible.DotNetToJavaStringHelper.isNullOrEmpty(getDeviceName())) { return ""; } //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String header = String.format("Client=\"%1$s\", DeviceId=\"%2$s\", Device=\"%3$s\", Version=\"%4$s\"", getClientName(), getDeviceId(), getDeviceName(), getApplicationVersion()); if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(getCurrentUserId())) { header += String.format(", UserId=\"%1$s\"", getCurrentUserId()); } return header; } /** Gets the API URL. @param handler The handler. @return System.String. @exception System.ArgumentNullException handler */ public final String GetApiUrl(String handler) { return GetApiUrl(handler, new QueryStringDictionary()); } protected mediabrowser.apiinteraction.http.HttpHeaders HttpHeaders = new HttpHeaders(); public void SetAuthenticationInfo(String accessToken, String userId) { setCurrentUserId(userId); setAccessToken(accessToken); ResetHttpHeaders(); } public void ClearAuthenticationInfo() { setCurrentUserId(null); setAccessToken(null); ResetHttpHeaders(); } public void SetAuthenticationInfo(String accessToken) { setCurrentUserId(null); setAccessToken(accessToken); ResetHttpHeaders(); } protected void ResetHttpHeaders() { HttpHeaders.SetAccessToken(getAccessToken()); String authValue = getAuthorizationParameter(); if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(authValue)) { ClearHttpRequestHeader("Authorization"); SetAuthorizationHttpRequestHeader(null, null); } else { SetAuthorizationHttpRequestHeader(getAuthorizationScheme(), authValue); } } protected void SetAuthorizationHttpRequestHeader(String scheme, String parameter){ HttpHeaders.setAuthorizationScheme(scheme); HttpHeaders.setAuthorizationParameter(parameter); } private void ClearHttpRequestHeader(String name) { HttpHeaders.remove(name); } /** Gets the API URL. @param handler The handler. @param queryString The query string. @return System.String. */ public final String GetApiUrl(String handler, QueryStringDictionary queryString) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(handler)) { throw new IllegalArgumentException("handler"); } if (queryString == null) { throw new IllegalArgumentException("queryString"); } if (handler.indexOf("/") != 0) { handler = "/" + handler; } return queryString.GetUrl(getApiUrl() + handler); } public final String GetSubtitleUrl(SubtitleDownloadOptions options) { if (options == null) { throw new IllegalArgumentException("options"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(options.getMediaSourceId())) { throw new IllegalArgumentException("options"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(options.getItemId())) { throw new IllegalArgumentException("options"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(options.getFormat())) { throw new IllegalArgumentException("options"); } return GetApiUrl("Videos/" + options.getItemId() + "/" + options.getMediaSourceId() + "/Subtitles/" + options.getStreamIndex() + "/Stream." + options.getFormat()); } /** Creates a url to return a list of items @param query The query. @return System.String. @exception System.ArgumentNullException query */ protected final String GetItemListUrl(ItemQuery query) { if (query == null) { throw new IllegalArgumentException("query"); } QueryStringDictionary dict = new QueryStringDictionary (); dict.AddIfNotNullOrEmpty("ParentId", query.getParentId()); dict.AddIfNotNull("StartIndex", query.getStartIndex()); dict.AddIfNotNull("Limit", query.getLimit()); dict.AddIfNotNull("SortBy", query.getSortBy()); dict.AddIfNotNull("sortOrder", query.getSortOrder()); dict.AddIfNotNull("SeriesStatuses", query.getSeriesStatuses()); dict.AddIfNotNull("Fields", query.getFields()); dict.AddIfNotNull("Filters", query.getFilters()); dict.AddIfNotNull("ImageTypes", query.getImageTypes()); dict.AddIfNotNull("Is3D", query.getIs3D()); dict.AddIfNotNull("AirDays", query.getAirDays()); dict.AddIfNotNull("VideoTypes", query.getVideoTypes()); dict.AddIfNotNullOrEmpty("MinOfficialRating", query.getMinOfficialRating()); dict.AddIfNotNullOrEmpty("MaxOfficialRating", query.getMaxOfficialRating()); dict.Add("recursive", query.getRecursive()); dict.AddIfNotNull("MinIndexNumber", query.getMinIndexNumber()); dict.AddIfNotNull("MediaTypes", query.getMediaTypes()); dict.AddIfNotNull("Genres", query.getGenres(), "|"); dict.AddIfNotNull("Ids", query.getIds()); dict.AddIfNotNull("StudioIds", query.getStudioIds(), "|"); dict.AddIfNotNull("ExcludeItemTypes", query.getExcludeItemTypes()); dict.AddIfNotNull("IncludeItemTypes", query.getIncludeItemTypes()); dict.AddIfNotNull("ArtistIds", query.getArtistIds()); dict.AddIfNotNull("IsPlayed", query.getIsPlayed()); dict.AddIfNotNull("IsInBoxSet", query.getIsInBoxSet()); dict.AddIfNotNull("PersonIds", query.getPersonIds()); dict.AddIfNotNull("PersonTypes", query.getPersonTypes()); dict.AddIfNotNull("Years", query.getYears()); dict.AddIfNotNull("ParentIndexNumber", query.getParentIndexNumber()); dict.AddIfNotNull("IsHD", query.getIsHD()); dict.AddIfNotNull("HasParentalRating", query.getHasParentalRating()); dict.AddIfNotNullOrEmpty("SearchTerm", query.getSearchTerm()); dict.AddIfNotNull("MinCriticRating", query.getMinCriticRating()); dict.AddIfNotNull("MinCommunityRating", query.getMinCommunityRating()); dict.AddIfNotNull("MinPlayers", query.getMinPlayers()); dict.AddIfNotNull("MaxPlayers", query.getMaxPlayers()); dict.AddIfNotNullOrEmpty("NameStartsWithOrGreater", query.getNameStartsWithOrGreater()); dict.AddIfNotNullOrEmpty("NameStartsWith", query.getNameStartsWith()); dict.AddIfNotNullOrEmpty("NameLessThan", query.getNameLessThan()); dict.AddIfNotNullOrEmpty("AlbumArtistStartsWithOrGreater", query.getAlbumArtistStartsWithOrGreater()); dict.AddIfNotNull("LocationTypes", query.getLocationTypes()); dict.AddIfNotNull("ExcludeLocationTypes", query.getExcludeLocationTypes()); dict.AddIfNotNull("IsMissing", query.getIsMissing()); dict.AddIfNotNull("IsUnaired", query.getIsUnaired()); dict.AddIfNotNull("IsVirtualUnaired", query.getIsVirtualUnaired()); dict.AddIfNotNull("EnableImages", query.getEnableImages()); dict.AddIfNotNull("ImageTypeLimit", query.getImageTypeLimit()); dict.AddIfNotNull("EnableImageTypes", query.getEnableImageTypes()); dict.AddIfNotNull("AiredDuringSeason", query.getAiredDuringSeason()); if (!query.getEnableTotalRecordCount()) { dict.Add("EnableTotalRecordCount", "false"); } return GetApiUrl("Users/" + query.getUserId() + "/Items", dict); } /** Gets the next up. @param query The query. @return System.String. @exception System.ArgumentNullException query */ protected final String GetNextUpUrl(NextUpQuery query) { if (query == null) { throw new IllegalArgumentException("query"); } QueryStringDictionary dict = new QueryStringDictionary (); dict.AddIfNotNull("Fields", query.getFields()); dict.AddIfNotNull("Limit", query.getLimit()); dict.AddIfNotNullOrEmpty("ParentId", query.getParentId()); dict.AddIfNotNull("StartIndex", query.getStartIndex()); dict.Add("UserId", query.getUserId()); dict.AddIfNotNullOrEmpty("SeriesId", query.getSeriesId()); dict.AddIfNotNull("EnableImages", query.getEnableImages()); dict.AddIfNotNull("ImageTypeLimit", query.getImageTypeLimit()); dict.AddIfNotNull("EnableImageTypes", query.getEnableImageTypes()); return GetApiUrl("Shows/NextUp", dict); } /** Gets the similar item list URL. @param query The query. @param type The type. @return System.String. @exception System.ArgumentNullException query or type */ protected final String GetSimilarItemListUrl(SimilarItemsQuery query, String type) { if (query == null) { throw new IllegalArgumentException("query"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(type)) { throw new IllegalArgumentException("type"); } QueryStringDictionary dict = new QueryStringDictionary (); dict.AddIfNotNull("Limit", query.getLimit()); dict.AddIfNotNullOrEmpty("UserId", query.getUserId()); dict.AddIfNotNull("Fields", query.getFields()); if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(query.getId())) { throw new IllegalArgumentException("query"); } return GetApiUrl(type + "/" + query.getId() + "/Similar", dict); } /** Gets the instant mix URL. @param query The query. @param type The type. @return System.String. @exception System.ArgumentNullException query or type */ protected final String GetInstantMixUrl(SimilarItemsQuery query, String type) { if (query == null) { throw new IllegalArgumentException("query"); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(type)) { throw new IllegalArgumentException("type"); } QueryStringDictionary dict = new QueryStringDictionary (); dict.AddIfNotNull("Limit", query.getLimit()); dict.AddIfNotNullOrEmpty("UserId", query.getUserId()); dict.AddIfNotNull("Fields", query.getFields()); if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(query.getId())) { throw new IllegalArgumentException("query"); } return GetApiUrl(type + "/" + query.getId() + "/InstantMix", dict); } /** Gets the item by name list URL. @param type The type. @param query The query. @return System.String. @exception System.ArgumentNullException query */ protected final String GetItemByNameListUrl(String type, ItemsByNameQuery query) { if (query == null) { throw new IllegalArgumentException("query"); } QueryStringDictionary dict = new QueryStringDictionary(); dict.AddIfNotNullOrEmpty("ParentId", query.getParentId()); dict.Add("UserId", query.getUserId()); dict.AddIfNotNull("StartIndex", query.getStartIndex()); dict.AddIfNotNull("Limit", query.getLimit()); dict.AddIfNotNull("SortBy", query.getSortBy()); dict.AddIfNotNull("sortOrder", query.getSortOrder()); dict.AddIfNotNull("IsPlayed", query.getIsPlayed()); dict.AddIfNotNull("Fields", query.getFields()); dict.AddIfNotNull("Filters", query.getFilters()); dict.AddIfNotNull("ImageTypes", query.getImageTypes()); dict.Add("recursive", query.getRecursive()); dict.AddIfNotNull("MediaTypes", query.getMediaTypes()); dict.AddIfNotNull("ExcludeItemTypes", query.getExcludeItemTypes()); dict.AddIfNotNull("IncludeItemTypes", query.getIncludeItemTypes()); dict.AddIfNotNullOrEmpty("NameLessThan", query.getNameLessThan()); dict.AddIfNotNullOrEmpty("NameStartsWith", query.getNameStartsWith()); dict.AddIfNotNullOrEmpty("NameStartsWithOrGreater", query.getNameStartsWithOrGreater()); dict.AddIfNotNull("EnableImages", query.getEnableImages()); dict.AddIfNotNull("ImageTypeLimit", query.getImageTypeLimit()); dict.AddIfNotNull("EnableImageTypes", query.getEnableImageTypes()); return GetApiUrl(type, dict); } /** Gets the image URL. @param baseUrl The base URL. @param options The options. @param queryParams The query params. @return System.String. @exception System.ArgumentNullException options */ private String GetImageUrl(String baseUrl, ImageOptions options, QueryStringDictionary queryParams) { if (options == null) { throw new IllegalArgumentException("options"); } if (queryParams == null) { throw new IllegalArgumentException("queryParams"); } if (options.getImageIndex() != null) { baseUrl += "/" + options.getImageIndex().intValue(); } queryParams.AddIfNotNull("Width", options.getWidth()); queryParams.AddIfNotNull("Height", options.getHeight()); queryParams.AddIfNotNull("MaxWidth", options.getMaxWidth()); queryParams.AddIfNotNull("MaxHeight", options.getMaxHeight()); queryParams.AddIfNotNull("Quality", (options.getQuality() != null) ? options.getQuality() : getImageQuality()); queryParams.AddIfNotNullOrEmpty("Tag", options.getTag()); queryParams.AddIfNotNull("CropWhitespace", options.getCropWhitespace()); queryParams.Add("EnableImageEnhancers", options.getEnableImageEnhancers()); if (options.getFormat() != null) { queryParams.Add("Format", options.getFormat().toString()); } if (options.getAddPlayedIndicator()) { queryParams.Add("AddPlayedIndicator", true); } queryParams.AddIfNotNull("UnPlayedCount", options.getUnPlayedCount()); queryParams.AddIfNotNull("PercentPlayed", options.getPercentPlayed()); queryParams.AddIfNotNullOrEmpty("BackgroundColor", options.getBackgroundColor()); return GetApiUrl(baseUrl, queryParams); } /** Gets the image URL. @param item The item. @param options The options. @return System.String. */ public final String GetImageUrl(BaseItemDto item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setTag(GetImageTag(item, options)); return GetImageUrl(item.getId(), options); } public final String GetImageUrl(ChannelInfoDto item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setTag(item.getImageTags().get(options.getImageType())); return GetImageUrl(item.getId(), options); } /** Gets an image url that can be used to download an image from the api @param itemId The Id of the item @param options The options. @return System.String. @exception System.ArgumentNullException itemId */ public final String GetImageUrl(String itemId, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(itemId)) { throw new IllegalArgumentException("itemId"); } String url = "Items/" + itemId + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** Gets the user image URL. @param user The user. @param options The options. @return System.String. @exception System.ArgumentNullException user */ public final String GetUserImageUrl(UserDto user, ImageOptions options) { if (user == null) { throw new IllegalArgumentException("user"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setTag(user.getPrimaryImageTag()); return GetUserImageUrl(user.getId(), options); } /** Gets an image url that can be used to download an image from the api @param userId The Id of the user @param options The options. @return System.String. @exception System.ArgumentNullException userId */ public final String GetUserImageUrl(String userId, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(userId)) { throw new IllegalArgumentException("userId"); } String url = "Users/" + userId + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** Gets the person image URL. @param item The item. @param options The options. @return System.String. @exception System.ArgumentNullException item */ public final String GetPersonImageUrl(BaseItemPerson item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setTag(item.getPrimaryImageTag()); return GetImageUrl(item.getId(), options); } /** Gets the image tag. @param item The item. @param options The options. @return System.String. */ private String GetImageTag(BaseItemDto item, ImageOptions options) { if (options.getImageType() == ImageType.Backdrop) { return item.getBackdropImageTags().get((options.getImageIndex() != null) ? options.getImageIndex() : 0); } if (options.getImageType() == ImageType.Screenshot) { return item.getScreenshotImageTags().get((options.getImageIndex() != null) ? options.getImageIndex() : 0); } if (options.getImageType() == ImageType.Chapter) { return item.getChapters().get((options.getImageIndex() != null) ? options.getImageIndex() : 0).getImageTag(); } return item.getImageTags().get(options.getImageType()); } /** Gets an image url that can be used to download an image from the api @param name The name. @param options The options. @return System.String. @exception System.ArgumentNullException name */ public final String GetGenreImageUrl(String name, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(name)) { throw new IllegalArgumentException("name"); } String url = "Genres/" + GetSlugName(name) + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** Gets the music genre image URL. @param name The name. @param options The options. @return System.String. @exception System.ArgumentNullException name */ public final String GetMusicGenreImageUrl(String name, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(name)) { throw new IllegalArgumentException("name"); } String url = "MusicGenres/" + GetSlugName(name) + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** Gets the game genre image URL. @param name The name. @param options The options. @return System.String. @exception System.ArgumentNullException name */ public final String GetGameGenreImageUrl(String name, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(name)) { throw new IllegalArgumentException("name"); } String url = "GameGenres/" + GetSlugName(name) + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** Gets an image url that can be used to download an image from the api @param name The name. @param options The options. @return System.String. @exception System.ArgumentNullException name */ public final String GetStudioImageUrl(String name, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(name)) { throw new IllegalArgumentException("name"); } String url = "Studios/" + GetSlugName(name) + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** Gets the artist image URL. @param name The name. @param options The options. @return System.String. @exception System.ArgumentNullException name */ public final String GetArtistImageUrl(String name, ImageOptions options) { if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(name)) { throw new IllegalArgumentException("name"); } String url = "Artists/" + GetSlugName(name) + "/Images/" + options.getImageType(); return GetImageUrl(url, options, new QueryStringDictionary()); } /** This is a helper to get a list of backdrop url's from a given ApiBaseItemWrapper. If the actual item does not have any backdrops it will return backdrops from the first parent that does. @param item A given item. @param options The options. @return System.String[][]. @exception System.ArgumentNullException item */ public final String[] GetBackdropImageUrls(BaseItemDto item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setImageType(ImageType.Backdrop); String backdropItemId; java.util.ArrayList<String> backdropImageTags; if (item.getBackdropImageTags() == null || item.getBackdropImageTags().size() == 0) { backdropItemId = item.getParentBackdropItemId(); backdropImageTags = item.getParentBackdropImageTags(); } else { backdropItemId = item.getId(); backdropImageTags = item.getBackdropImageTags(); } if (tangible.DotNetToJavaStringHelper.isNullOrEmpty(backdropItemId)) { return new String[] { }; } String[] files = new String[backdropImageTags.size()]; for (int i = 0; i < backdropImageTags.size(); i++) { options.setImageIndex(i); options.setTag(backdropImageTags.get(i)); files[i] = GetImageUrl(backdropItemId, options); } return files; } /** This is a helper to get the logo image url from a given ApiBaseItemWrapper. If the actual item does not have a logo, it will return the logo from the first parent that does, or null. @param item A given item. @param options The options. @return System.String. @exception System.ArgumentNullException item */ public final String GetLogoImageUrl(BaseItemDto item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setImageType(ImageType.Logo); //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String logoItemId = item.getHasLogo() ? item.getId() : item.getParentLogoItemId(); //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String imageTag = item.getHasLogo() ? item.getImageTags().get(ImageType.Logo) : item.getParentLogoImageTag(); if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(logoItemId)) { options.setTag(imageTag); return GetImageUrl(logoItemId, options); } return null; } public final String GetThumbImageUrl(BaseItemDto item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setImageType(ImageType.Thumb); //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String itemId = item.getHasThumb() ? item.getId() : item.getSeriesThumbImageTag() != null ? item.getSeriesId() : item.getParentThumbItemId(); //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String imageTag = item.getHasThumb() ? item.getImageTags().get(ImageType.Thumb) : (item.getSeriesThumbImageTag() != null) ? item.getSeriesThumbImageTag() : item.getParentThumbImageTag(); if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(itemId)) { options.setTag(imageTag); return GetImageUrl(itemId, options); } return null; } /** This is a helper to get the art image url from a given BaseItemDto. If the actual item does not have a logo, it will return the logo from the first parent that does, or null. @param item A given item. @param options The options. @return System.String. @exception System.ArgumentNullException item */ public final String GetArtImageUrl(BaseItemDto item, ImageOptions options) { if (item == null) { throw new IllegalArgumentException("item"); } if (options == null) { throw new IllegalArgumentException("options"); } options.setImageType(ImageType.Art); //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String artItemId = item.getHasArtImage() ? item.getId() : item.getParentArtItemId(); //C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java: String imageTag = item.getHasArtImage() ? item.getImageTags().get(ImageType.Art) : item.getParentArtImageTag(); if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(artItemId)) { options.setTag(imageTag); return GetImageUrl(artItemId, options); } return null; } protected final <T> T DeserializeFromString(String stream, java.lang.Class type) { return getJsonSerializer().DeserializeFromString(stream, type); } /** Serializers to json. @param obj The obj. @return System.String. */ protected final String SerializeToJson(Object obj) { return getJsonSerializer().SerializeToString(obj); } /** Adds the data format. @param url The URL. @return System.String. */ protected final String AddDataFormat(String url) { if (url == null) { throw new IllegalArgumentException("url"); } final String format = "json"; if (url.indexOf('?') == -1) { url += "?format=" + format; } else { url += "&format=" + format; } return url; } public String getIsoString(Date date){ if (date == null) { throw new IllegalArgumentException("date"); } TimeZone tz = TimeZone.getTimeZone("UTC"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); df.setTimeZone(tz); return df.format(date); } }