Deploy Promiscuity Auth API / deploy (push) Failing after 20s
Deploy Promiscuity Character API / deploy (push) Failing after 19s
Deploy Promiscuity Crafting API / deploy (push) Failing after 20s
Deploy Promiscuity Inventory API / deploy (push) Failing after 19s
Deploy Promiscuity Locations API / deploy (push) Failing after 19s
Deploy Promiscuity Mail API / deploy (push) Failing after 20s
Deploy Promiscuity World API / deploy (push) Failing after 20s
k8s smoke test / test (push) Failing after 20s
50 lines
2.4 KiB
C#
50 lines
2.4 KiB
C#
using AuthApi.Models;
|
|
using MongoDB.Driver;
|
|
|
|
namespace AuthApi.Services;
|
|
|
|
public class SteamAuthTransactionService
|
|
{
|
|
private readonly IMongoCollection<SteamAuthTransaction> _transactions;
|
|
|
|
public SteamAuthTransactionService(IConfiguration cfg)
|
|
{
|
|
var connectionString = cfg["MongoDB:ConnectionString"] ?? "mongodb://127.0.0.1:27017";
|
|
var databaseName = cfg["MongoDB:DatabaseName"] ?? "GameDb";
|
|
var database = new MongoClient(connectionString).GetDatabase(databaseName);
|
|
_transactions = database.GetCollection<SteamAuthTransaction>("SteamAuthTransactions");
|
|
var ttl = Builders<SteamAuthTransaction>.IndexKeys.Ascending(x => x.ExpiresUtc);
|
|
_transactions.Indexes.CreateOne(new CreateIndexModel<SteamAuthTransaction>(ttl,
|
|
new CreateIndexOptions { ExpireAfter = TimeSpan.Zero }));
|
|
}
|
|
|
|
public Task CreateAsync(SteamAuthTransaction transaction) => _transactions.InsertOneAsync(transaction);
|
|
|
|
public async Task<SteamAuthTransaction?> GetAsync(string id) =>
|
|
await _transactions.Find(x => x.Id == id).FirstOrDefaultAsync();
|
|
|
|
public async Task<bool> MarkVerifiedAsync(string id, string steamId, string status, string? userId)
|
|
{
|
|
var filter = Builders<SteamAuthTransaction>.Filter.Eq(x => x.Id, id) &
|
|
Builders<SteamAuthTransaction>.Filter.Eq(x => x.Status, "pending") &
|
|
Builders<SteamAuthTransaction>.Filter.Gt(x => x.ExpiresUtc, DateTime.UtcNow);
|
|
var update = Builders<SteamAuthTransaction>.Update
|
|
.Set(x => x.SteamId, steamId)
|
|
.Set(x => x.Status, status)
|
|
.Set(x => x.UserId, userId);
|
|
return (await _transactions.UpdateOneAsync(filter, update)).ModifiedCount == 1;
|
|
}
|
|
|
|
public async Task<bool> MarkCompleteAsync(string id, string steamId, string userId)
|
|
{
|
|
var filter = Builders<SteamAuthTransaction>.Filter.Eq(x => x.Id, id) &
|
|
Builders<SteamAuthTransaction>.Filter.Eq(x => x.Status, "requires_account") &
|
|
Builders<SteamAuthTransaction>.Filter.Eq(x => x.SteamId, steamId) &
|
|
Builders<SteamAuthTransaction>.Filter.Gt(x => x.ExpiresUtc, DateTime.UtcNow);
|
|
var update = Builders<SteamAuthTransaction>.Update
|
|
.Set(x => x.Status, "complete")
|
|
.Set(x => x.UserId, userId);
|
|
return (await _transactions.UpdateOneAsync(filter, update)).ModifiedCount == 1;
|
|
}
|
|
}
|