示例#1
0
        public DestinyCharacterResponse GetCharacterByAccountAndClass(EBungieMembershipType membership, string displayName, EDestinyClass characterClass, int[] components)
        {
            var character = GetSingleProfile(membership, displayName, components).Characters.Data.FirstOrDefault(ch => ch.Value.ClassType == characterClass).Value;

            // We call again API to get full definition of character (including stuff and not only "basic definition")s
            return(GetCharacter(membership, character.MembershipId, character.CharacterId, components));
        }
示例#2
0
        public IEnumerable <UserInfoCard> SearchDestinyPlayer(EBungieMembershipType membership, string displayName)
        {
            var request = new RestRequest("SearchDestinyPlayer/{membership}/{accountName}", Method.GET);

            request.AddUrlSegment("membership", (int)membership);
            request.AddUrlSegment("accountName", displayName);

            return(client.Execute <ApiResponse <IEnumerable <UserInfoCard> > >(request).Response);
        }
示例#3
0
        public DestinyProfileResponse GetProfile(EBungieMembershipType membership, long membershipId, int[] components)
        {
            var request = new RestRequest("{membership}/Profile/{membershipId}/?components={components}");

            request.AddUrlSegment("membership", (int)membership);
            request.AddUrlSegment("membershipId", membershipId);
            request.AddUrlSegment("components", string.Join(",", components));

            return(client.Execute <ApiResponse <DestinyProfileResponse> >(request).Response);
        }
示例#4
0
        public DestinyProfileResponse GetSingleProfile(EBungieMembershipType membership, string displayName, int[] components)
        {
            var profiles = SearchDestinyPlayer(membership, displayName);

            if (profiles.Count() != 1)
            {
                throw new System.Exception("More than one profile found or no profil found, cannot return single profile");
            }

            return(GetProfile(membership, profiles.First().MembershipId, components));
        }
示例#5
0
        /// <summary>
        /// Return an item from a character
        /// </summary>
        /// <param name="membership"></param>
        /// <param name="membershipId"></param>
        /// <param name="instanceId"></param>
        /// <param name="components"></param>
        /// <returns></returns>
        public InstanciatedItemComponent GetItem(EBungieMembershipType membership, long membershipId, long instanceId, int[] components)
        {
            var request = new RestRequest("{membership}/Profile/{membershipId}/Item/{instanceId}/?components={components}");

            request.AddUrlSegment("membership", (int)membership);
            request.AddUrlSegment("membershipId", membershipId);
            request.AddUrlSegment("instanceId", instanceId);
            request.AddUrlSegment("components", string.Join(",", components));

            return(client.Execute <ApiResponse <InstanciatedItemComponent> >(request).Response);
        }
示例#6
0
        public Item GetItem(EBungieMembershipType membershipType, long membershipId, long itemHash, long itemInstance)
        {
            var itemDescInstance = Destiny2RestApi.Instance.GetItem(membershipType, membershipId, itemInstance, new int[] { 300 });
            var itemDefinition   = Destiny2RestApi.Instance.GetDefinition <DestinyInventoryItemDefinition>(itemHash);

            var itemModel      = new Item(itemDefinition);
            var statisticsList = new List <ItemStatistic>();
            var primaryStat    = itemDescInstance.Instance.Data.PrimaryStat;


            foreach (var stat in itemDefinition.Stats.Stats)
            {
                if (stat.Value.StatHash == null)
                {
                    continue;
                }
                var statDescription = Destiny2RestApi.Instance.GetDefinition <DestinyStatDefinition>(stat.Value.StatHash);

                if (string.IsNullOrEmpty(statDescription.DisplayProperties.Name))
                {
                    continue;
                }

                var statElement = new ItemStatistic(statDescription, stat.Value);
                if (statElement.Hash == primaryStat.StatHash)
                {
                    statElement.Value = primaryStat.Value;
                    statElement.IsPrimaryStatistic = true;
                }

                statisticsList.Add(statElement);
            }

            itemModel.Statistics = statisticsList.OrderBy(elt => elt.Name);
            return(itemModel);
        }
示例#7
0
        /// <summary>
        /// Retrieve profiles based on the display name of the account
        /// </summary>
        /// <param name="membership"></param>
        /// <param name="displayName"></param>
        /// <param name="components"></param>
        /// <returns></returns>
        public IEnumerable <DestinyProfileResponse> GetProfile(EBungieMembershipType membership, string displayName, int[] components)
        {
            var profiles = SearchDestinyPlayer(membership, displayName);

            return(profiles.Select(prof => GetProfile(membership, prof.MembershipId, components)));
        }