Add default image

This commit is contained in:
Brandon Sturgeon 2022-01-20 03:32:34 -08:00
parent 4f6580607b
commit 1c22c18ab8
11 changed files with 32 additions and 55 deletions

View File

@ -1,7 +1,6 @@
require "steamlookup"
include "cfc_chat_transit/server/init.lua"
include "cfc_chat_transit/server/avatar_service.lua"
include "cfc_chat_transit/server/remote_messages.lua"
AddCSLuaFile "cfc_chat_transit/client/init.lua"

View File

@ -8,11 +8,17 @@ class AvatarService
@logger = logger\scope "AvatarService"
@outlinerUrl = "http://#{avatarServiceAddress\GetString!}/outline"
processAvatar: (avatarUrl, outlineColor, success, failed) =>
body = TableToJSON { :avatarUrl, :outlineColor }
getAvatar: (steamID64) =>
steamID64 and "https://avatarservice.cfcservers.org/avatars/#{steamID64}.png" or nil
processAvatar: (avatarUrl, outlineColor, steamID) =>
body = TableToJSON { :avatarUrl, :outlineColor, :steamID }
@logger\debug "Sending data to outliner: ", body
failed = @logger\error
success = (code, body) ->
@logger\debug "Avatar request succeeded with code: #{code} | Body: #{body}"
HTTP
:success
:failed
@ -21,24 +27,13 @@ class AvatarService
method: "POST"
type: "application/json"
setOutlinedAvatar: (ply, avatarUrl) =>
data = ply.SteamLookup.PlayerSummary.response.players[1]
data.originalAvatarFull or= data.avatarfull
data.avatarfull = avatarUrl
outlineAvatar: (ply, data) =>
@logger\debug "Received request to outline avatar for ply: #{ply\Nick!}"
avatar = data.response.players[1].avatarfull
outlineColor = ChatTransit\GetTeamColor ply\Team!
steamID = ply\SteamID64!
success = (code, body) ->
@logger\debug "Avatar request succeeded with code: #{code} | Body: #{body}"
@setOutlinedAvatar ply, body
failed = (err) -> @logger\error err
@processAvatar avatar, outlineColor, success, failed
@processAvatar avatar, outlineColor, steamID
ChatTransit.AvatarService = AvatarService ChatTransit.Logger

View File

@ -1,12 +1,13 @@
require "gwsockets"
require "logger"
export ChatTransit = { Logger: Logger "ChatTransit" }
include "cfc_chat_transit/server/avatar_service.lua"
import Read from file
import GetColor from team
import TableToJSON from util
export ChatTransit = {
Logger: Logger "ChatTransit"
}
import getAvatar from ChatTransit.AvatarService
logger = ChatTransit.Logger
relayPort = CreateConVar "cfc_relay_port", "", FCVAR_NONE
@ -41,7 +42,9 @@ hook.Add "Think", loadHook, ->
ChatTransit.Send = (data) =>
logger\info "Sending '#{data.Type}'"
steamID = data.Data.SteamId
data.Data.Avatar or= getAvatar steamID
data.Realm = @Realm\GetString!
data.Data.SteamId or= ""

View File

@ -9,7 +9,6 @@ ChatTransit.AnticrashEvent = (eventText) =>
Data:
Content: eventText
SteamName: "CFC Anticrash"
Avatar: ""
hook.Add "z_anticrash_LagDetect", "CFC_ChatTransit_AnticrashEventListener", guard ChatTransit\AnticrashEvent
hook.Add "z_anticrash_LagStuck", "CFC_ChatTransit_AnticrashEventListener", guard ChatTransit\AnticrashEvent

View File

@ -5,15 +5,11 @@ ChatTransit.ReceiveMessage = (ply, text, teamChat) =>
return unless text
return if text == ""
summary = ply.SteamLookup and ply.SteamLookup.PlayerSummary
avatar = summary and summary.response.players[1].avatarfull
@Send
Type: "message"
Data:
Type: "message"
Content: text
Avatar: avatar
SteamName: ply\Nick!
SteamId: ply\SteamID64!
IrisId: "none"

View File

@ -15,28 +15,11 @@ ChatTransit.PlayerConnect = (data) =>
SteamId: SteamIDTo64 steamId if steamId
ChatTransit.PlayerInitialSpawn = (ply) =>
sendMessage = (attempts=1) ->
local avatar
if attempts >= 5
@Logger\warn "PlayerSummary didn't exist in time to send an on-spawn message"
else
summary = ply.SteamLookup and ply.SteamLookup.PlayerSummary
if summary
avatar = summary.response.players[1].avatarfull
else
delay = 2 + ( attempts * 2 )
return timer.Simple delay, -> sendMessage attempts + 1
@Send
Type: "spawn"
Data:
Avatar: avatar
SteamName: ply\Nick!
SteamId: ply\SteamID64!
sendMessage!
@Send
Type: "spawn"
Data:
SteamName: ply\Nick!
SteamId: ply\SteamID64!
gameevent.Listen "player_connect"
hook.Add "player_connect", "CFC_ChatTransit_SpawnListener", guard ChatTransit\PlayerConnect

View File

@ -7,13 +7,9 @@ ChatTransit.PlayerDisconnected = (data) =>
ply = GetBySteamID steamId
summary = ply and ply.SteamLookup and ply.SteamLookup.PlayerSummary
avatar = summary and summary.response.players[1].avatarfull
@Send
Type: "disconnect"
Data:
Avatar: avatar
SteamName: ply and ply\Nick! or name
SteamId: ply and ply\SteamID64! or SteamIDTo64 steamId
Content: reason

View File

@ -29,6 +29,13 @@ http {
include /etc/nginx/mime.types;
root /usr/share/nginx/html;
autoindex on;
try_files $uri @default;
}
location @default {
add_header Cache-Control "no-store";
return 302 https://avatarservice.cfcservers.org/avatars/default.png;
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

@ -7,6 +7,7 @@ services:
volumes:
- ./avatars.conf:/etc/nginx/nginx.conf
- "$AVATARS_DIR:/usr/share/nginx/html/avatars"
- ./default.png:/usr/share/nginx/html/avatars/default.png
service:
build:

View File

@ -13,12 +13,9 @@ base_url = os.getenv("AVATAR_SERVICE_URL")
@app.route("/outline", methods=["POST"])
def outline() -> str:
content = request.json
image_url = content["avatarUrl"]
steam_id = content["steamid"]
image_name = image_url.split("/")[-1] # "example.jpg"
image_name = image_name.split(".")[0] # "example"
avatar_path = f"/avatars/{image_name}.png"
avatar_path = f"/avatars/{steam_id}.png"
if os.path.isfile(avatar_path):
os.remove(avatar_path)
@ -28,6 +25,7 @@ def outline() -> str:
outline_color = [int(c) for c in outline_color] # [255, 255, 255, 255]
outline_color = tuple(outline_color) # (255, 255, 255, 255)
image_url = content["avatarUrl"]
raw_image = requests.get(image_url, stream=True).raw
avatar = Image.open(raw_image).convert("RGB")