diff --git a/.github/workflows/.github-ci.yml b/.github/workflows/.github-ci.yml deleted file mode 100644 index 2000290..0000000 --- a/.github/workflows/.github-ci.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: ci - -on: push - -jobs: - build: - runs-on: ubuntu-22.04 - steps: - - name: Repository meta - id: repository - run: | - registry=${{ github.server_url }} - registry=${registry##http*://} - echo "registry=${registry}" >> "$GITHUB_OUTPUT" - echo "registry=${registry}" - repository="$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')" - echo "repository=${repository}" >> "$GITHUB_OUTPUT" - echo "repository=${repository}" - - - name: Docker meta - uses: docker/metadata-action@v5 - id: docker - with: - images: ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }} - - - name: Login to registry - uses: docker/login-action@v3 - with: - registry: ${{ steps.repository.outputs.registry }} - username: ${{ secrets.PACKAGES_USER }} - password: ${{ secrets.PACKAGES_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - buildkitd-flags: '--allow-insecure-entitlement network.host' - driver-opts: network=host - - - name: Build and push - uses: docker/build-push-action@v6 - with: - push: true - allow: network.host - network: host - platforms: linux/amd64 - tags: ${{ steps.docker.outputs.tags }} \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..5814ce3 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,22 @@ +name: Docker Image CI + +on: [push] + +jobs: + + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Build the Docker image + run: docker build . --file Dockerfile --tag hugomd/ascii-live:${GITHUB_SHA:0:8} --tag hugomd/ascii-live:latest + - name: Push docker image + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD + docker push hugomd/ascii-live:${GITHUB_SHA:0:8} + docker push hugomd/ascii-live:latest diff --git a/Dockerfile b/Dockerfile index 692a233..c606e1c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,13 @@ -FROM golang:1.24.1-alpine AS build-env +FROM golang:1.17-alpine AS build-env ENV GO111MODULE=on WORKDIR /go/src/github.com/hugomd/ascii-live/ -# RUN apk add ca-certificates +RUN apk add ca-certificates COPY . /go/src/github.com/hugomd/ascii-live/ RUN cd /go/src/github.com/hugomd/ascii-live && \ go mod download && \ - CGO_ENABLED=0 GOOS=linux go build -installsuffix cgo -o main . + CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . FROM scratch COPY --from=build-env /go/src/github.com/hugomd/ascii-live/main / -# COPY --from=build-env /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build-env /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt CMD ["/main"] diff --git a/deployment/deployment.yaml b/deployment/deployment.yml similarity index 85% rename from deployment/deployment.yaml rename to deployment/deployment.yml index 55e485e..7d3e2d5 100644 --- a/deployment/deployment.yaml +++ b/deployment/deployment.yml @@ -13,7 +13,7 @@ spec: app: ascii-live spec: containers: - - image: forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/franz.germann/ascii-live:development + - image: hugomd/ascii-live:407342dc name: ascii-live ports: - containerPort: 8080 @@ -44,10 +44,10 @@ metadata: nginx.ingress.kubernetes.io/ssl-redirect: "false" spec: rules: - - host: factory.c-one-infra.de + - host: ascii.live http: paths: - - path: /ascii-live + - path: / pathType: Prefix backend: service: @@ -57,4 +57,4 @@ spec: tls: - secretName: ascii-live-tls-prod-cert hosts: - - factory.c-one-infra.de + - ascii.live diff --git a/frames/brittany.go b/frames/brittany.go index 75d8ee7..68ed11c 100644 --- a/frames/brittany.go +++ b/frames/brittany.go @@ -1,78 +1,8 @@ package frames var Brittany = DefaultFrameType(brittanyFrame) - var brittanyFrame = []string{ - `hhhoohhooooooooooo////////////////////////////////////////////////////////////// -hhhhoooooooooooooooo////////oNo///////////////////////////////////////////////// -oooooooooooooooooooooooooooooNNooo////////////////////////////////////////oooooo -oooooooooooooooooooooooooooohddhNooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohsdNoNhooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohsdshhhdhooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohsdsNoooNhoooooooooooooooooooooooooooooooooooooooooo -hhhhhhhhoooooooooooooooooooohsNsdohhhodNoooooooooooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhsNdhooooohhhhoooooooooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhsNN///..../hshhhhhhhhhhoooooooooooooooooooooooooohh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhsNNNhhhoo///hdNhhoooooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhsNNNNNdNhhhho/hdhoooooooooooooooooooooooooooooooooo -o/oo/////////////////////////dN/.........././ho///////////////////////////////// -/////////////////////////////ddooooooo//..o/./////////////////////////////////// -/////////////////////////////ddddddddddhhhhNo./../////////////////////////////// -/////////////////////////////No//////ooo////..//..////////////////////////////// -/////////////////////////////ho////////......../h/////////////////////////////// -//////////////////////ooooooohdooooooo/////////NNd//////////////////////./////// -//oohhhNNNdddddssssssssssdddddsdNNNNhNNhhhhhhhNdNddNsssdddddddNNNNhhhhooo/////// -sssddNNNhhhhooooo////////////osdo////////////////./N/////oooooohhhhhNNNdddsssddN -//////////////////oooohhhhhhhNsshhhhhoooooooooooo/.ooo/////////////////////////o -//oohhhNNdddsss--------------s---------sssdNNNNNdN/Ns-----sssdddNNNNhhooo/////oo -ds-----------ssssssddddsssssss--ssssssssdddddddddN/dddddddddsssss--------sssdNhh`, - `hhhooooooooooooooo////////////oo//////////////////////////////////////////////// -ooooooooooooooooooooooooooooooNdo///////////////////////////////////////////ooo/ -ooooooooooooooooooooooooooooooNdNhoooooooooooooo//////////o/o/oooooooooooooooooo -ooooooooooooooooooooooooooooooddsNNhoooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooodNsdNNhhoooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooooddddNNhNNhoooooooooooooooooooooooooooooooooooooooo -hhhoooooooooooooooooooooooooooddNdhddNNoNNoooooooooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddhdhNdshohNNooooooooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddhh////ooo/NhNNhhhhohooooooooooooooooooooooooooho -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddhh//////./ohNhhNhhhhooooooooooooooooooohhoohhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddhddddddddN/...../ooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooooNsoooooohhNNNho//.../ooooooooooooooooooooooooooooo -//////////////////////////////Ns/..........////hhoo/./////////////////////////// -//////////////////////////////NdNNNNNNNhhhhoo/..//ohho////////////////////////// -//////////////////////////////hNhhhhhNNdddssssdho/...oNo//////////////////////// -//////////////////////////////ho/........///ooooooho/..ho/////////////////////// -//////////////////////////////oNo/////////......../ohho/No///////./.....///////. -///////////ooohhhhNNNNNddddddddsdNNNNNhhhhhhhhNNNh//.oohho////////////////////// -NNddddssssssddddNNNNhhhhhhhoooosdhoooooooooooohhhhh//...hN/ddsssssdddddNNNhhhoo/ -Nhhhoooo//////////////////////odso/////////////////////..oh////////ooooohhhNNddd -//////////ooohhhNNNNddddsssssss--ssssssdddddddddddNNhhooo///oo////////////////// -hhNdddss------------ssssssssssssssssssssssssssssssssssddNNood-----sssddNNhhhooo/ -------ssssddddddsssssss----- -----------sssssddddddNddddddssss--------ss -`, `ooooooooooooooo///////////////////////////////////////////////////////////////// -oooooooooooooooo//////////////oo//////////////////////////////////////////////// -ooooooooooooooooooooooooooooooddooo/////////////////////////////////////oooooooo -ooooooooooooooooooooooooooooooNdNooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooooddshoNNNhooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooodNsdhhohhdNhoooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooodNddNN/hhhhdddhooooooooooooooooooooooooooooooooooo -hhhhhhooooooooooooooooooooooooddNdNNhhooohhNdhNhoooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddhNhNdN/hhhooNooNNooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddho//////////oo/o////ooooooooooooooooooooooohoooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhNshhoooo///....../oo/.//hooooooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhNshdddddddNhhooooo//oo../NNooooooooooooooooooooooo -oooooooooooooooo//o//o/o//o/ooNso////ooo///oooooohhhho/.Ndo//o////////////////// -//////////////////////////////hso/////............/ohhhhoNd///////////////////// -//////////////////////////////hdddddddddddNhhhoo///./ohhNdd///////////////////// -//////////////////////////////oNooooohhohhhoooooooho.../ohdh///////.//////////// -///////////////////////////////o//................./o...../hN/////////////////// -///////////////////////////////Nh//////////////...../hoo/.../o/////.....//////// -///////oohhhNNNNNdddddsssssssssssdNNNNNNNNNNNNNNNhhh/ohhhhoNNNNhhhhoooo///////// -dddssssdddNNNhhhhhoooooo///////Nso///////////////////..//ohoohhhhNNNddddsddddddN -ooo/////////////////////oooooooNshoooooo//////////////....///////////////////ooo -//////ooohhNNNdddssss------------------------sssddNNNhhhhNddddNNNhhhoooo//////// -ohNds-------------ssssssddddddss-ssssssdddddddddddddddddddssss---------sssddNhho -`, `oooooooooooo//////////////////////////////////////////////////////////////////// +`oooooooooooo//////////////////////////////////////////////////////////////////// ooooooooooooo////////////////oNo//////////////////////////////////////////////// ooooooooooooooooooooooooooooohdNooooo/////////////////////////////oooooooooooooo ooooooooooooooooooooooooooooohdddhhNhooooooooooooooooooooooooooooooooooooooooooo @@ -94,192 +24,8 @@ hhhhhhhhhhhhhhhhohooooooooooooNdhhhhhhhNNNdNoo//..//oNooooooooooo////o////////// ddssssddNNNhhooo///////////////hsh///////////////////o////////////////////////o/ ooo///////////////ooohhhNNNNdddd-sdddddddddddNNhhho/hdddddNNNNNhhhhoooo///////// /////oohhNNdddss----------ssssss-ssssssssssssddddNhhdddddssssssssssssssssssssddo -/hNds----------sssddddssssss----- ----------sdddNhdsssssssddddddssdddddddddssh -`, `ooooooo//////////////////////oh///////////////////////////////////////////////// -oooooooooo///////////////////hdh//////////////////////////////////////////////// -ooooooooooooooooooooooooooooohddhoooo////////////////////////////o/ooooooooooooo -ooooooooooooooooooooooooooooohdsNhddNhhhoooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooohdNdhhhdhNNNhNNhhhooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooohshdNNoNdsNNhhhhohdo//ooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooohshdNhhNhdhNddhohhhhhhhho//oooooooooooooooooooooooo -ooooooooooooooooooooooooooooohshNhNNN/NdsdNsdNhh/.../oo/./oooooooooooooooooooooo -hhhhhhhhhhhhhhhhhhhooooooohhhhsNh///oohhNhhdsdoNhoo///....//oooooooooooooooooooo -oohhhhhhhhhhhhhhhhhooooohhhhhhdNho/.......///oohhhhhhhhoooo/./oooooooooooooooooo -hhhhooooooooooooooooooooooooohdNhdddhhhhooo/o//////...//////../ooooooooooooooooo -ooooooooooooooooooooooooooooooddoohhhhhNNhhhNNdddNNNNho////....hho////////////// -//////////////////////////////Nd/...../......//ohNNNdddNNhhhh//oo/////////////// -//////////////////////////////NdNNhNNhhhhhoooo///...............//////////////// -//////////////////////////////hhhhhhddNNNddssssdNhhoooooooooooooho////////////// -//////////////////////////////o/....../...../////o/////ooohhhNhhhNN///////////// -//////////////////////////////oNo/////./////.......///............////////////// -//////////////ooohhhNNNNNNddddNdNNNNNNNhNNNNNhhhhhhNNNNNNNNNNhhhhhooooo///////// -/oohNNNdddsssssdddNNNhhhhhooooodso///////////////oooooooohhhhhhhNNNNdddddddddddN -sddNNhhooo/////////////////////Nso///////////////////////////////////////////ooo -/////////////ooohhhNNNddddssssss-ssssddssssssssssssssddddddNNNNhhhhoooo///////// -//ohhNNddsss--------ssssssssssss-sssssssddddddddddddddddddsssssssss-ssssssssddNN -s---------sssdddddddsssss---- - -------------sssssddddddddsdddddddssss- -`, `ooo///////////////////////////ho//////////////////////////////////////////////// -ooo//////////////////////////odNo/////////////////////////////////////////////// -oooooooooooo/////////////////oNdNhhho/////////////////////////////////////////oo -oooooooooooooooooooooooooooooodNdNohNhhooooooo///////////o/o/ooooooooooooooooooo -oooooooooooooooooooooooooooooodNdNhNhh/NNhhhoooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooodNdNNhohhhohNNNhohoooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooodNNNhdNdNhoooohoNhNNNhoooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooodNNhoNdNhodNh/hhhoN//ohhhooooooooooooooooooooooooo -ooooooooooooooooooooooooooooohddh/....///////oo/hNho/////ooooooooooooooooooooooo -ooooooohhhhoooooooooooooooooohddhoo///////......../ooohoo//ooooooooooooooooooooo -ooooooooooooooooooooooooooooooNdhddNddddNNNNhhooo///...//ohh//oooooooooooooooooo -ooooooooooooooooooooooooooooooNdo/ooooooooooohoooooooohho../o////oo///////////// -//////////////////////////////hd......................//ohho/.ohh/////////////// -//////////////////////////////hddNNNNNNNNNNhhhooo///......./ohooohNo//////////// -///////////////../////////////oNhhhhhhhhhhhhNNNdddhhhhoooooo/../hhNd//////////// -//////////////////////////////o/................///////////oho/../h///////////// -///////////////////////////////Nh/////////...................ooo..////////////// -/////////////ooohhhNNNNNNddddddddNNNNNNNNNNNhhNNNNNNhhhoooo/..hhooooo/////////// -ohhNNddddssssddddNNNhhhhhoooooodso//////////////oooooooooooo//hhNNNddddddddddNNN -ddNNhhooo//////////////////////Nso//////////////////////////////////////////oooo -////////////ooohhhNNNNddddssssss-sssssssssssssssssddddNNhhhhhhhhhoooo/////////// -/ohhNNddsss--------ssssssssssssssssssdddddddddddddddddddddddsssssss-ssssssdddNNN ---------ssssdddddddddssss---- -- -------------sssssddddddddddsddddddsssssd -`, `/////////////////////////////hh///////////////////////////////////////////////// -o////////////////////////////NNo//////////////////////////////////////////////// -oooooooooooo////////////////oNdNho//////////////////////////////////////////oooo -oooooooooooooooooooooooooooooddNhhNhoooooo////////////////oooooooooooooooooooooo -oooooooooooooooooooooooooooooddNhoohNhoooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooddshooohhNhhooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooddddoohoooddNhhoooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooodddNoohoohhhoNNo//ooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooNdN/.....//hNNNho/.//oooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooNshhooo///./h/hddNNo////ooooooooooooooooooooooooooo -oooooooooooooooooooooooooooooNsNddddNhhhoo/oNddssNhoo//ooooooooooooooooooooooooo -ooooooooooooooooooooooooo//o/hs//////////oh.../hNdsdNo/oo/////////////////////// -/////////////////////////////hd//////....../....../ohdN/..//./////////////////// -/////////////////////////////odddddddddhhooo/oNo//...//hho/.//////////////////// -///////////...../////////////ohoooooohhhoooohhNdNhhhho/.oNdh/////////..../////// -//////////////////////////////o/............../hh//oNddNh/////////.....///////// -//////////////////////////////Nh////////........//.../ohNdo///////////////////// -/////////ooohhhNNNNdddddddddddddNNhhhhhhhhhhhhho/.//oooooho/..ohhhoooo////////// -NNdddssssdddNNhhhhoooooo//////Nso///////...//////////////..//ohhhNNNNddddddddNNN -hhooo///////////////////////oohsh///////////////////.////////////////////////ooo -////////ooohhhNNNdddssss------s--ssssssssddNNNNNNNNhhhNNNdddNNNhhhhoooo///////// -hNNddss------sssssssssssddsssss-ssssssssdddddddddddddddddddddddssssssssssssdddNN -----ssssdddddddddsss---- -- -sssssdds--sssssdddddddsdddddddddsss- -`, `////////////////////////////hN////////////////////////////////////////////////// -////////////////////////////hdho//////////////////////////////////////////////// -oooooooo////////////////////hdsNhhhoo///////////////////////////////////oooooooo -ooooooooooooooooooooooooooooNNddoohhhNNhoooooooo/oo/oooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNdNddNhooohhhhNNN/hhoooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohdhNNNN/hoo/hhNohhhhhNNhhooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohsoNNhddNohohoooohhN/..//ooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohshhhoNNNohhh/ohho/hhhho/..../oooooooooooooooooooooo -oooooooooooooooooooooooooooohsh/.........////////ooohhhoo/./hhhooooooooooooooooo -oooooooooooooooooooooooooooohshhhhooooo///.............//oooo/hNNhoooooooooooooo -oooooooooooooooooooooooooooohdNNdddddddddNNhhhhhhooooooo//.../..oNNhoooooooooooo -ooooooooooooooooooooo///////odh.////////ooo/////oooooooohNNho/.../////////////// -/////////////////////////////Nh///////....................//ohNh/o////////////// -/////////////////////////////NNdddddddddddddNNNNNhoooo/////.../oNh////////////// -/////////./....//////////////hoooooooooohhhhhhhhhhNhooooooooho/..///////./.../// -/////////////////////////////o//............................./hho../////////..// -/////////////////////////////oNo////////////////.............../h//////...//.... -//////////oohhhNNNNdddddddddddddNNNNNNNNNNNNNNNNNNNNhhhhhhhhho/hNNNhhhhhooo////. -hNNdddssssddNNNhhhoooo////////dd///////.............../////////ooooohhhhNNNddddN -Nhhooo/////////////////////oooNsoooo//////////////////////////////////....../.// -/////////ooohhhNNdddssss-----ss----------s------sssdNNNNNNNddddNNNNNhhhoooo////. -ohNNddss-----ssssssssssdddsssss-ssssssssssssssddddddddddddddddddddsssssssssssssN ------ssssddddddddsss---- - -dddds-sssssddddsddddddddddddd -`, `////////////////////////////dh////////////////////////////////////////////////// -////////////////////////////NNo///////////////////////////////////////////////// -ooooo//////////////////////oNdNNho///////////////////////////////////////////ooo -oooooooooooooooooooooooooooodNdhNdhooo//////////////////////////oooooooooooooooo -oooooooooooooooooooooooooooodNdNNdhdNooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooodNdNhNhNddhhoooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooodNNNoNddhNNddNhooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooddhhohhhhhNhdddh/ooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNdh/......//hNsdo/./oooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNdhhhhoooooohhNN//..../ohooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNshNNNNNNNNdddNNdNo/..../NNooooooooooooooooooooooooo -ooooooooooooooooooo/////////hd/.......////oooNdsNo....oNN/////////////////////// -////////////////////////////odo////////........ohNNoo/.///No//////////////////// -////////////////////////////oNNNNNNNdddddNNNNNo.../////ohNdNN/././..//////////// -/////////////////////////////h//////oooohhhhNNNhooo//.........////////////./.../ -/////////////////////////////o/................../oNddNdNNhhN//../....///....... -/////////////////////////////Nh///////////////......./ooooo//.////////////////.. -////////ooohhhNNNNddddddddddddsNNNhhhhhhhhhhhhNNdddddddddNNNNNNNNNhhhhoooo/////. -NNdddsssdddNNNhhooooo////////hso/////////.............////////ooooohhhhNNNddddd/ -hhoo/////////////////////oooohsNooo//////////////////////..///////////..//////// -/////////oohhNNNdddsss------ss--ssssssssssssss-ssssssssssssddddNNNNhhhooooo///// -hhNddss-----ssssssssssddddssssssssssssssssssdddddddddddddddddddddsssssssssssssdo -----sssdddddddddsss---- - -------ssssdddddsdddddddNdddddo -`, `////////////////////////////ho////////////////////////////////////////////////// -///////////////////////////oNNo///////////////////////////////////////////////o/ -oooooo/////////////////////oNdhho////////////////////////////////////////ooooooo -ooooooooooooooooooooooooooooddNohNoooo/////////////////////////ooooooooooooooooo -oooooooooooooooooooooooooooodNNhhohNNooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooodNdhhh/hNNhhoooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdNdNoNdooohNdhoooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdNNhoNNNohhooNhNhooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdNN....//////hNNNhoooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooddhooo/////.......//oooooooooooooooooooooooooooooooh -ooooooooooooooooooooooooooooddNdddNNNNNdNoo//....///oooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNd///////oooohoooohhoohhooo///////////////////////// -////////////////////////////hd/................//ohNdNddNNh///////////////////// -////////////////////////////hdNNdddNNNNhhhhoo/////../o/ohNddN/////////////////// -////////////////////////////ohoohhhhhhhhhNNNNhhhhhhoo/......//////////////////// -////////////////////////////o/....................//ohhoohhhhoo//////.//..../... -/////////////////////////////No///////................/ohNdNNNdh///////../////// -//////////ooohhhNNNNNdddddddddNNNhhhhhhhhhhhhhhhhhhho/../oooooohhoooo/////////// -hNNdddssssddNNNhhhhoooooo////Nd///////........////////..../ooohhhNNNNdddddddNNNo -Nhhooo///////////////////////hso///////////////..................////....////oo/ -/////////ooohhhNNNdddsssssssss-ssssssssssssssssdddNNNhhhhhhNNhhhhoooooo///////// -hhNNddss------ssssssssssddddsdssssssddddddddddddddddddddddddddssssssssssssdddNNo ------sssdddddddddssss----- -- ----------ssssssdddddddddsdddddddddsssso -`, `////////////////////////////oh//////////////////////////////////////////////oooo -////////////////////////////hdo///////////////////////////////////////////oooooo -oooooooooooo//////////////oohdNhohoo///////////////////////////ooooooooooooooooo -ooooooooooooooooooooooooooooNdNhhhNhhhoooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNdNhhNNo/hNhohhooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNdNNhhdNhooo/hhNohhooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNdNhhohNd/ohhhohohNNNNhooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooNsNNhhhoddNooo/oohh//oNNNhoooooooooooooooooooooooooo -ooooooooooooooooooooooooooohNsN/.oo/hNdoNNhooho......ooooooooooooooooooohhhhhhhh -hhhhhhhhhooooooooooooooooohhNsNo///.../ohhh/ohhhhoo//...//ooooooooooooohhhhhhhhh -ooooooooooooooooooooooooooooNsNdNNNNNo/////...//oohhhhhooooooooooooooooooooooooo -oooooooooooooooooooooooooooohdo/o/hhhNNNhoohoo/......//oohhNdNNh//////////////// -////////////////////////////od/......../oooohddNhoo//....../oohdNo////////////// -////////////////////////////oNddNNdhhhhooooo//oooooohhhooo//...../////////////// -/////////////////////////////hhhhohhooooohNdsdo.......//oohhhhoo/.////////////// -/////////////////////////////o/............/ohNNhooo//......///oo///////........ -/////////////////////////////Nh/////////........oohNhhhhooo//..../////////////// -/////////ooohhhNNNNNdddddddddddNNNNNNNNNNNhhhhooo///hNNNNNNNNNNo////////../..... -NddddssssdddNNNhhhhooooooooooNso////////////////oooooohhhhhNNNNdddddddddNNNNhhoo -hhooo////////////////////////hsh///////////......////.............//////oooohhho -////////ooohhhNNNddddsssssssss--ssssssssddddNNdddddddNNNNhhhhooooo////////////// -hNdddss-------ssssssssssssddddsssssdddddddddddddddddddddssssssssssssssdddNNhhhho -----sssddddddddddssss----- -- ---------ssssssdddddddddddddsdddddsss---ssh -`, `ooooo//oo///////////////////////////////////////////////////////oo/ooooooooooooo -oooooooooooooooooo/////o/o/ooNho//////////////////////oooooooooooooooooooooooooo -oooooooooooooooooooooooooooooddhoooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohdsdhNhhoooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohdddhhdNNNhooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohdNdNdNhdddNhNhhoooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooohshdNhNhdNdhddNhhhhooooooooooooooooooooooooooooooooo -hhhhhhhhhhhhhhhoooooooohhhhhhshNhodddhdssddNhNhoooooooooooooooooooooohhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhshhohhhhoNNdNNssNhhoohNNhoo/oohhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhsNo/////.//////ohhhho/.//hNNho///ohhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhshNNNhhhhhoooooo//////ooo/..ohNho./hhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhNNdddddddddddsssddNh//ohhho/.oNho/ooooooooooooooo -/////////////////////////////do...../////oooohhNNddsh/../oNh..oh//////////////// -/////////////////////////////dhoo//////............/oho/...oNh////////////////// -/////////////////////////////NNNNNNNNNNNNNNNNhhhhhoo../oho/../////////////////// -/////////////////////////////h///////oohhhNNNNNdddssd.../oo///////////////////// -/////////////////////////////ho//...............////ooo/...////.///////...////// -//////////////////oooooohhhhhNNoooooo////////////..../ooo/////////////////////// -oohhNNNddddssssssssdddddddNNNdsNhhhhhhhhhhhhhhhhhhNhNdddddddddNNNNhhhhoo//////// -dddNNhhhhoooo////////////////osN///////////////////////////ooooohhhhNNNdddddddN. -///////////////ooohhhhhNNNNNNN-dhhhooooooooooooooooo///////////////////////////. -oohhNNNddsss--------------ssss-sssssssssssssssssss---ssssssssdddNNNhhhooooo///// ------------sssssdddddsssssssss--sssssssssddddddddddddddddddddssss------ssddddNN/ -`, `ooooooooooooo//////////////////////////////////////////////ooooooooooooooooooooo +/hNds----------sssddddssssss----- ----------sdddNhdsssssssddddddssdddddddddssh`, +`ooooooooooooo//////////////////////////////////////////////ooooooooooooooooooooo oooooooooooooooooooooooooooooNNoooooo///////oooo/ooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooooNdNhooooooooooooooooooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooooddNhhNhoooooooooooooooooooooooooooooooooooooooooooo @@ -301,121 +47,5 @@ ohhNNddddssssssssdddddNNNNNNNNsdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhooo////ohhhooo///// ddNNNhhooooo//////////////////sd///////////////////////////////oo///hhNNNddddddN /////////////ooohhhhNNNNNNNdNNs-dNNNNhhhhhhoooooooooooo///////////////////////// oohNNNddsss--------------sssss-ssssssssssssssssddddddddddddssssddddNNhhhhoooo/.. -----------sssssddsssssssssss-------ssssssssssdddddddddddddddddddsss-----sssddh.. -`, `ooooooooooo////////////////////////////////////////////////ooooooooooooooooooooo -oooooooooooooooooooooooooooodhooooooo///oo/ooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooooddNhoooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdddhNNhohooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdNdhhNhohNNhhooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohshdNNNhddhhooNNNhhoooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohshNdhNhNhdNNhohhoNhoooooooooooooooooooooooooooooohhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhshNNoNdN/dssNoohhNoooo//oooooooooohhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhsNooooooohhhhhNNoh//.....//ohhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhsNo///../..../////ohhhhoo//./ohNhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhsNNddNhhhhhhhoohoo..///ohNNNh/../hhhhhhhhhhhhhhhhhhh -hhhhhhhhhhooooooooooooooooohdhhhNNNNNNNNNdddssdNho/..../ohho../Nhooooooooooooooo -////////////////////////////do............///ohhohhhoo//.../ooooh/////////////// -////////////////////////////dhhhhoooooo///..........///ohoo/.../o/////////////// -////////////////////////////NNNNNddddddddddddNNNNho/...../oooo////////////////// -////////////////////////////o/.....////ooohhhNNNddsNho//..../o////////////////// -////////////////////////////hh//////..............////ooho/../////////////////// -////////////oooohhhhhhNNNNNNNdhhooooooooooooooo///////...oho//////////////////// -hNNdddsssssssddddNNNNNNhhhhhNsNoooooooooooooohhhhhNNNNNhoNddsdddddNNNNNhhooo//// -NNhhoooo////////////////////osN/////////////////////////////////oooohhhNNNdddddd -//////////ooohhhhNNNNdddddddd-sdNNNhhhhhhhhhhhhhhhhooooooooo//////////////////// -hNNdddss-------------ssssssss-ssssssssssssssssssssssddsssssssssssdddNNhhhoooo/// --------sssssdddssssssssss------------ssssssssdddddddddddddddddddssss-----ssddddh -`, `oooooooooo////////////////////////////////////////////////oooooooooooooooooooooo -ooooooooooooooo/oo//ooooooohNooo/o/////////////ooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdhoooooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooNsdNNhooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooodNsN/Ndhooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooodNNdNhooNhhoooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooodNNdNh/hhhddhoooooooooooooooooooooooooooooooooooohhhh -hhhhhhhhoooooooooooooooohhhddhdoNNhohNhdhNhoooooooooooooooohhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhddhhoNNh/oNoNNddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhddo////...//hNNossNhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhNdhhhhhoo//../ooNsssNhooohhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhNdNddddddhhhhho/./ohNdssNh//ooooooooooooooooooooooooo -ooooooooooooooooooo//////ooNN////////////oho/.////ohdsdho/////////////////////// -///////////////////////////hN//////......../ohhho/////ohddo///////////////////// -///////////////////////////oNddddddddNhooooo//NddddNho/../h///////////////////// -///////////////////////////ooooooooohhoooooohh/ohNNdddddNo.///////////////////// -////////////////////////////o//............../h/..../ohhNNo///////////////////// -//////////////////////////ooNh/////////////....hho//..../o////////////////////// -///oohhhNNNdddddsssssssssssdddNNNNNNNNNNNNhhhhoodddddNNNddddNNNNNNhhhooo//////.. -ssssdddNNNhhhooooooo//o/////Ns///////////./////.///oohho//oooohhhhNNNNNdddddd... -////////////////////oooohhhhN-Nooooooo////////////////////////////////////////.. -///oohhhNNdddsss------------s---------ssddNNNNNNNNNNNNdssssddddNNNhhhhooooo///// -dss-------------ssssssdddssss-sssssssddddddddddddddddddddddsssss------sssdddddoo -`, `ooooooooooooooooooo////ooooooooo////////////oooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooohdoooooooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooohsdhoooooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooNdshhNNhhooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooNNdd/hhhhdNhoooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooNNNddhohhhhhhNhhooooooooooooooooooooooooooooooooooohhh -ooooooooooooooooooooooooohNdNdhNohoh/hhNoNdNhooooooooooooooooooohhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhNdhNoddhoNhhohhhhhdooohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhNdhoooNhohhh/hhNh/Nhohhoohhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhNdh//.///...////ooohNNdsdNhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhNdhdNNhhhoo//......../oohdssNhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhNNhNNdddsssdNhhhhoooo//..../hNNooooooooooooooo///ooooo -oooo//////////////////////hN/...///ooohhooohhhhNNhho/.///oo///////////////////// -//////////////////////////oNhooo///............//ohNNNhhhho///////////////////// -//////////////////////////oNNhNdNdsdNNNNhho///....../ohNNdssNho///////////////// -///////////////////////////o/..//ohhhNNddddNhhhhhho//.../ohNdssdo/////////////// -///////////////////////////ho////........./////ooohNNhho...../ohNh////////////// -//////////////oooohhhhhhhNhNNhooooooooo/////......../ohNNho/...../////////////// -hhNNddddssssssssdddddNNNNNNdshhhhhhoooooooohhooooo//.../ohNddNhhoNNNNNhhhooo//// -dNNhhhhooo/////////////////hsh///////////////////////...../hNNNNooohhhhNNNddddd. -////////////oooohhhhNNNNNNNN-dNhhhhoohoooooooooooooooo///...///////////////////. -ohhNNddsss--------------ssss-ssssssssssssdddddddddddddNdssddssssdddNNhhhhoooo/// -----------sssssddsssssssssss----ssssssssssdddddddddddddddddddddssss-----sssddsN/ -`, `oooooooooooooooooooooooooooooooo/////////ooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooodNooooooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooddNoooooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooooNshdNhooooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooohNdNNdhhhooooooooooooooooooooooooooooooooooooooooooooo -oooooooooooooooooooooooooohNNdhhohNNhooooooooooooooooooooooooooooooooooooooohhhh -ooooooooooooooooooooooooohhNNdhoNNhohhhhoooooooooooooooooooooohhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhdhhdNoodhohNhhhohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhdhooh/hhNhohooh//ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhNho////oNNhohhohhooohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhNhNddNNohNhohh.../ohhhohhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhoooooooooooooNhohNddN./ohNNho//../hNo/oooooooooooooooooooo/ooooooo -///////////////////////////No.....//..../oohhhoo/.oo//////////////////////////// -///////////////////////////hhhooo/../o/.....//ohNNo/oo////////////////////////// -///////////////////////////hhhNddNNNNohhho/......ohdhhh///////////////////////// -///////////////////////////o/.//ooohdh./hNNhho/.....oNNN//////////////////////// -///////////////////////////oh///...../...//ohhhhho//..odd/////////////////////// -///////////oooohhhhNNNNNNNNNdhhooooo/.oho/....//ohhhNhoNNhoo//////////////////// -NNNdddsssssssdddNNNNNhhhhhhhdNooooooo/.hhNNho/...../ohNhhddddssdddddddNNNNhhhoo/ -NNhhhooo//////////////////ooNN//////////.//ohNhho//....o///////////ooooohhhNNNN. -///////////ooohhhNNNddddddddddNdNNNNNNNho/.../oohNhhhooohoooooo////////////////. -hhNNddss-------------ssssssssssssssssssssdNho/////ooNdssssssssssssssddNNNhhhhho/ --------ssssssddsssssssss----s -------sssssdddNhoooohNNddddddddddsddsss-----ssdh/ -`, `ooooooooooooooooooooooooooooNooooooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdhoooooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdNoooooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohsNhooooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohdsdooooooooooooooooooooooooooooooooooooooooooooooooo -ooooooooooooooooooooooooooohNddNooooooooooooooooooooooooooooooooooooohhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhNNshhhhhhhooooooohohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhsNhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhh//sshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhoodNNhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhNshNdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh -ooooooooooooooooooooooooooooh/o//hhoooooooooooooo////oo//oo/ooo/o////////ooooooo -////////////////////////////h....od///////////////////////////////////////////// -////////////////////////////Nhhh.hs///////////////////////////////////////////// -////////////////////////////hohd/Nso//////////////////////////////////////////// -////////////////////////////o..//dso//////////////////////////////////////////// -////////////////////////////oo/.oddo//////////////////////////////////////////// -/////////oohhhhNNNdddddddddNho/.odd//sddddddddddddddddNNNNNNNhhhhoooo/////////// -NdddssssssddNNNhhhhoooooooo/o/..hdd..N////////////oooooooohhhhhNNNNdddsddddddNN. -Nhhooo//////////////////////////hNh//do///////////////////////////////////ooooo. -////////oohhhNNddddssss---sdNho/NN///ss--------ssssssssddddNNNNhhhhhooo///////// -hNddss----------ssssssssssssddNoNo//hdNNdddddddddddddddddddsssss-ssssssssssddNNh -------ssssdssssssss------ ssdhh///NdhN----------sssssdddddddddsddddddddssss--s -`, +----------sssssddsssssssssss-------ssssssssssdddddddddddddddddddsss-----sssddh..`, } diff --git a/frames/frames.go b/frames/frames.go index c957144..c4146b1 100644 --- a/frames/frames.go +++ b/frames/frames.go @@ -63,5 +63,5 @@ var FrameMap = map[string]FrameType{ "earth": Earth, "kitty": Kitty, "india": India, - "brittany": Brittany, + "brittany": Brittany, } diff --git a/go.mod b/go.mod index 107bdef..a626244 100644 --- a/go.mod +++ b/go.mod @@ -1,15 +1,8 @@ -module ascii-live +module github.com/hugomd/ascii-live -go 1.24.1 +go 1.17 require ( - github.com/golang/glog v1.2.4 - github.com/gorilla/mux v1.8.1 - github.com/stretchr/testify v1.10.0 -) - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b + github.com/gorilla/mux v1.7.3 ) diff --git a/go.sum b/go.sum index 0659769..68db0f5 100644 --- a/go.sum +++ b/go.sum @@ -1,16 +1,4 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= -github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= diff --git a/handlers/handlers.go b/handlers/handlers.go deleted file mode 100644 index 2368fa8..0000000 --- a/handlers/handlers.go +++ /dev/null @@ -1,103 +0,0 @@ -package handlers - -import ( - "encoding/json" - "fmt" - "net/http" - "strings" - "time" - - "ascii-live/frames" - - "github.com/golang/glog" - "github.com/gorilla/mux" -) - -var NotFoundMessage = map[string]string{ - "error": "Frames not found. Navigate to /ascii/list for list of frames. Navigate to https://github.com/hugomd/ascii-live to submit new frames.", -} - -var NotCurledMessage = map[string]string{ - "error": "You almost ruined a good surprise. Come on, curl it in terminal.", -} - -var availableFrames []string - -func init() { - for k := range frames.FrameMap { - availableFrames = append(availableFrames, k) - } -} - -func writeJson(w http.ResponseWriter, r *http.Request, res interface{}, status int) { - w.Header().Set("Content-Type", "application/json") - data, err := json.Marshal(res) - if err != nil { - return - } - w.WriteHeader(status) - fmt.Fprint(w, string(data)) -} - -func ListHandler(w http.ResponseWriter, r *http.Request) { - writeJson(w, r, map[string][]string{"frames": availableFrames}, http.StatusOK) -} - -func NotFoundHandler(w http.ResponseWriter, r *http.Request) { - writeJson(w, r, NotFoundMessage, http.StatusNotFound) -} - -func NotCurledHandler(w http.ResponseWriter, r *http.Request) { - writeJson(w, r, NotCurledMessage, http.StatusExpectationFailed) -} - -func Handler(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - flusher := w.(http.Flusher) - - vars := mux.Vars(r) - frameSource := vars["frameSource"] - glog.Infof("Frame source %s", frameSource) - - frames, ok := frames.FrameMap[frameSource] - if !ok { - NotFoundHandler(w, r) - return - } - - userAgent := r.Header.Get("User-Agent") - if !strings.Contains(userAgent, "curl") { - NotCurledHandler(w, r) - return - } - - w.Header().Set("Transfer-Encoding", "chunked") - w.WriteHeader(http.StatusOK) - - i := 0 - for { - select { - // Handle client disconnects - case <-ctx.Done(): - glog.Infof("Client stopped listening") - return - default: - if i >= frames.GetLength() { - i = 0 - } - // Artificially wait between reponses. - time.Sleep(frames.GetSleep()) - - // Clear screen - clearScreen := "\033[2J\033[H" - newLine := "\n" - - // Write frames - fmt.Fprint(w, clearScreen+frames.GetFrame(i)+newLine) - i++ - - // Send some data. - flusher.Flush() - } - } -} diff --git a/main.go b/main.go index 90c71fd..8c91468 100644 --- a/main.go +++ b/main.go @@ -1,15 +1,108 @@ package main import ( + "encoding/json" "flag" + "fmt" "net/http" + "strings" + "time" - "ascii-live/handlers" + "github.com/hugomd/ascii-live/frames" "github.com/golang/glog" "github.com/gorilla/mux" ) +var NotFoundMessage = map[string]string{ + "error": "Frames not found. Navigate to /list for list of frames. Navigate to https://github.com/hugomd/ascii-live to submit new frames.", +} + +var NotCurledMessage = map[string]string{ + "error": "You almost ruined a good surprise. Come on, curl it in terminal.", +} + +var availableFrames []string + +func init() { + for k := range frames.FrameMap { + availableFrames = append(availableFrames, k) + } +} + +func writeJson(w http.ResponseWriter, r *http.Request, res interface{}, status int) { + w.Header().Set("Content-Type", "application/json") + data, err := json.Marshal(res) + if err != nil { + return + } + w.WriteHeader(status) + fmt.Fprint(w, string(data)) +} + +func listHandler(w http.ResponseWriter, r *http.Request) { + writeJson(w, r, map[string][]string{"frames": availableFrames}, http.StatusOK) +} + +func notFoundHandler(w http.ResponseWriter, r *http.Request) { + writeJson(w, r, NotFoundMessage, http.StatusNotFound) +} + +func notCurledHandler(w http.ResponseWriter, r *http.Request) { + writeJson(w, r, NotCurledMessage, http.StatusExpectationFailed) +} + +func handler(w http.ResponseWriter, r *http.Request) { + cn := w.(http.CloseNotifier) + flusher := w.(http.Flusher) + + vars := mux.Vars(r) + frameSource := vars["frameSource"] + glog.Infof("Frame source %s", frameSource) + + frames, ok := frames.FrameMap[frameSource] + if !ok { + notFoundHandler(w, r) + return + } + + userAgent := r.Header.Get("User-Agent") + if !strings.Contains(userAgent, "curl") { + notCurledHandler(w, r) + return + } + + w.Header().Set("Transfer-Encoding", "chunked") + w.WriteHeader(http.StatusOK) + + i := 0 + for { + select { + // Handle client disconnects + case <-cn.CloseNotify(): + glog.Infof("Client stopped listening") + return + default: + if i >= frames.GetLength() { + i = 0 + } + // Artificially wait between reponses. + time.Sleep(frames.GetSleep()) + + // Clear screen + clearScreen := "\033[2J\033[H" + newLine := "\n" + + // Write frames + fmt.Fprint(w, clearScreen+frames.GetFrame(i)+newLine) + i++ + + // Send some data. + flusher.Flush() + } + } +} + // Server. func main() { flag.Parse() @@ -17,9 +110,9 @@ func main() { flag.Set("logtostderr", "true") r := mux.NewRouter() - r.HandleFunc("/ascii-live/list", handlers.ListHandler).Methods("GET") - r.HandleFunc("/ascii-live/{frameSource}", handlers.Handler).Methods("GET") - r.NotFoundHandler = http.HandlerFunc(handlers.NotFoundHandler) + r.HandleFunc("/list", listHandler).Methods("GET") + r.HandleFunc("/{frameSource}", handler).Methods("GET") + r.NotFoundHandler = http.HandlerFunc(notFoundHandler) srv := &http.Server{ Handler: r, diff --git a/tests/handlers_test.go b/tests/handlers_test.go deleted file mode 100644 index cc9cebf..0000000 --- a/tests/handlers_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package test - -import ( - "encoding/json" - "net/http" - "net/http/httptest" - "testing" - - "ascii-live/handlers" - - "github.com/gorilla/mux" -) - -func TestListHandler(t *testing.T) { - r := mux.NewRouter() - r.HandleFunc("/ascii-live/list", handlers.ListHandler) - - req, err := http.NewRequest("GET", "/ascii-live/list", nil) - if err != nil { - t.Fatal(err) - } - - recorder := httptest.NewRecorder() - r.ServeHTTP(recorder, req) - - if status := recorder.Code; status != http.StatusOK { - t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK) - } - - var response map[string][]string - if err := json.Unmarshal(recorder.Body.Bytes(), &response); err != nil { - t.Errorf("error decoding response: %v", err) - } -} - -func TestNotFoundHandler(t *testing.T) { - r := mux.NewRouter() - r.NotFoundHandler = http.HandlerFunc(handlers.NotFoundHandler) - - req, err := http.NewRequest("GET", "/not-existing", nil) - if err != nil { - t.Fatal(err) - } - - recorder := httptest.NewRecorder() - r.ServeHTTP(recorder, req) // Router verarbeitet die Anfrage - - if status := recorder.Code; status != http.StatusNotFound { - t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusNotFound) - } -} - -func TestNotCurledHandler(t *testing.T) { - r := mux.NewRouter() - r.HandleFunc("/ascii-live/donut", handlers.NotCurledHandler) - - req, err := http.NewRequest("GET", "/ascii-live/donut", nil) - if err != nil { - t.Fatal(err) - } - req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36") - - recorder := httptest.NewRecorder() - r.ServeHTTP(recorder, req) - - if status := recorder.Code; status != http.StatusExpectationFailed { - t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusExpectationFailed) - } -} diff --git a/tests/handlers_testify_test.go b/tests/handlers_testify_test.go deleted file mode 100644 index ad81f72..0000000 --- a/tests/handlers_testify_test.go +++ /dev/null @@ -1,66 +0,0 @@ -package test - -import ( - "encoding/json" - "net/http" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "ascii-live/handlers" -) - -func TestListHandler2(t *testing.T) { - req, err := http.NewRequest("GET", "/ascii/list", nil) - require.NoError(t, err, "Failed to create request") - - recorder := httptest.NewRecorder() - handler := http.HandlerFunc(handlers.ListHandler) - - handler.ServeHTTP(recorder, req) - - assert.Equal(t, http.StatusOK, recorder.Code, "Status code should be OK") - assert.Equal(t, "application/json", recorder.Header().Get("Content-Type"), "Content-Type should be application/json") - - var responseBody map[string][]string - err = json.Unmarshal(recorder.Body.Bytes(), &responseBody) - require.NoError(t, err, "Failed to unmarshal response JSON") - -} - -func TestNotFoundHandler2(t *testing.T) { - req, err := http.NewRequest("GET", "/some/unknown/path", nil) - require.NoError(t, err, "Failed to create request") - - recorder := httptest.NewRecorder() - handler := http.HandlerFunc(handlers.NotFoundHandler) // Test directly - - expectedBodyBytes, err := json.Marshal(handlers.NotFoundMessage) - require.NoError(t, err, "Failed to marshal expected NotFoundMessage") - - handler.ServeHTTP(recorder, req) - - assert.Equal(t, http.StatusNotFound, recorder.Code, "Status code should be Not Found") - assert.Equal(t, "application/json", recorder.Header().Get("Content-Type"), "Content-Type should be application/json") - assert.JSONEq(t, string(expectedBodyBytes), recorder.Body.String(), "Response body does not match expected NotFoundMessage") -} - -func TestNotCurledHandler2(t *testing.T) { - req, err := http.NewRequest("GET", "/ascii/someframe", nil) - require.NoError(t, err, "Failed to create request") - // crucially, DO NOT set User-Agent to 'curl' - - recorder := httptest.NewRecorder() - handler := http.HandlerFunc(handlers.NotCurledHandler) // Test directly - - expectedBodyBytes, err := json.Marshal(handlers.NotCurledMessage) - require.NoError(t, err, "Failed to marshal expected NotCurledMessage") - - handler.ServeHTTP(recorder, req) - - assert.Equal(t, http.StatusExpectationFailed, recorder.Code, "Status code should be Expectation Failed") - assert.Equal(t, "application/json", recorder.Header().Get("Content-Type"), "Content-Type should be application/json") - assert.JSONEq(t, string(expectedBodyBytes), recorder.Body.String(), "Response body does not match expected NotCurledMessage") -}