Skip to content

Commit b1d4483

Browse files
author
Justin
committed
Adding mappings for various SteamWebResponses.
1 parent 4adbe36 commit b1d4483

6 files changed

Lines changed: 99 additions & 23 deletions

File tree

SteamWebAPI2/AutoMapperConfiguration.cs

Lines changed: 69 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,85 @@ internal static class AutoMapperConfiguration
3232

3333
public static IMapper Mapper { get { return mapper; } }
3434

35+
private static SteamWebResponse<TDestination> ConstructSteamWebResponse<TSource, TDestination>(ISteamWebResponse<TSource> response)
36+
{
37+
var newResponse = new SteamWebResponse<TDestination>();
38+
newResponse.ContentLength = response.ContentLength;
39+
newResponse.ContentType = response.ContentType;
40+
newResponse.ContentTypeCharSet = response.ContentTypeCharSet;
41+
newResponse.Expires = response.Expires;
42+
newResponse.LastModified = response.LastModified;
43+
newResponse.Data = Mapper.Map<TSource, TDestination>(response.Data);
44+
return newResponse;
45+
}
46+
47+
private static void CreateSteamWebResponseMap<TSource, TDestination>(IMapperConfiguration config)
48+
{
49+
config.CreateMap<ISteamWebResponse<TSource>, ISteamWebResponse<TDestination>>()
50+
.ConstructUsing(src => ConstructSteamWebResponse<TSource, TDestination>(src));
51+
}
52+
3553
public static void Initialize()
3654
{
3755
if (config == null)
3856
{
3957
config = new MapperConfiguration(x =>
4058
{
41-
x.CreateMap<ISteamWebResponse<ServerStatusResultContainer>, ISteamWebResponse<ServerStatusModel>>();
42-
x.CreateMap<ISteamWebResponse<GameItemResultContainer>, ISteamWebResponse<IReadOnlyCollection<GameItemModel>>>();
43-
x.CreateMap<ISteamWebResponse<HeroResultContainer>, ISteamWebResponse<IReadOnlyCollection<HeroModel>>>();
44-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
45-
x.CreateMap<ISteamWebResponse<RarityResultContainer>, ISteamWebResponse<IReadOnlyCollection<RarityModel>>>();
46-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
47-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
48-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
49-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
50-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
51-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
52-
x.CreateMap<ISteamWebResponse<ItemIconPathResultContainer>, ISteamWebResponse<string>>();
59+
CreateSteamWebResponseMap<ServerStatusResultContainer, ServerStatusModel>(x);
60+
CreateSteamWebResponseMap<GameItemResultContainer, IReadOnlyCollection<GameItemModel>>(x);
61+
CreateSteamWebResponseMap<HeroResultContainer, IReadOnlyCollection<HeroModel>>(x);
62+
CreateSteamWebResponseMap<ItemIconPathResultContainer, string>(x);
63+
CreateSteamWebResponseMap<RarityResultContainer, IReadOnlyCollection<RarityModel>>(x);
64+
CreateSteamWebResponseMap<PrizePoolResultContainer, uint>(x);
65+
CreateSteamWebResponseMap<PlayerOfficialInfoResultContainer, PlayerOfficialInfoModel>(x);
66+
CreateSteamWebResponseMap<ProPlayerListResultContainer, ProPlayerDetailModel>(x);
67+
CreateSteamWebResponseMap<LeagueResultContainer, IReadOnlyCollection<LeagueModel>>(x);
68+
CreateSteamWebResponseMap<LiveLeagueGameResultContainer, IReadOnlyCollection<LiveLeagueGameModel>>(x);
69+
CreateSteamWebResponseMap<MatchDetailResultContainer, MatchDetailModel>(x);
70+
CreateSteamWebResponseMap<MatchHistoryResultContainer, MatchHistoryModel>(x);
71+
CreateSteamWebResponseMap<MatchHistoryBySequenceNumberResultContainer, IReadOnlyCollection<MatchHistoryMatchModel>>(x);
72+
CreateSteamWebResponseMap<TeamInfoResultContainer, IReadOnlyCollection<TeamInfoModel>>(x);
73+
CreateSteamWebResponseMap<EconItemResultContainer, IReadOnlyCollection<EconItemResultModel>>(x);
74+
CreateSteamWebResponseMap<SchemaResultContainer, IReadOnlyCollection<Steam.Models.DOTA2.SchemaModel>>(x);
75+
CreateSteamWebResponseMap<SchemaUrlResultContainer, IReadOnlyCollection<string>>(x);
76+
CreateSteamWebResponseMap<StoreMetaDataResultContainer, IReadOnlyCollection<StoreMetaDataModel>>(x);
77+
CreateSteamWebResponseMap<StoreStatusResultContainer, IReadOnlyCollection<uint>>(x);
78+
CreateSteamWebResponseMap<TradeHistoryResultContainer, Steam.Models.SteamEconomy.TradeHistoryModel>(x);
79+
CreateSteamWebResponseMap<TradeOffersResultContainer, Steam.Models.SteamEconomy.TradeOffersResultModel>(x);
80+
CreateSteamWebResponseMap<TradeOfferResultContainer, Steam.Models.SteamEconomy.TradeOfferResultModel>(x);
81+
CreateSteamWebResponseMap<GameClientResultContainer, GameClientResultModel>(x);
82+
CreateSteamWebResponseMap<PlayingSharedGameResultContainer, ulong?>(x);
83+
CreateSteamWebResponseMap<CommunityBadgeProgressResultContainer, IReadOnlyCollection<BadgeQuestModel>>(x);
84+
CreateSteamWebResponseMap<BadgesResultContainer, BadgesResultModel>(x);
85+
CreateSteamWebResponseMap<SteamLevelResultContainer, uint?>(x);
86+
CreateSteamWebResponseMap<OwnedGamesResultContainer, OwnedGamesResultContainer>(x);
87+
CreateSteamWebResponseMap<RecentlyPlayedGameResultContainer, RecentlyPlayedGamesResultModel>(x);
88+
CreateSteamWebResponseMap<SteamAppListResultContainer, IReadOnlyCollection<SteamAppModel>>(x);
89+
CreateSteamWebResponseMap<SteamAppUpToDateCheckResultContainer, SteamAppUpToDateCheckModel>(x);
90+
CreateSteamWebResponseMap<AssetClassInfoResultContainer, AssetClassInfoResultModel>(x);
91+
CreateSteamWebResponseMap<AssetPriceResultContainer, AssetPriceResultModel>(x);
92+
CreateSteamWebResponseMap<SteamNewsResultContainer, SteamNewsResultModel>(x);
93+
CreateSteamWebResponseMap<UGCFileDetailsResultContainer, UGCFileDetailsModel>(x);
94+
CreateSteamWebResponseMap<PlayerSummaryResultContainer, PlayerSummaryModel>(x);
95+
CreateSteamWebResponseMap<PlayerSummaryResultContainer, IReadOnlyCollection<PlayerSummaryModel>>(x);
96+
CreateSteamWebResponseMap<FriendsListResultContainer, IReadOnlyCollection<FriendModel>>(x);
97+
CreateSteamWebResponseMap<PlayerBansContainer, IReadOnlyCollection<PlayerBansModel>>(x);
98+
CreateSteamWebResponseMap<UserGroupListResultContainer, IReadOnlyCollection<ulong>>(x);
99+
CreateSteamWebResponseMap<ResolveVanityUrlResultContainer, ulong>(x);
100+
CreateSteamWebResponseMap<GlobalAchievementPercentagesResultContainer, IReadOnlyCollection<GlobalAchievementPercentageModel>>(x);
101+
CreateSteamWebResponseMap<GlobalStatsForGameResultContainer, IReadOnlyCollection<GlobalStatModel>>(x);
102+
CreateSteamWebResponseMap<CurrentPlayersResultContainer, uint>(x);
103+
CreateSteamWebResponseMap<PlayerAchievementResultContainer, PlayerAchievementResultModel>(x);
104+
CreateSteamWebResponseMap<SchemaForGameResultContainer, SchemaForGameResultModel>(x);
105+
CreateSteamWebResponseMap<UserStatsForGameResultContainer, UserStatsForGameResultModel>(x);
106+
CreateSteamWebResponseMap<SteamServerInfo, SteamServerInfoModel>(x);
107+
CreateSteamWebResponseMap<SteamApiListContainer, IReadOnlyCollection<SteamInterfaceModel>>(x);
108+
CreateSteamWebResponseMap<GoldenWrenchResultContainer, IReadOnlyCollection<GoldenWrenchModel>>(x);
53109

54110
#region Endpoint: DOTA2Econ
55111

56112
x.CreateMap<Hero, HeroModel>();
57-
x.CreateMap<HeroResultContainer, IReadOnlyCollection<HeroModel>>().ConstructUsing(
113+
x.CreateMap<HeroResultContainer, IReadOnlyCollection<HeroModel>>().ConvertUsing(
58114
src => Mapper.Map<IList<Hero>, IReadOnlyCollection<HeroModel>>(src.Result.Heroes)
59115
);
60116

SteamWebAPI2/Interfaces/EconService.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ public EconService(string steamWebApiKey, ISteamWebInterface steamWebInterface =
4747

4848
var steamWebResponse = await steamWebInterface.GetAsync<TradeHistoryResultContainer>("GetTradeHistory", 1, parameters);
4949

50-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<TradeHistoryResultContainer>, ISteamWebResponse<Steam.Models.SteamEconomy.TradeHistoryModel>>(steamWebResponse);
50+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
51+
ISteamWebResponse<TradeHistoryResultContainer>,
52+
ISteamWebResponse<Steam.Models.SteamEconomy.TradeHistoryModel>>(steamWebResponse);
5153

5254
return steamWebResponseModel;
5355
}
@@ -80,7 +82,9 @@ public EconService(string steamWebApiKey, ISteamWebInterface steamWebInterface =
8082

8183
var steamWebResponse = await steamWebInterface.GetAsync<TradeOffersResultContainer>("GetTradeOffers", 1, parameters);
8284

83-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<TradeOffersResultContainer>, ISteamWebResponse<Steam.Models.SteamEconomy.TradeOffersResultModel>>(steamWebResponse);
85+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
86+
ISteamWebResponse<TradeOffersResultContainer>,
87+
ISteamWebResponse<Steam.Models.SteamEconomy.TradeOffersResultModel>>(steamWebResponse);
8488

8589
return steamWebResponseModel;
8690
}
@@ -100,7 +104,9 @@ public EconService(string steamWebApiKey, ISteamWebInterface steamWebInterface =
100104

101105
var steamWebResponse = await steamWebInterface.GetAsync<TradeOfferResultContainer>("GetTradeOffer", 1, parameters);
102106

103-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<TradeOfferResultContainer>, ISteamWebResponse<Steam.Models.SteamEconomy.TradeOfferResultModel>>(steamWebResponse);
107+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
108+
ISteamWebResponse<TradeOfferResultContainer>,
109+
ISteamWebResponse<Steam.Models.SteamEconomy.TradeOfferResultModel>>(steamWebResponse);
104110

105111
return steamWebResponseModel;
106112
}

SteamWebAPI2/Interfaces/PlayerService.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ public async Task<ISteamWebResponse<BadgesResultModel>> GetBadgesAsync(ulong ste
9494
return null;
9595
}
9696

97-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<BadgesResultContainer>, ISteamWebResponse<BadgesResultModel>>(steamWebResponse);
97+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
98+
ISteamWebResponse<BadgesResultContainer>,
99+
ISteamWebResponse<BadgesResultModel>>(steamWebResponse);
98100

99101
return steamWebResponseModel;
100102
}
@@ -115,7 +117,9 @@ public async Task<ISteamWebResponse<BadgesResultModel>> GetBadgesAsync(ulong ste
115117
return null;
116118
}
117119

118-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<SteamLevelResultContainer>, ISteamWebResponse<uint?>>(steamWebResponse);
120+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
121+
ISteamWebResponse<SteamLevelResultContainer>,
122+
ISteamWebResponse<uint?>>(steamWebResponse);
119123

120124
return steamWebResponseModel;
121125
}
@@ -169,7 +173,9 @@ public async Task<ISteamWebResponse<OwnedGamesResultModel>> GetOwnedGamesAsync(u
169173
}
170174
}
171175

172-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<OwnedGamesResultContainer>, ISteamWebResponse<OwnedGamesResultModel>>(steamWebResponse);
176+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
177+
ISteamWebResponse<OwnedGamesResultContainer>,
178+
ISteamWebResponse<OwnedGamesResultModel>>(steamWebResponse);
173179

174180
return steamWebResponseModel;
175181
}

SteamWebAPI2/Interfaces/SteamEconomy.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ public async Task<ISteamWebResponse<AssetClassInfoResultModel>> GetAssetClassInf
4444

4545
var steamWebResponse = await steamWebInterface.GetAsync<AssetClassInfoResultContainer>("GetAssetClassInfo", 1, parameters);
4646

47-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<AssetClassInfoResultContainer>, ISteamWebResponse<AssetClassInfoResultModel>>(steamWebResponse);
47+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
48+
ISteamWebResponse<AssetClassInfoResultContainer>,
49+
ISteamWebResponse<AssetClassInfoResultModel>>(steamWebResponse);
4850

4951
return steamWebResponseModel;
5052
}
@@ -66,7 +68,9 @@ public async Task<ISteamWebResponse<AssetPriceResultModel>> GetAssetPricesAsync(
6668

6769
var steamWebResponse = await steamWebInterface.GetAsync<AssetPriceResultContainer>("GetAssetPrices", 1, parameters);
6870

69-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<AssetPriceResultContainer>, ISteamWebResponse<AssetPriceResultModel>>(steamWebResponse);
71+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
72+
ISteamWebResponse<AssetPriceResultContainer>,
73+
ISteamWebResponse<AssetPriceResultModel>>(steamWebResponse);
7074

7175
return steamWebResponseModel;
7276
}

