11import 'dart:convert' ;
2+ import 'dart:io' ;
23
34import 'package:auth0_flutter/auth0_flutter.dart' ;
45import 'package:flutter/foundation.dart' ;
56import 'package:http/http.dart' as http;
7+ import 'package:package_info_plus/package_info_plus.dart' ;
68import 'package:scouting_dashboard_app/constants.dart' ;
79
810class LovatAPI {
@@ -117,62 +119,64 @@ class LovatAPI {
117119 }
118120 }
119121
120- Future <http. Response ?> get ( String path, { Map <String , String >? query} ) async {
122+ Future <Map <String , String >> _getHeaders ( ) async {
121123 final token = await getAccessToken ();
124+ PackageInfo packageInfo = await PackageInfo .fromPlatform ();
122125
126+ return {
127+ if (token != null ) 'Authorization' : 'Bearer $token ' ,
128+ 'X-Operating-System' : Platform .operatingSystem,
129+ 'X-App-Version' : packageInfo.version,
130+ 'X-Build-Number' : packageInfo.buildNumber,
131+ };
132+ }
133+
134+ Future <http.Response ?> get (String path, {Map <String , String >? query}) async {
123135 final uri = Uri .parse (baseUrl + path).replace (queryParameters: query);
124136
125- return await http.get (uri, headers: {
126- if (token != null ) 'Authorization' : 'Bearer $token ' ,
127- });
137+ return await http.get (uri, headers: await _getHeaders ());
128138 }
129139
130140 Future <http.Response ?> post (
131141 String path, {
132142 Map <String , dynamic >? body,
133143 Map <String , String >? query,
134144 }) async {
135- final token = await getAccessToken ();
136-
137145 final uri = Uri .parse (baseUrl + path).replace (queryParameters: query);
138146
139- return await http
140- . post ( uri, body : body != null ? jsonEncode (body) : null , headers : {
141- 'Content-Type' : 'application/json' ,
142- if (token != null ) 'Authorization' : 'Bearer $ token ' ,
143- } );
147+ return await http. post (
148+ uri,
149+ body : body != null ? jsonEncode (body) : null ,
150+ headers : await _getHeaders () ,
151+ );
144152 }
145153
146154 Future <http.Response ?> put (
147155 String path, {
148156 Map <String , dynamic >? body,
149157 Map <String , String >? query,
150158 }) async {
151- final token = await getAccessToken ();
152-
153159 final uri = Uri .parse (baseUrl + path).replace (queryParameters: query);
154160
155- return await http
156- . put ( uri, body : body != null ? jsonEncode (body) : null , headers : {
157- 'Content-Type' : 'application/json' ,
158- if (token != null ) 'Authorization' : 'Bearer $ token ' ,
159- } );
161+ return await http. put (
162+ uri,
163+ body : body != null ? jsonEncode (body) : null ,
164+ headers : await _getHeaders () ,
165+ );
160166 }
161167
162168 Future <http.Response ?> delete (
163169 String path, {
164170 Map <String , dynamic >? body,
165171 Map <String , String >? query,
166172 }) async {
167- final token = await getAccessToken ();
168-
169173 final uri = Uri .parse (baseUrl + path).replace (queryParameters: query);
170174
171- return await http
172- . delete ( uri, body : body != null ? jsonEncode (body) : null , headers : {
173- 'Content-Type' : 'application/json' ,
174- if (token != null ) 'Authorization' : 'Bearer $ token ' ,
175- } );
175+ return await http. delete (
176+ uri,
177+ body : body != null ? jsonEncode (body) : null ,
178+ headers : await _getHeaders () ,
179+ );
176180 }
177181}
178182
@@ -185,6 +189,6 @@ class LovatAPIException implements Exception {
185189 String toString () => message;
186190}
187191
188- const kProductionBaseUrl = "https://lovat-server-staging.up.railway .app" ;
192+ const kProductionBaseUrl = "https://api.lovat .app" ;
189193
190194final lovatAPI = LovatAPI (kProductionBaseUrl);
0 commit comments