Browse Source

Get replay upload working with additonal data

old-project-state
Dan 2 years ago
parent
commit
49d65bff5d
  1. 2
      backend/routes/upload-replay.js
  2. 33
      server.js
  3. 5
      src/app/components/upload-replay-dialog/upload-replay-dialog.component.ts
  4. 8
      src/app/services/api.service.ts

2
backend/routes/upload-replay.js

@ -10,6 +10,6 @@ filename: (req, file, cb) => {
});
// Create the multer instance
const upload = multer({ storage: storage });
const upload = multer({ storage: storage});
module.exports = upload;

33
server.js

@ -37,6 +37,7 @@ class Race extends Document {
this.endDate = Date;
this.mapName = String;
this.mapLink = String;
this.mapUID = String;
this.season = Season;
}
}
@ -48,7 +49,7 @@ class RaceResult extends Document {
this.race = Race;
this.racer = Racer;
this.timeInSeconds = Number;
this.timeInMilliseconds = Number;
this.replayPath = String;
}
}
@ -200,23 +201,39 @@ app.post('/api/race/add', verifyToken, async (req, res) => {
});
// route for handling requests from the Angular client
app.post('/api/upload-replay', upload.single('file'), (req, res) => {
app.post('/api/upload-replay', upload.single('file'), async (req, res) => {
let file = req.file;
console.log(req.body);
const { seasonId } = req.body;
console.log("File uploaded: ", req.file);
fs.readFile(file.path, function(err, buffer)
await fs.readFile(file.path, async function(err, buffer)
{
buff = new AdvancableBuffer(buffer);
header = new gbxHeader()
header = new gbxHeader();
header.parse(buff);
if (header.is_vaild == false)
{
return;
}
console.log(header);
replay = new gbxReplay();
replay.parse(buff);
})
let currentRacer = await Racer.findOne({gameHandle: replay.gamerHandle});
console.log(currentRacer);
if (currentRacer == undefined)
{
currentRacer = await Racer.create({name: "DanH", gameHandle: replay.gamerHandle});
currentRacer.save();
}
let race = await Race.findOne({season: seasonId, mapUID: replay.mapUID})
res.status(200);
});
result = await RaceResult.create({race: race, racer: currentRacer, timeInMilliseconds: replay.bestTime, replayPath: file.destination});
result.save();
res.status(200);
});
});
app.listen(3000, () => {
console.log('Server listening on port 3000');

5
src/app/components/upload-replay-dialog/upload-replay-dialog.component.ts

@ -9,7 +9,7 @@ import { ApiService } from '../../services/api.service';
})
export class UploadReplayDialogComponent {
fileName = '';
seasonId: string = '';
seasonId: any;
constructor(private apiService: ApiService,
@Inject(MAT_DIALOG_DATA) seasonId: string
@ -26,7 +26,8 @@ export class UploadReplayDialogComponent {
this.fileName = file.name;
let formData = new FormData();
formData.append("file", file);
formData.append("seasonID", this.seasonId);
let local = this.seasonId.seasonId;
formData.append("seasonId", local);
const upload$ = this.apiService.postReplayUpload(formData);
upload$.subscribe();
}

8
src/app/services/api.service.ts

@ -26,6 +26,14 @@ export class ApiService
this.server_route+'/api/upload-replay', file, { headers });
}
postReplayUploadV2(file: FormData, seasonId: string)
{
const headers = new HttpHeaders();
headers.append('Content-Type', 'multipart/form-data');
return this.http.post(
this.server_route+'/api/upload-replay', { file, seasonId }, { headers });
}
getSeasons()
{
return this.http.get(

Loading…
Cancel
Save