1
1
#region Using Directives
2
2
3
3
using System . Collections . Generic ;
4
- using System . Web ;
4
+ using StackExchange . NET . Helpers ;
5
5
using StackExchange . NET . Interfaces ;
6
6
using StackExchange . NET . Models ;
7
7
@@ -15,62 +15,66 @@ public partial class StackExchangeClient : IBadges
15
15
16
16
BaseResponse < Badge > IBadges . GetAllBadges ( BadgeFilters filters , string inName )
17
17
{
18
- var apiParams = filters . GetQueryParams ( ) ;
19
- var url = $ "{ _baseApiUrl } /badges?key={ _apiKey } &{ apiParams } &inname={ inName } ";
20
- var response = _httpClient . GetAsync ( url ) . Result . Content . ReadAsStringAsync ( ) . Result ;
21
- var apiResult = response . DeserializeJson < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
22
- return apiResult ;
18
+ MakeSure . ArgumentNotNullOrEmptyString ( inName , nameof ( inName ) ) ;
19
+ var url = ApiUrlBuilder
20
+ . Initialize ( _apiKey )
21
+ . ForClient ( ClientType . Badges )
22
+ . WithFilter ( filters , inName )
23
+ . GetApiUrl ( ) ;
24
+ var response = _httpClient . GetAsync ( url ) . Result . ReadAsJsonAsync < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
25
+ return response ;
23
26
}
24
27
25
28
BaseResponse < Badge > IBadges . GetBadgesByIds ( List < string > ids , BadgeFilters filters )
26
29
{
27
- var apiParams = filters . GetQueryParams ( ) ;
28
- var url = $ " { _baseApiUrl } /badges/" ;
29
- var idsToEncode = string . Join ( ";" , ids . ToArray ( ) ) ;
30
- url = url + $ " { HttpUtility . UrlEncode ( idsToEncode ) } " + $ "?key= { _apiKey } & { apiParams } " ;
31
- var response = _httpClient . GetAsync ( url ) . Result . Content . ReadAsStringAsync ( ) . Result ;
32
- var apiResult = response . DeserializeJson < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
33
- return apiResult ;
30
+ var url = ApiUrlBuilder . Initialize ( _apiKey )
31
+ . ForClient ( ClientType . Badges )
32
+ . WithFilter ( filters )
33
+ . WithIds ( ids )
34
+ . GetApiUrl ( ) ;
35
+ var response = _httpClient . GetAsync ( url ) . Result . ReadAsJsonAsync < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
36
+ return response ;
34
37
}
35
38
36
39
BaseResponse < Badge > IBadges . GetNonTaggedBadges ( List < string > ids , BadgeFilters filters )
37
40
{
38
- var apiParams = filters . GetQueryParams ( ) ;
39
- var url = $ "{ _baseApiUrl } /badges/name";
40
- var idsToEncode = string . Join ( ";" , ids . ToArray ( ) ) ;
41
- url = url + $ "{ HttpUtility . UrlEncode ( idsToEncode ) } " + $ "?key={ _apiKey } &{ apiParams } ";
42
- var response = _httpClient . GetAsync ( url ) . Result . Content . ReadAsStringAsync ( ) . Result ;
43
- var apiResult = response . DeserializeJson < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
44
- return apiResult ;
41
+ var url = ApiUrlBuilder . Initialize ( _apiKey )
42
+ . ForClient ( ClientType . Badges , "name" )
43
+ . WithFilter ( filters )
44
+ . GetApiUrl ( ) ;
45
+ var response = _httpClient . GetAsync ( url ) . Result . ReadAsJsonAsync < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
46
+ return response ;
45
47
}
46
48
47
49
BaseResponse < Badge > IBadges . GetRecentlyAwardedBadges ( BadgeFilters filters )
48
50
{
49
- var apiParams = filters . GetQueryParams ( ) ;
50
- var url = $ "{ _baseApiUrl } /badges/recipients" + $ "?key={ _apiKey } &{ apiParams } ";
51
- var response = _httpClient . GetAsync ( url ) . Result . Content . ReadAsStringAsync ( ) . Result ;
52
- var apiResult = response . DeserializeJson < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
53
- return apiResult ;
51
+ var url = ApiUrlBuilder . Initialize ( _apiKey )
52
+ . ForClient ( ClientType . Badges , "recipients" )
53
+ . WithFilter ( filters )
54
+ . GetApiUrl ( ) ;
55
+ var response = _httpClient . GetAsync ( url ) . Result . ReadAsJsonAsync < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
56
+ return response ;
54
57
}
55
58
56
59
BaseResponse < Badge > IBadges . GetRecentlyAwardedBadgesByIds ( List < string > ids , BadgeFilters filters )
57
60
{
58
- var apiParams = filters . GetQueryParams ( ) ;
59
- var url = $ " { _baseApiUrl } /badges/" ;
60
- var idsToEncode = string . Join ( ";" , ids . ToArray ( ) ) ;
61
- url = url + $ " { HttpUtility . UrlEncode ( idsToEncode ) } /recipients" + $ "?key= { _apiKey } & { apiParams } " ;
62
- var response = _httpClient . GetAsync ( url ) . Result . Content . ReadAsStringAsync ( ) . Result ;
63
- var apiResult = response . DeserializeJson < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
64
- return apiResult ;
61
+ var url = ApiUrlBuilder . Initialize ( _apiKey )
62
+ . ForClient ( ClientType . Badges )
63
+ . WithFilter ( filters )
64
+ . WithIds ( ids , "recipients" )
65
+ . GetApiUrl ( ) ;
66
+ var response = _httpClient . GetAsync ( url ) . Result . ReadAsJsonAsync < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
67
+ return response ;
65
68
}
66
69
67
70
BaseResponse < Badge > IBadges . GetAllTaggedBadges ( BadgeFilters filters , string inName )
68
71
{
69
- var apiParams = filters . GetQueryParams ( ) ;
70
- var url = $ "{ _baseApiUrl } /badges/tags" + $ "?key={ _apiKey } &{ apiParams } ";
71
- var response = _httpClient . GetAsync ( url ) . Result . Content . ReadAsStringAsync ( ) . Result ;
72
- var apiResult = response . DeserializeJson < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
73
- return apiResult ;
72
+ var url = ApiUrlBuilder . Initialize ( _apiKey )
73
+ . ForClient ( ClientType . Badges , "tags" )
74
+ . WithFilter ( filters , inName )
75
+ . GetApiUrl ( ) ;
76
+ var response = _httpClient . GetAsync ( url ) . Result . ReadAsJsonAsync < Data < Badge > > ( ) . ValidateApiResponse ( ) ;
77
+ return response ;
74
78
}
75
79
}
76
80
}
0 commit comments