SteamWebAPI2/Interfaces/SteamNews.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ public async Task<ISteamWebResponse<SteamNewsResultModel>> GetNewsForAppAsync(ui
4848

4949
var steamWebResponse = await steamWebInterface.GetAsync<SteamNewsResultContainer>("GetNewsForApp", 2, parameters);
5050

51-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<SteamNewsResultContainer>, ISteamWebResponse<SteamNewsResultModel>>(steamWebResponse);
51+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
52+
ISteamWebResponse<SteamNewsResultContainer>,
53+
ISteamWebResponse<SteamNewsResultModel>>(steamWebResponse);
5254

5355
return steamWebResponseModel;
5456
}

SteamWebAPI2/Interfaces/SteamRemoteStorage.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ public async Task<ISteamWebResponse<UGCFileDetailsModel>> GetUGCFileDetailsAsync
4444
{
4545
var steamWebResponse = await steamWebInterface.GetAsync<UGCFileDetailsResultContainer>("GetUGCFileDetails", 1, parameters);
4646

47-
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<ISteamWebResponse<UGCFileDetailsResultContainer>, ISteamWebResponse<UGCFileDetailsModel>>(steamWebResponse);
47+
var steamWebResponseModel = AutoMapperConfiguration.Mapper.Map<
48+
ISteamWebResponse<UGCFileDetailsResultContainer>,
49+
ISteamWebResponse<UGCFileDetailsModel>>(steamWebResponse);
4850

4951
return steamWebResponseModel;
5052
}

0 commit comments

Comments
 (0)