Skip to content

Commit 5a0a545

Browse files
committed
Added http client
1 parent 6ce75df commit 5a0a545

2 files changed

Lines changed: 91 additions & 18 deletions

File tree

HttpGamepadInput/ViewModels/GamepadViewModel.cs

Lines changed: 81 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System.Windows.Input;
22
using System.Diagnostics;
3+
using System.Net.Http.Headers;
4+
using System.Text;
35
using HttpGamepadInput.BaseClasses;
46

57
namespace HttpGamepadInput.ViewModels;
@@ -36,8 +38,24 @@ public class GamepadViewModel : BindableBase
3638

3739
public ICommand BButtonPressedCommand { get; }
3840
public ICommand BButtonReleasedCommand { get; }
41+
3942
#endregion
43+
44+
private HttpClient _client = new HttpClient();
4045

46+
private string _serverUrl = "http://127.0.0.1:8080/";
47+
public string ServerUrl
48+
{
49+
get => _serverUrl;
50+
set
51+
{
52+
if (SetProperty(ref _serverUrl, value))
53+
{
54+
UpdateHttpClient();
55+
}
56+
}
57+
}
58+
4159
#region ~ Constructor ~
4260
public GamepadViewModel()
4361
{
@@ -70,96 +88,141 @@ public GamepadViewModel()
7088
}
7189
#endregion
7290

91+
private void UpdateHttpClient()
92+
{
93+
_client = new HttpClient
94+
{
95+
BaseAddress = new Uri(ServerUrl)
96+
};
97+
_client.DefaultRequestHeaders.Accept.Clear();
98+
_client.DefaultRequestHeaders.Accept.Add(
99+
new MediaTypeWithQualityHeaderValue("application/json"));
100+
}
101+
102+
public async Task PostButtonStatus(string relativeUrl)
103+
{
104+
var content = new StringContent("{}", Encoding.UTF8, "application/json");
105+
106+
HttpResponseMessage response = await _client.PostAsync(relativeUrl, content);
107+
if (response.IsSuccessStatusCode)
108+
{
109+
string responseBody = await response.Content.ReadAsStringAsync();
110+
Debug.WriteLine($"Response from {relativeUrl}: {responseBody}");
111+
}
112+
else
113+
{
114+
Debug.WriteLine($"Error posting to {relativeUrl}: {response.StatusCode}");
115+
}
116+
}
117+
73118
#region ~ Commands implementstions ~
74119

75-
private void OnUpButtonPressed()
120+
private async void OnUpButtonPressed()
76121
{
77122
Debug.WriteLine("[INFO] UP pressed");
123+
await PostButtonStatus("up/pressed");
78124
}
79125

80-
private void OnUpButtonReleased()
126+
private async void OnUpButtonReleased()
81127
{
82128
Debug.WriteLine("[INFO] UP released");
129+
await PostButtonStatus("up/released");
83130
}
84131

85-
private void OnDownButtonPressed()
132+
private async void OnDownButtonPressed()
86133
{
87134
Debug.WriteLine("[INFO] DOWN pressed");
135+
await PostButtonStatus("down/pressed");
88136
}
89137

90-
private void OnDownButtonReleased()
138+
private async void OnDownButtonReleased()
91139
{
92140
Debug.WriteLine("[INFO] DOWN released");
141+
await PostButtonStatus("down/released");
93142
}
94143

95-
private void OnLeftButtonPressed()
144+
private async void OnLeftButtonPressed()
96145
{
97146
Debug.WriteLine("[INFO] LEFT pressed");
147+
await PostButtonStatus("left/pressed");
98148
}
99149

100-
private void OnLeftButtonReleased()
150+
private async void OnLeftButtonReleased()
101151
{
102152
Debug.WriteLine("[INFO] LEFT released");
153+
await PostButtonStatus("left/released");
103154
}
104155

105-
private void OnRightButtonPressed()
156+
private async void OnRightButtonPressed()
106157
{
107158
Debug.WriteLine("[INFO] RIGHT pressed");
159+
await PostButtonStatus("right/pressed");
108160
}
109161

110-
private void OnRightButtonReleased()
162+
private async void OnRightButtonReleased()
111163
{
112164
Debug.WriteLine("[INFO] RIGHT released");
165+
await PostButtonStatus("right/released");
113166
}
114167

115-
private void OnCenterButtonPressed()
168+
private async void OnCenterButtonPressed()
116169
{
117170
Debug.WriteLine("[INFO] MIDDLE pressed");
171+
await PostButtonStatus("center/pressed");
118172
}
119173

120-
private void OnCenterButtonReleased()
174+
private async void OnCenterButtonReleased()
121175
{
122176
Debug.WriteLine("[INFO] MIDDLE released");
177+
await PostButtonStatus("center/released");
123178
}
124179

125-
private void OnStartButtonPressed()
180+
private async void OnStartButtonPressed()
126181
{
127182
Debug.WriteLine("[INFO] START pressed");
183+
await PostButtonStatus("start/pressed");
128184
}
129185

130-
private void OnStartButtonReleased()
186+
private async void OnStartButtonReleased()
131187
{
132188
Debug.WriteLine("[INFO] START released");
189+
await PostButtonStatus("start/released");
133190
}
134191

135-
private void OnSelectButtonPressed()
192+
private async void OnSelectButtonPressed()
136193
{
137194
Debug.WriteLine("[INFO] SELECT pressed");
195+
await PostButtonStatus("select/pressed");
138196
}
139197

140-
private void OnSelectButtonReleased()
198+
private async void OnSelectButtonReleased()
141199
{
142200
Debug.WriteLine("[INFO] SELECT released");
201+
await PostButtonStatus("select/released");
143202
}
144203

145-
private void OnAButtonPressed()
204+
private async void OnAButtonPressed()
146205
{
147206
Debug.WriteLine("[INFO] A pressed");
207+
await PostButtonStatus("a-button/pressed");
148208
}
149209

150-
private void OnAButtonReleased()
210+
private async void OnAButtonReleased()
151211
{
152212
Debug.WriteLine("[INFO] A released");
213+
await PostButtonStatus("a-button/released");
153214
}
154215

155-
private void OnBButtonPressed()
216+
private async void OnBButtonPressed()
156217
{
157218
Debug.WriteLine("[INFO] B pressed");
219+
await PostButtonStatus("b-button/pressed");
158220
}
159221

160-
private void OnBButtonReleased()
222+
private async void OnBButtonReleased()
161223
{
162224
Debug.WriteLine("[INFO] B released");
225+
await PostButtonStatus("b-button/released");
163226
}
164227

165228
#endregion

HttpGamepadInput/Views/MainPage.xaml.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ public MainPage()
1010
InitializeComponent();
1111
}
1212

13+
protected override void OnAppearing()
14+
{
15+
base.OnAppearing();
16+
17+
if (Preferences.ContainsKey("ServerUrl"))
18+
{
19+
ViewModel.ServerUrl = Preferences.Get("ServerUrl", string.Empty);
20+
}
21+
}
22+
1323
private void AButton_OnSizeChanged(object? sender, EventArgs e)
1424
{
1525
var command = ViewModel.UpButtonPressedCommand;

0 commit comments

Comments
 (0)