Skip to content

Commit

Permalink
impl og service
Browse files Browse the repository at this point in the history
  • Loading branch information
zignis committed Apr 8, 2024
1 parent 3c89c2f commit 4fd6f10
Show file tree
Hide file tree
Showing 50 changed files with 2,127 additions and 183 deletions.
122 changes: 0 additions & 122 deletions .config/nextest.toml

This file was deleted.

3 changes: 3 additions & 0 deletions .env.mapping
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ HOST
PORT

CDN_SERVER_URL
RPC_SERVER_URL

RPC_SECRET_TOKEN

REDIS_HOST
REDIS_PORT
Expand Down
50 changes: 50 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Continuous integration

on: [pull_request, push]

env:
CARGO_TERM_COLOR: always

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install latest stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy

- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-targets --all-features -- -D warnings

test:
name: Run tests
runs-on: ubuntu-latest
needs: lint
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# By default actions/checkout checks out a merge commit. Check out the PR head instead.
# https://github.com/actions/checkout#checkout-pull-request-head-commit-instead-of-merge-commit
ref: ${{ github.event.pull_request.head.sha }}

- name: Install latest stable release
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Run tests
uses: actions-rs/cargo@v1
with:
command: test
27 changes: 24 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,45 @@ license = "MIT"
authors = ["zignis <[email protected]>"]
repository = "https://github.com/storiny/og.git"

[lib]
doctest = false

[dependencies]
abbrev-num = "0.1.0"
actix-cors = "0.7.0"
actix-extensible-rate-limit = { version = "0.2.1", features = ["redis"] }
actix-http = "3.4.0"
actix-web = { version = "4.4.0", features = ["__compress"] }
async-trait = "0.1.73"
dotenv = "0.15.0"
envy = "0.4.2"
lazy_static = "1.4.0"
mime = "0.3.17"
png = "0.17.13"
prost = "0.12.4"
redis = { version = "0.25.3", features = ["tokio-comp", "aio", "connection-manager"] }
reqwest = { version = "0.12.2", features = ["json"] }
reqwest = { version = "0.12.3", features = ["blocking"] }
resvg = "0.41.0"
rust_decimal = "1.35.0"
rusttype = "0.9.3"
sailfish = "0.8.3"
sentry = { version = "0.32.0", features = ["tracing"] }
serde = { version = "1.0.188", features = ["derive"] }
serde_json = "1.0.115"
strum = { version = "0.26.2", features = ["derive"] }
tonic = { version = "0.11.0", features = ["gzip", "tls", "transport"] }
textwrap = { version = "0.16.1", features = ["smawk"] }
thiserror = "1.0.48"
tiny-skia = { version = "0.11.4", features = ["png-format"] }
tokio = { version = "1.32.0", features = ["macros"] }
tracing = { version = "0.1.40", features = ["attributes"] }
tracing-actix-web = "0.7.9"
tracing-bunyan-formatter = "0.3.9"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
unicode-segmentation = "1.11.0"
unidecode = "0.3.0"
usvg = "0.41.0"
pbjson = "0.6.0"
async-trait = "0.1.79"

[dev-dependencies]
image = { version = "0.25.1", default-features = false, features = ["jpeg", "png", "rayon"] }
image-compare = "0.4.1"
Binary file added fixtures/story.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fixtures/story_with_external_images.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fixtures/tag.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fonts/CabinetGrotesk/CabinetGrotesk-Bold.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/CabinetGrotesk/CabinetGrotesk-Medium.ttf
Binary file not shown.
Binary file added fonts/CabinetGrotesk/CabinetGrotesk-Regular.ttf
Binary file not shown.
Binary file added fonts/Satoshi/Satoshi-Bold.ttf
Binary file not shown.
Binary file added fonts/Satoshi/Satoshi-Medium.ttf
Binary file not shown.
Binary file added fonts/Satoshi/Satoshi-Regular.ttf
Binary file not shown.
9 changes: 0 additions & 9 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,5 @@ build_img:
fmt:
cargo +nightly fmt

test:
cargo nextest run --workspace

test_ci:
cargo nextest run --no-fail-fast --workspace

test_verbose:
cargo nextest run --no-capture --no-fail-fast --workspace

udeps:
cargo +nightly udeps --all-targets
4 changes: 4 additions & 0 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ pub struct Config {
pub port: String,
/// Public URL of the CDN server
pub cdn_server_url: String,
/// Private URL of the RPC server
pub rpc_server_url: String,
/// Private RPC authentication token
pub rpc_secret_token: String,
/// Redis host
pub redis_host: String,
/// Redis port
Expand Down
2 changes: 2 additions & 0 deletions src/constants/dimensions.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pub const IMG_WIDTH: u32 = 1200;
pub const IMG_HEIGHT: u32 = 630;
40 changes: 40 additions & 0 deletions src/constants/fonts.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use lazy_static::lazy_static;
use rusttype::Font;

lazy_static! {
// Cabinet Grotesk
pub static ref CABINET_GROTESK_BOLD: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/CabinetGrotesk/CabinetGrotesk-Bold.ttf") as &[u8])
.expect("error loading the `CabinetGrotesk-Bold.ttf` font file");
//
pub static ref CABINET_GROTESK_EXTRABOLD: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/CabinetGrotesk/CabinetGrotesk-Extrabold.ttf") as &[u8])
.expect("error loading the `CabinetGrotesk-Extrabold.ttf` font file");
//
pub static ref CABINET_GROTESK_MEDIUM: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/CabinetGrotesk/CabinetGrotesk-Medium.ttf") as &[u8])
.expect("error loading the `CabinetGrotesk-Medium.ttf` font file");
//
pub static ref CABINET_GROTESK_REGULAR: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/CabinetGrotesk/CabinetGrotesk-Regular.ttf") as &[u8])
.expect("error loading the `CabinetGrotesk-Regular.ttf` font file");
// Satoshi
pub static ref SATOSHI_BOLD: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/Satoshi/Satoshi-Bold.ttf") as &[u8])
.expect("error loading the `Satoshi-Bold.ttf` font file");
//
pub static ref SATOSHI_MEDIUM: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/Satoshi/Satoshi-Medium.ttf") as &[u8])
.expect("error loading the `Satoshi-Medium.ttf` font file");
//
pub static ref SATOSHI_REGULAR: Font<'static> =
#[allow(clippy::expect_used)]
Font::try_from_bytes(include_bytes!("../../fonts/Satoshi/Satoshi-Regular.ttf") as &[u8])
.expect("error loading the `Satoshi-Regular.ttf` font file");
}
1 change: 1 addition & 0 deletions src/constants/icons.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub const DEFAULT_AVATAR: &str = r#"data:image/png;base64,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"#;
3 changes: 3 additions & 0 deletions src/constants/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
pub mod dimensions;
pub mod fonts;
pub mod icons;
pub mod redis_namespaces;
Loading

0 comments on commit 4fd6f10

Please sign in to comment.