Code Monkey home page Code Monkey logo

beefweb's Issues

Document event stream APIs

Swagger currently does not support that, but we still can add it somehow.
Probably pretend to be regular JSON, but describe actual behavior in comments.

Rework setting model

Introduce object model for various setting types (boolean, enum, etc). Those should be self-describing to allow more automatic UI generation. For example setting description, default value, enum names could be defined in setting metadata.

Each setting could be persistent or non-persistent. Second option is useful for global options that are defined by environment. For example "touch support" or "compact UI layout" for small screens.

Persistence should be extracted to separate class. It is useful for testing.

Existing TouchSupport class could be converted to controller that dynamically updates setting depending on browser capabilities.

MediaSizeController similarly should use this new setting model.

Consider migration to boost beast

This has several advantages over existing solution:

  • Single implementation for all platforms
  • Nothing to build because library is header-only and we already using boost
  • Supports web sockets
  • No special configuration is required for Windows platform (unlike HTTP server API and its URL reservations)

Use same units for durations in APIs

Currently we use seconds when dumping player status (e.g. current track duration, position).
However when changing current position milliseconds are used.

Periodic segfault in 32-bit builds

beefweb: listening on [ipv4:127.0.0.1]:8879
beefweb: failed to bind to address [ipv6:::1]:8879: Cannot assign requested address
Segmentation Fault
backtrace() returned 17 addresses
/home/travis/build/hyperblast/beefweb/tools/deadbeef.x86/deadbeef() [0x804b1e2]
[0xf76decb0]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0xccac) [0xf71b6cac]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x4148b) [0xf71eb48b]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x48323) [0xf71f2323]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x482c3) [0xf71f22c3]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x57eec) [0xf7201eec]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x58dfc) [0xf7202dfc]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x5890c) [0xf720290c]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x5802d) [0xf720202d]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x59a6d) [0xf7203a6d]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x68457) [0xf7212457]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x60df0) [0xf720adf0]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x64d45) [0xf720ed45]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x683a4) [0xf72123a4]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x62cec) [0xf720ccec]
/tmp/api-tests-38526J6e33X8q48bP/.local/lib/deadbeef/beefweb.so(+0x89f1a) [0xf7233f1a]

libevhtp fails to build with -m32

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LIB_DL
    linked by target "test_vhost" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_client" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_query" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_perf" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_basic" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
LIB_RT
    linked by target "test_vhost" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_client" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_query" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_perf" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples
    linked by target "test_basic" in directory /home/data/works/beefweb/server/build/debug/deps/root/src/libevhtp/examples

Improve server threading correctness

  • All callbacks should capture this via weak reference
  • doPollEventSources() should use work queue of corresponding request handler
  • Current async restart model probably could be simplified: if settings are changed server is destroyed and created with new settings

Add integration tests for API

Considering we already use nodejs for building client using it for API tests would not introduce additional dependencies.

TypeError: rows is undefined

Steps to reproduce:

  • Start playback
  • Switch to playlist browser
  • Try to switch back
  • Nothing happens, error is displayed in console

Rework artwork API

We should reference playlist items rather than file names on disk, e.g.

/api/artwork/:plref/:item

If no artwork was found default artwork should be provided unless overridden by ?allowDefault=false

Default artwork should be available via explicit query:

/api/artwork/default

Windows port

  • Minimally builds on Windows with MSVC
  • Platform specific functions are implemented
  • HTTP server is implemented
  • Continuous integration via AppVeyor or other service
  • Final clean up

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.