Compare commits
No commits in common. "61285d6bc4dd4b7b90fbbb530c704be8e43853d7" and "76a335109072bad0dd370c424856fb8db610823a" have entirely different histories.
61285d6bc4
...
76a3351090
@ -154,14 +154,14 @@ let getRafflesWithPurchases storeId =
|
||||
|> Sql.connect
|
||||
|> Sql.parameters [ "sid" , Sql.string storeId ]
|
||||
|> Sql.query """
|
||||
WITH raffles AS
|
||||
WITH raffles AS
|
||||
(SELECT store_id,stock,available,limit_stock,i.id AS raffle_id,name,description,icon_url,image_url,category,require_role,require_invites,sale_end,rank,
|
||||
buy_price,sell_price,rate_limit,expiration,drop_chance,can_trade,can_consume,attack_power,defense_power,class_name,max_stack,mods
|
||||
FROM store_item
|
||||
JOIN item i on store_item.item_id = i.id
|
||||
WHERE store_id = @sid AND store_item.unlisted = false)
|
||||
SELECT * FROM raffles
|
||||
FULL JOIN (SELECT item_id, count(*) AS total FROM inventory_item
|
||||
SELECT * FROM raffles
|
||||
FULL JOIN (SELECT item_id, count(*) AS total FROM inventory_item
|
||||
WHERE item_id = ANY (SELECT raffle_id FROM raffles)
|
||||
GROUP BY item_id) total_raffles ON total_raffles.item_id = raffle_id;
|
||||
"""
|
||||
|
@ -76,7 +76,7 @@ let strengthBonus attacker defender =
|
||||
|> (*) 0.01
|
||||
|> (*) 200.0 // Bonus
|
||||
|> int
|
||||
|
||||
|
||||
let runHackerBattle defender (hack : HackItem) =
|
||||
defender
|
||||
|> Player.removeExpiredActions
|
||||
@ -108,7 +108,7 @@ let updateCombatants successfulHack (attacker : PlayerData) (defender : PlayerDa
|
||||
DbService.addPlayerEvent defender.DiscordId (event true) ]
|
||||
|> Async.Parallel
|
||||
|> Async.Ignore
|
||||
|
||||
|
||||
let hackerResult successfulHack (ctx : IDiscordContext) attacker defender (hack : HackItem) =
|
||||
async {
|
||||
let prizeAmount , bonus =
|
||||
@ -120,9 +120,9 @@ let hackerResult successfulHack (ctx : IDiscordContext) attacker defender (hack
|
||||
if hack.Power < int attacker.Bank
|
||||
then gbt hack.Power , 0<GBT>
|
||||
else attacker.Bank , 0<GBT>
|
||||
|
||||
|
||||
do! updateCombatants successfulHack attacker defender hack prizeAmount
|
||||
|
||||
|
||||
let! defenderMember = ctx.GetGuild().GetMemberAsync(defender.DiscordId) |> Async.AwaitTask
|
||||
let embed = Embeds.responseSuccessfulHack2 successfulHack attacker defender (ctx.GetDiscordMember()) defenderMember prizeAmount bonus hack
|
||||
do! ctx.GetChannel().SendMessageAsync(embed)
|
||||
@ -368,7 +368,7 @@ type HackerGame() =
|
||||
[<SlashCommand("scan", "Find 5 targets connected to the network we can try to hack")>]
|
||||
member this.ScanCommand (ctx : InteractionContext) =
|
||||
enforceChannels (DiscordInteractionContext ctx) scan scan
|
||||
|
||||
|
||||
// [<SlashCommand("test-autocomplete", "Create a passive defense that will last 24 hours")>]
|
||||
member this.TestAutoComplete (ctx : InteractionContext) =
|
||||
async {
|
||||
@ -377,4 +377,4 @@ type HackerGame() =
|
||||
do! ctx.Interaction.CreateResponseAsync(InteractionResponseType.ChannelMessageWithSource, builder)
|
||||
|> Async.AwaitTask
|
||||
} |> Async.StartAsTask
|
||||
:> Task
|
||||
:> Task
|
@ -12,18 +12,16 @@ open Giraffe
|
||||
open dotenv.net
|
||||
open Npgsql.FSharp
|
||||
|
||||
DotEnv.Load(DotEnvOptions(envFilePaths = [ "../.prod.env" ], overwriteExistingVars = false))
|
||||
let prodEnv = DotEnv.Read(DotEnvOptions(envFilePaths = [ "../.prod.env"], overwriteExistingVars = false))
|
||||
|
||||
let connStr = Environment.GetEnvironmentVariable("DATABASE_URL")
|
||||
.Replace("postgresql://", "postgres://")
|
||||
.Replace("?sslmode=require", "")
|
||||
let apiKey = Environment.GetEnvironmentVariable("API_KEY")
|
||||
let ( _ , connStr ) = prodEnv.TryGetValue("DATABASE_URL")
|
||||
let ( _ , apiKey ) = prodEnv.TryGetValue("API_KEY")
|
||||
|
||||
let validateApiKey (ctx : HttpContext) =
|
||||
match ctx.TryGetRequestHeader "X-API-Key" with
|
||||
| Some key -> apiKey.Equals key
|
||||
| None -> false
|
||||
|
||||
|
||||
let accessDenied = setStatusCode 401 >=> text "Access Denied"
|
||||
let requiresApiKey = authorizeRequest validateApiKey accessDenied
|
||||
|
||||
@ -40,7 +38,7 @@ let getCurrentBalance (discordId : string) =
|
||||
| a::_ -> return Ok a
|
||||
}
|
||||
|
||||
let get (discordId : string) : HttpHandler =
|
||||
let get (discordId : string) : HttpHandler =
|
||||
fun (next : HttpFunc) (ctx : HttpContext) ->
|
||||
task {
|
||||
try
|
||||
@ -50,8 +48,8 @@ let get (discordId : string) : HttpHandler =
|
||||
with ex ->
|
||||
return! ServerErrors.internalError (json {| Error = ex.Message |}) next ctx
|
||||
}
|
||||
|
||||
let modify sign (discordId : string) : HttpHandler =
|
||||
|
||||
let modify sign (discordId : string) : HttpHandler =
|
||||
fun (next : HttpFunc) (ctx : HttpContext) ->
|
||||
task {
|
||||
let! body = ctx.BindJsonAsync<{|Amount:int|}>()
|
||||
@ -72,7 +70,7 @@ let modify sign (discordId : string) : HttpHandler =
|
||||
with ex -> return! RequestErrors.notFound (json {| Error = ex.Message |}) next ctx
|
||||
| Error e -> return! RequestErrors.notFound (json {| Error = e |}) next ctx
|
||||
}
|
||||
|
||||
|
||||
let webApp =
|
||||
choose [
|
||||
GET >=> requiresApiKey >=> routef "/user/%s/balance" get
|
||||
@ -107,7 +105,8 @@ let main args =
|
||||
fun webHostBuilder ->
|
||||
webHostBuilder
|
||||
.ConfigureKestrel(fun opt ->
|
||||
opt.AddServerHeader <- false)
|
||||
opt.AddServerHeader <- false
|
||||
opt.ListenLocalhost(3333, (fun o -> o.UseHttps() |> ignore)))
|
||||
.Configure(Action<IApplicationBuilder> configureApp)
|
||||
.ConfigureServices(configureServices)
|
||||
.ConfigureLogging(configureLogging)
|
||||
|
@ -2,8 +2,8 @@
|
||||
<configuration>
|
||||
<system.webServer>
|
||||
<handlers>
|
||||
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
|
||||
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
|
||||
</handlers>
|
||||
<aspNetCore processPath="dotnet" arguments="CurrencyAPI.dll" stdoutLogEnabled="false" stdoutLogFile="logs/stdout" />
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
</configuration>
|
10
Dockerfile
10
Dockerfile
@ -10,16 +10,14 @@ RUN dotnet tool restore
|
||||
|
||||
RUN dotnet restore "CurrencyAPI/CurrencyAPI.fsproj"
|
||||
|
||||
WORKDIR "/src/CurrencyAPI/"
|
||||
WORKDIR "/src/Bot"
|
||||
|
||||
RUN dotnet build "CurrencyAPI.fsproj" -c Release -o /app/build
|
||||
|
||||
FROM build AS publish
|
||||
RUN dotnet publish "CurrencyAPI.fsproj" -c Release -o /app/publish --no-restore
|
||||
RUN dotnet publish "CurrencyAPI.fsproj" -c Release -o /app/publish
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:6.0
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
EXPOSE 80
|
||||
EXPOSE 443
|
||||
ENTRYPOINT [ "dotnet", "./CurrencyAPI.App.dll" ]
|
||||
ENTRYPOINT "./CurrencyAPI.App"
|
||||
|
Loading…
x
Reference in New Issue
Block a user