A place for Recursers to color pixels, inspired by r/place. For architecture details, see How We Built r/Place .
Create an OAuth application at https://www.recurse.com/settings/apps with proper redirect URI (http://localhost:8080/auth for local run). Make sure to set your app's ID, Secret, and Redirect URI in your environmental variables (see .env.example). You can optionally set your own redis host and password.
# Load your environmental variables after setting them
๐จ source .env.example
# Run Redis via docker container
๐จ docker run --name rc-place-redis -d -p 6379:6379 redis
# Run rc-place app
๐จ make run
๐ rc-place should now be running at http://localhost:8080
# Use Redis docker
๐จ docker exec -it rc-place-redis redis-cli
# Reset board
๐จ del $REDIS_BOARD_KEY
# Get board at offset (x + boardSize*y)
๐จ bitfield $REDIS_BOARD_KEY GET u4 #$OFFSET
๐จ fly deploy
Update the color of a tile located at column x, row y.
- URL: /tile
- Method:
POST
- Data Params:
Request Body
{
"x": 2,
"y": 4,
"color": "red"
}
Valid colors: black
, forest
, green
, lime
, blue
, cornflowerblue
, sky
, cyan
, red
, burnt-orange
, orange
, yellow
, purple
, hot-pink
, pink
, white
.
-
Success Response: 200
-
Error Response
- Code 400 Bad Request
- Invalid json body: make sure you're using the right types, valid colors, and your body is encoded correctly.
- Code 401 Unauthorized
- Make sure you have a valid personal access token in your authorization header.
- Code 425 Too Early
- There's a time limit for sending requests, make sure to wait one second between requests.
- Code 500 Internal Server Error
- You may have found a bug! You're encouraged to file an issue on github with the steps to reproduce.
- Code 400 Bad Request
-
Sample Call
๐จ curl -X POST http://localhost:8080/tile -H "Content-Type: application/json" -d '{"x": 3, "y": 3, "color": "red"}' -H "Authorization: Bearer $PERSONAL_ACCESS_TOKEN"
Get all tiles.
- URL: /tiles
- Method:
GET
- Data Params:
Query Parameters
- format (OPTIONAL, default "string"): {"int", "string"}
- Success Response: 200
{
"tiles" : [[1, 2], [3, 4]],
"height": 2,
"width": 2,
"updateLimitInMs": 10
}
-
Error Response
- Code 401 Unauthorized
- Make sure you have a valid personal access token in your authorization header.
- Code 500 Internal Server Error
- You may have found a bug! You're encourage to file an issue with the steps to reproduce.
- Code 401 Unauthorized
-
Sample Call
๐จ curl http://localhost:8080/tiles -H "Authorization: Bearer $PERSONAL_ACCESS_TOKEN"
Get a tile.
- URL: /tile
- Method:
GET
- Data Params:
Query Parameters
- x (REQUIRED): column, 0 <= x < BOARD_SIZE
- y (REQUIRED): row, 0 <= y < BOARD_SIZE
- Success Response: 200
{
"color" : "red",
"x": 2,
"y": 2,
"lastUpdated":"2022-03-29T00:56:58.632329-04:00",
"lastEditor":"3731-joseph-tobin"
}
-
Error Response
- Code 400 Bad Request
- Invalid query parms: make sure you're using the valid query parameters within boundaries.
- Code 401 Unauthorized
- Make sure you have a valid personal access token in your authorization header.
- Code 500 Internal Server Error
- You may have found a bug! You're encourage to file an issue with the steps to reproduce.
- Code 400 Bad Request
-
Sample Call
๐จ curl http://localhost:8080/tile?x=15&y=3 -H "Authorization: Bearer $PERSONAL_ACCESS_TOKEN"