Commit graph

376 commits

Author SHA1 Message Date
Roderick van Domburg 15628842af
Introduce HTTP client 2021-06-20 23:09:27 +02:00
Roderick van Domburg ce4f8dc288
Remove superfluous status check 2021-06-20 20:45:15 +02:00
Roderick van Domburg e1e265179f
Document known token scopes 2021-06-20 20:40:33 +02:00
Roderick van Domburg 850db43254
Add token provider 2021-06-19 23:46:48 +02:00
Roderick van Domburg 6244515879
Resolve dealer and spclient access points (#795) 2021-06-10 22:24:40 +02:00
Roderick van Domburg 7c975f8ed0
Remove feature gate around apresolve 2021-06-01 20:43:23 +02:00
Roderick van Domburg ad19b69bfb
Various code improvements (#777)
* Remove deprecated use of std::u16::MAX
* Use `FromStr` for fallible `&str` conversions
* DRY up strings into constants
* Change `as_ref().map()` into `as_deref()`
* Use `Duration` for time constants and functions
* Optimize `Vec` with response times
* Move comments for `rustdoc` to parse
2021-05-31 22:32:39 +02:00
johannesd3 3be50fd90f
Corrected documentation 2021-05-27 17:20:49 +02:00
Johannesd3 7ed35396f8
Mostly cosmetic changes in dealer (#762)
* Add missing timeout on reconnect

* Cosmetic changes
2021-05-27 15:33:29 +02:00
johannesd3 049bcf616f
Fix integer overflow in spotify_id 2021-05-27 15:29:36 +02:00
johannesd3 14c1779056
Adjust arg types of Credentials::with_blob
... to avoid redundant utf-8 checking
2021-05-26 21:52:36 +02:00
Roderick van Domburg 3a2455d686
Merge branch 'dev' into log-volume-ctrl-optimisations 2021-05-26 20:50:42 +02:00
Roderick van Domburg d8ec98015c
Merge pull request #673 from Johannesd3/discovery-crate
Create separate discovery crate
2021-05-26 20:21:43 +02:00
johannesd3 1ade02b7ad
Add basic websocket support 2021-05-26 16:51:13 +02:00
Johannesd3 28dd842e05 Fix bug in MercurySender 2021-05-24 16:31:34 +02:00
Roderick van Domburg eca505c387
Improve volume controls
This is a squashed commit featuring the following:

Connect:
- Synchronize player volume with mixer volume on playback
- Fix step size on volume up/down events
- Remove no-op mixer started/stopped logic

Playback:
- Move from `connect` to `playback` crate
- Make cubic volume control available to all mixers with `--volume-ctrl cubic`
- Normalize volumes to `[0.0..1.0]` instead of `[0..65535]` for greater precision and performance (breaking)
- Add `--volume-range` option to set dB range and control `log` and `cubic` volume control curves
- Fix `log` and `cubic` volume controls to be mute at zero volume

Alsa mixer:
- Complete rewrite (breaking)
- Query card dB range for the `log` volume control unless specified otherwise
- Query dB range from Alsa softvol (previously only from hardware)
- Use `--device` name for `--mixer-card` unless specified otherwise
- Fix consistency for `cubic` between cards that report minimum volume as mute, and cards that report some dB value
- Fix `--volume-ctrl {linear|log}` to work as expected
- Removed `--mixer-linear-volume` option; use `--volume-ctrl linear` instead
2021-05-24 15:53:32 +02:00
Johannesd3 ebea5397b9
Add librespot-discovery crate 2021-05-19 21:05:19 +02:00
johannesd3 68818758a2
Add timeout to test 2021-05-18 15:17:30 +02:00
johannesd3 041f084d7f Fix warnings 2021-05-13 22:42:55 +02:00
johannesd3 1c62af9160
Unpin protobuf version 2021-05-08 22:09:37 +02:00
Sasha Hilton 3cd5ef32c4 Merge branch 'dev' 2021-05-04 13:16:39 +01:00
Sasha Hilton 7570241d86 Change wildcard env_logger dependency to version 0.8 2021-05-04 13:16:16 +01:00
Sasha Hilton 2ef3928691 Update version numbers to 0.2.0 2021-05-04 13:05:13 +01:00
johannesd3 1681574846
Bump hmac and pbkdf2 2021-05-01 10:53:14 +02:00
johannesd3 ddf41a49f2
Update lower version bound for some deps 2021-05-01 10:40:52 +02:00
Sasha Hilton 9d5ac1b156
Merge pull request #699 from Johannesd3/ready-macro
Use `ready!` macro to reduce boilerplate
2021-05-01 01:25:14 +01:00
johannesd3 de6bc32dea
Add documentation, logging and tests 2021-04-21 11:29:32 +02:00
johannesd3 e9dc9cd839
Add size limit to cache 2021-04-21 11:29:08 +02:00
johannesd3 7d6267c0a2
Use ready macro to reduce boilerplate 2021-04-17 12:23:24 +02:00
johannesd3 4c2fc61d64 Better joining of session tasks 2021-04-12 22:54:32 +02:00
johannesd3 690e0d2e10 Add simple tests to librespot-core
The first test checks whether apresolve works. A second test tries
to create a Spotify sessions with fake credentials and asserts that
an error is returned.
2021-04-10 12:50:30 +02:00
johannesd3 e688e7e886 Almost eliminate util module 2021-04-10 12:50:30 +02:00
johannesd3 9378ae5b6f Bump num-bigint dependency 2021-04-09 22:39:51 +02:00
johannesd3 11ce29077e Fix formatting 2021-04-09 10:45:48 +02:00
johannesd3 7c3d89112d Fix clippy warnings 2021-04-09 10:45:43 +02:00
johannesd3 f5274f5ada Merge branch 'dev' into tokio_migration 2021-04-09 10:39:06 +02:00
Ash d4dfd4890f
Merge pull request #674 from Johannesd3/proxy-support
[Tokio migration] Add back hyper-proxy
2021-03-29 21:00:18 +02:00
johannesd3 95fedf5357 Add back hyper-proxy 2021-03-27 15:36:33 +01:00
ThouCheese ec1ec59b8a update examples
Re-add default impl to SessionConfig and make Credentials::with_password generic over Into<String>

add docs for Credential

reintroduce old Default impl for SessionConfig

use the third argument for the track-to-play rather than a testing id
2021-03-24 01:14:44 +01:00
johannesd3 5616004dbe Fix many clippy lints
...and other small improvements
2021-03-10 22:41:44 +01:00
Evan Cameron 6a33eb4efa
minor cleanup 2021-02-28 21:54:19 -05:00
Ash 56f1fb6dae
Merge pull request #595 from Johannesd3/const_versions
Replace version functions by constants
2021-02-26 10:47:44 +01:00
johannesd3 f22b41956f Update url crate to 2.1 2021-02-23 22:22:53 +01:00
johannesd3 18179e73ec Remove unused dependencies and fix feature flags 2021-02-23 22:22:53 +01:00
johannesd3 27f308b82f Replace error_chain by thiserror 2021-02-23 22:22:52 +01:00
johannesd3 10827bd6a8 Clean up dependencies of librespot-core
* Use sub-crates of future
* Remove unnecessary pin-project
* Removed unused crates and features
* Replace futures channels by tokio channels
* Use serde's "derive" feature flag instead of serde_derive
2021-02-23 22:22:51 +01:00
johannesd3 8cff10e983 Put apresolve behind feature flag 2021-02-23 22:22:51 +01:00
johannesd3 9253be7bc9 Small refactor of librespot-core
* Remove default impl for `SessionConfig`
* Move util mod to single file
* Restore privacy of mods
* Move `fn get_credentials` to application
* Remove `extern crate` statements
2021-02-23 22:22:51 +01:00
johannesd3 678d1777fd Merge branch 'dev' into tokio_migration 2021-02-23 22:22:49 +01:00
Sasha Hilton d8c1b491c4 Merge branch 'master' into dev 2021-02-22 00:57:45 +00:00
Sasha Hilton b7c3609c7b Update version numbers to 0.1.6 2021-02-22 00:37:28 +00:00
Sasha Hilton 4e1c24d98d
Merge pull request #602 from Johannesd3/bumb_crypto_crates
Bump crypto crates
2021-02-21 23:29:00 +00:00
johannesd3 007e653f3d Restore original blocking player behaviour 2021-02-21 17:04:44 +01:00
johannesd3 2c81aaaf4e Implement MercurySender not as sink 2021-02-21 14:10:00 +01:00
johannesd3 daf7ecd23a Migrate librespot-connect to tokio 1.0 2021-02-21 14:09:31 +01:00
Sasha Hilton 7f705ed148 Merge branch 'master' into dev 2021-02-20 23:31:04 +00:00
Sasha Hilton 2c110ca256 Update version numbers to 0.1.5 2021-02-20 23:05:56 +00:00
johannesd3 bce4858b9e Add semver constant, rename "build id" env var 2021-02-17 15:04:16 +01:00
johannesd3 34733baa75 Bump crypto crates 2021-02-13 19:10:57 +01:00
johannesd3 b77f0a18ce Fix formatting 2021-02-13 10:29:00 +01:00
johannesd3 85be0d075a Adjust documentation 2021-02-12 20:21:07 +01:00
johannesd3 872fab62d8 Merge branch 'dev' into tokio_migration 2021-02-10 21:51:33 +01:00
Sasha Hilton ea8ece36d9
Merge pull request #597 from librespot-org/config-update
Update CI MSRV, remove Travis. Minor tweaks to device discovery.
2021-02-10 00:48:31 +00:00
johannesd3 09e506ed66 Replace version functions by constants 2021-02-09 19:42:56 +01:00
Sasha Hilton b72485cf46
Merge pull request #593 from Johannesd3/fix-issue-591 2021-02-09 13:54:47 +00:00
Sasha Hilton deabf1f915 Minor updates to discovery and device types 2021-02-09 03:16:40 +00:00
Sasha Hilton 84ba421818
Merge pull request #566 from xou816/fix/map-auth-errors
fix: map authentication errors to a custom error type
2021-02-06 02:54:11 +00:00
Alexandre Trendel 71e9295ee8 fix: map authentication errors to a custom error type 2021-02-05 14:26:32 +01:00
johannesd3 3446864838 Handle corrupt cache files (#591) 2021-02-02 02:18:58 +01:00
Sasha Hilton a09845ee7d
Merge pull request #582 from Johannesd3/refactor_cache_remove_volume 2021-02-02 01:08:07 +00:00
johannesd3 efedc678d0 Handle cache full situation 2021-01-31 10:00:02 +01:00
johannesd3 bb44b99c92 Use proxytunnel in apresolve
Implementing the tower_service::Service trait for a newly created
ProxyTunnel struct, so it can be used as connector in hyper.
2021-01-30 14:45:31 +01:00
johannesd3 c1d62d72a7 Fixed ProxyTunnel 2021-01-30 14:03:34 +01:00
johannesd3 a45fe85c27 Enable logging in test 2021-01-30 13:53:44 +01:00
johannesd3 e582f0a3fc Improved SpotifyId implementation
Moved conversion of SpotifyAudioType from and to &str directly to traits
Used a simpler and more idiomatic syntax in some places.
2021-01-29 11:50:50 +01:00
Michał Chojnacki 6b09836117 Refactor SpotifyId
- perf:
  * base62 encoding is an order of magnitude faster (~20x);
  * base16/62 enc/dec and from_uri are several times faster (~2-20x);
  * Let FileId::to_base16() reuse the hex encoder (~20x);

- changes:
  * Add to_uri() method;
  * Make from_uri() error handling consistent;
  * Move audio type from string matching to a SpotifyAudioType factory (private);
  * Implent From/Into<&str> for SpotifyAudioType;
  * Add representation sizes as associated constants (private);

- cs/docs:
  * Add rudimentary docs for most public funcs;
  * Add trivial test cases for the codecs;
2021-01-29 11:33:31 +01:00
johannesd3 07514c9dcc Add proxy support to apresolve 2021-01-25 20:55:49 +01:00
johannesd3 fd1f049572 Removed volume struct 2021-01-25 10:52:06 +01:00
johannesd3 fa5c9f7d11 Made locations in cache optional
The locations of credentials, volume and audio are now stored
in three separate Optional<PathBuf>s.
Removed the clearing of the cache if an error occurs. This might
be added again later.
2021-01-25 10:48:14 +01:00
johannesd3 14a004f84c Refactored Cache
Proper error handling, and moving the conversion between
{ credentials, volume } and file into the cache module
2021-01-25 10:47:42 +01:00
johannesd3 6c9d8c8d83 Replace pin_project and updated dependencies 2021-01-25 09:04:33 +01:00
johannesd3 6867ad0750 Added test 2021-01-25 09:04:33 +01:00
johannesd3 40e6355c34 Migrate core to tokio 1.0 2021-01-25 09:04:33 +01:00
Sasha Hilton 06f5aa9c90 Fix incorrect audio cache directory reference 2021-01-02 23:31:37 +00:00
Sasha Hilton 414383db18
Merge pull request #506 from LaurentLouf/feature-split_cache_folders
Feature split cache folders, resolves #505
2021-01-02 23:17:33 +00:00
Lyndon Brown 4fbbe44ab8 bump base64 dependency (v0.10 to v0.13)
very little changed, compiles fine after.
2020-12-14 11:53:54 +00:00
Lyndon Brown 0460429380 bump num-bigint dependency (v0.2 to v0.3)
compiles fine after version change; version changes seem to be very minimal.
2020-12-14 11:53:54 +00:00
Lyndon Brown bc973d02dc bump uuid dependency from 0.7 to 0.8
seems compatible
2020-12-14 11:53:54 +00:00
Sasha Hilton c8713a6c01
Merge pull request #518 from LaurentLouf/feature-handle_cache_full_situation
Handle cache full situation
2020-12-13 17:34:14 +00:00
Lyndon Brown 4708e0a2bf cargo toml formatting fix
for consistency
2020-11-26 19:31:51 +00:00
Lyndon Brown f87cbd6fde add missing repo links to sub-crate cargo toml files
such that links are available from their crates.io pages to the project repo.
2020-11-26 19:30:37 +00:00
Laurent Louf 5f11ddea50 Main issue is probably when copying the content to the file, not during the file creation, but handle both cases just to be sure 2020-08-04 12:25:32 +02:00
Laurent Louf 9d832baf83 Instead of disabling audio cache, just clean the audio cache and start caching again from the current file 2020-08-03 13:18:23 +02:00
Laurent Louf b34032690b Don't create directories for the audio cache if it disabled 2020-08-02 10:52:09 +02:00
Sasha Hilton 45f4276d68 Update version numbers to 0.1.3 2020-07-29 16:23:41 +01:00
Sasha Hilton 4886d4eed2
Merge pull request #504 from librespot-org/build-fixes
General fixes to protobuf bindings, depreciation warnings and publish.sh
2020-07-27 00:17:38 +01:00
Laurent Louf c14c254c6b Format 2020-07-26 16:11:32 +02:00
ashthespy 99be49acd2 Set volume control default to log, clean up stray debugs 2020-07-25 09:52:21 +02:00
Ash f0b3b2c7e8
Refactor Volume control, allow for a fixed volume option (#447)
Refactored the old `--linear-volume` flag to a more generic `--volume-ctrl` flag that takes the options of `[linear, log, fixed]`. It defaults as previously to log.
2020-07-25 09:38:08 +02:00
Sasha Hilton 16462b34e2 Accidentally bumped protobuf version 2020-07-25 04:50:58 +01:00
Sasha Hilton e97911e3cf Generate proto bindings in OUT_DIR, remove precompiled bindings 2020-07-25 04:43:01 +01:00
Sasha Hilton dc99cd73c0
Merge pull request #440 from tehcodedninja/SpotfyId-toURI
Ability to get the Spotify URI from a SpotifyId
2020-07-25 03:19:44 +01:00
Laurent Louf f075a75aee Disable audio cache when there is an error trying to create a file 2020-07-25 01:20:08 +02:00
Laurent Louf 8fc9ebfa8c Add the option to specify the system cache for credentials and volume files and adapt Cache to use two cache directories instead of one 2020-07-24 23:18:29 +02:00
Sasha Hilton 4a21b5cbeb Fix depreciation warnings
Fixes error description depreciation warnings and removes unnecessary parentheses
2020-07-24 03:32:36 +01:00
Sasha Hilton cd944035de
Merge pull request #476 from PlusMinus0/fix-utf-username
Fix utf username
2020-07-22 17:22:33 +01:00
Sasha Hilton 68949da7c2 Update version numbers to 0.1.2 2020-07-22 16:53:52 +01:00
Ash 72437bff66
Bump protobuf v2.8.1 -> v~2.14.0 and fix build issues (#485) 2020-07-22 12:47:25 +02:00
PlusMinus0 6f084d7ea5 Fix utf username. 2020-05-12 08:55:08 +02:00
Michael Pivonka d47cc75dc6 Fixed formatting 2020-03-02 06:36:27 -05:00
Michael Pivonka 8939954bd7 Added to_uri function to spotify_id 2020-03-02 06:29:13 -05:00
Adam Nielsen 036f1f7cec
Make sequences wrap around to avoid overflows
Instead of aborting with an `attempt to add with overflow` error, wrap the sequence around so that it goes back to 0 once it has reached the maximum value for the integer type.  Fixes #437.
2020-02-23 11:27:38 +10:00
Sasha Hilton 6daa2acd0a Update version numbers to 0.1.1 2020-01-30 02:39:41 +01:00
Konstantin Seiler 65d1c1bf8e Proper error handling when connecting to the server. 2020-01-29 09:45:06 +11:00
Sasha Hilton e9c3357e41 Run cargo fmt 2020-01-24 02:26:16 +01:00
Sasha Hilton cdcb919c08
Merge branch 'dev' into connection-lost-crash 2020-01-24 01:02:40 +01:00
Konstantin Seiler 17821b26aa Rename variable to be in line with existing code. 2020-01-23 19:32:00 +11:00
Konstantin Seiler ea1e0925dc Enable proper shutdown of the channels. 2020-01-23 01:23:34 +11:00
Konstantin Seiler 3fe3849588 Enable Mercury to be shut down and all pending requests being cancelled. 2020-01-23 01:14:43 +11:00
Konstantin Seiler b6c676ad60 Prevent librespot from panicking if server connection is lost. 2020-01-22 21:55:45 +11:00
Konstantin Seiler 362106df62 Fix error handling for closed channel.
fixes #417
2020-01-22 16:58:21 +11:00
marcelbuesing c9147d31ab
Turn child crates into rust 2018 edition 2020-01-17 20:54:05 +01:00
marcelbuesing 38d82f2dc2
Rerun rustfmt on full codebase 2020-01-17 18:47:30 +01:00
ashthespy d26590afc5
Update to Rust 2018
- Fix deprecated Error::cause warnings and missing dyn
- Reset max_width
- Add rustfmt to Travis
- Run rustfmt on full codebase
 with `cargo fmt --all`
- Add rustfmt to Travis
- Complete migration to edition 2018
- Replace try! shorthand
- Use explicit `dyn Trait`
2020-01-17 18:11:52 +01:00
Sasha Hilton 78bd0a1f7b
Merge pull request #394 from ashthespy/autoplay
Autoplay similar songs when your music ends
2019-12-12 19:04:48 +01:00
Konstantin Seiler d2d6df0e24 Run cargo fmt for my code. 2019-11-11 18:22:41 +11:00
Konstantin Seiler e75021b213 Merge remote-tracking branch 'origin/dev' into dynamic-blocks-kdev 2019-11-08 09:23:30 +11:00
Konstantin Seiler cdb31f79e4 Merge remote-tracking branch 'kaymes/dynamic-blocks' into dynamic-blocks-kdev 2019-11-08 09:20:31 +11:00
Konstantin Seiler c4e0f15eb3 Tune prefetch, squish bugs. 2019-11-08 08:58:17 +11:00
Konstantin Seiler 6422dcef78 Refine file downloading heuristics to use data rates and ping times everywhere. 2019-11-08 00:02:53 +11:00
Sasha Hilton 63049d9928 Protobuf exact dependency 2019-11-06 16:52:51 +01:00
Sasha Hilton 394320c7b7 Add description and license to Cargo.toml for each crate 2019-11-06 16:50:26 +01:00
Konstantin Seiler 224ec0a04e Remove log message 2019-11-06 14:38:28 +11:00
Konstantin Seiler 9b069effb2 Merge remote-tracking branch 'origin/dev' into dynamic-blocks
Adapt code for the aternative bitrate selection.
2019-11-06 08:10:41 +11:00
ashthespy b3c9744b29 Add a autoplay option flag 2019-11-05 20:34:43 +01:00
Konstantin Seiler ba7d058784 Merge remote-tracking branch 'origin/dev' into dynamic-blocks 2019-11-02 08:41:42 +11:00
Konstantin Seiler 6545674a63 Merge remote-tracking branch 'origin/master' into dynamic-blocks 2019-11-02 07:15:23 +11:00
Konstantin Seiler 333fc5010c New file downloading mechanism 2019-11-02 06:46:28 +11:00
ashthespy b96405af82 Make SpotifyId understand more URI formats 2019-10-30 11:33:17 +01:00
ashthespy 8eb51e9b55 Streamline and refactor Podcast support,
<Metadata>
  Add publisher to `Show`
  Add `ALLOWED` to `PassthroughEnum`
2019-10-30 11:33:17 +01:00
ashthespy 0cb7a3f7c8 WIP: Podcast support 2019-10-30 11:33:17 +01:00
Will Stott a7243ff8ce Use single fixed-width format! macro for SpotifyId.to_base16 2019-10-22 18:31:45 +01:00
Will Stott ac1c31b786 Use Rust's built-in unsigned 128 bit integer instead of the extprim crate 2019-10-22 18:28:21 +01:00
Ash e1e8f60628
Merge pull request #351 from ashthespy/vergen
Bump up vergen (and switch to rustc-env flags)
2019-09-21 16:56:14 +02:00
Tristan Stenner 1ba6e5886a Restrict protobuf updates 2019-07-30 11:00:02 +02:00
ashthespy 2bf694a07b Bump up vergen (and switch to rustc-env flags) 2019-07-24 11:14:20 +02:00
George Hahn 6e280b3c88 Upgrade dependencies 2019-07-17 22:08:15 -05:00
Sasha Hilton bf7f54a218
Merge pull request #299 from librespot-org/error-source-fix
Fix depreciation warnings, bump Travis version to 1.30.0
2019-04-12 05:40:20 +02:00
Sasha Hilton df3bea8c25
Merge pull request #324 from ashthespy/bloat
Remove redundant `rpassword` crate from `librespot-core`
2019-04-12 05:38:10 +02:00
Michael Edwards 9b4ede086a Server time delta is a signed integer
Fixes #322
2019-03-26 21:45:23 +01:00
ashthespy 9f9218f3cc Remove redundant rpassword crate from librespot-core 2019-03-26 18:07:05 +01:00
Sasha Hilton e9b159e9d9
Merge pull request #321 from devgianlu/time-alignment-fix
Fix for time alignment issue
2019-03-25 19:05:06 +01:00
devgianlu dc9b2de314 Fixed issue with time alignment 2019-03-24 07:15:14 -07:00
Michael Edwards b7a2aad17d Add credentials field alias
`encoded_auth_blob` is used in the credentials response of the Facebook auth flow
2019-03-20 21:17:23 +01:00
Sasha Hilton 1ccf00cfbb
Merge branch 'master' into error-source-fix 2019-03-20 16:48:41 +01:00
Sasha Hilton fe4b71d76c Fix tokio depreciation warnings 2019-03-20 16:46:44 +01:00
Michael Edwards 0bbca1d8bc Use serde 1.0 2019-03-20 12:04:24 +01:00
Артём Павлов [Artyom Pavlov] 72589443c7 update Cargo.lock, use constant time equality check, remove block-modes 2019-03-16 18:30:10 +03:00
Artyom Pavlov 391b9c69c4
Merge branch 'master' into master 2019-03-15 16:32:54 +00:00
Sasha Hilton 7f22785f52
Merge pull request #303 from devgianlu/unlock-features-fix
Update version number
2019-03-13 21:59:12 +01:00
Gianlu 4a6d7b921f Updated version number 2019-03-13 21:52:59 +01:00
Tristan Stenner 113fed5c42 Update rand to 0.6 2019-02-12 08:02:44 +01:00
Artyom Pavlov 772591576a
Merge branch 'master' into master 2018-12-06 09:38:33 +00:00
Артём Павлов [Artyom Pavlov] 06266556de
update dependencies 2018-10-15 05:07:58 +03:00
ashthespy c5fcdfd43c Upgrade protobuf to 2.0 and use protoc-rust to compile proto files 2018-10-03 15:06:44 +02:00
newpavlov e4677027d2 replace rust-crypto's hashes, HMAC and PBKDF2 2018-07-23 16:41:39 +03:00
Harold 4fb3d5f271 Add ap-port option to specify preferred port 2018-07-03 13:09:22 +02:00
Brice d40c0f50db Cache volume across restarts (#220)
* create Volume struct for use with Cache

* add "volume" file to Cache

* load cached volume on start, intial overrides cached overrides default

* amend volume_to_mixer function to cache the volume on every change

* pass cache to Spirc and SpircTask so volume_to_mixer has access

* rustfmt changes

* revert volume_to_mixer function and Spirc/SpircTask cache variable

* Volume implements Copy, pass by value instead of reference

* clamp volume to 100 if cached value exceeds limit

* convert Volume to u16 internally, use float and round to convert hex->dec

* convert initial_volume and ConnectConfig.volume to u16 as well

* add cache_volume function to SpircTask

* remove conversion to/from percentage on cached volume

* consolidate device.set_volume, mixer.set_volume, and caching

* streamline intial volume logic
2018-05-17 03:15:17 +02:00
Reinier Balt 870afdb4b6 fix deprecation warning for bytes 2018-04-30 14:28:43 +02:00
Reinier Balt e6fff8003f remove deprecated and unused import 2018-04-26 09:15:01 +02:00
Reinier Balt 2aea0e8fe6 do not panic on connection reset 2018-04-21 17:46:29 +02:00
Sasha Hilton 96124c5e18 Add 5xx error panic 2018-04-06 02:44:06 +02:00
Johan Anderholm 96a6978016 Update Cargo.lock
librespot now require rust 1.21.0. error_chain is updated to avoid
compilation warnings about unused rustdoc.
2018-03-24 08:45:43 +00:00
Johan Anderholm 3a14e9a6be Validate proxy urls better.
Use the url crate to handle proxies to make sure they conform to a
proper format.
2018-03-24 08:45:43 +00:00
Johan Anderholm 1a04e3b899 Resolve AP through proxy as well 2018-03-24 08:45:43 +00:00
Johan Anderholm 3bdc5e0073 Add support for http proxy
Currently only http proxy (no https) is supported.
2018-03-24 08:45:43 +00:00
Johan Anderholm 612978908f Reformat according to new rustfmt rules 2018-03-24 08:45:43 +00:00
thekr1s d6b82cd732 revert file mode to original mode 2018-03-14 23:19:49 +01:00
thekr1s b3966b0e08 Add optional linear volume contol 2018-03-11 11:27:28 +01:00
Sasha Hilton cbc4ee7554 Add to_base62 method 2018-02-28 13:29:24 +01:00
Sasha Hilton a7334b6c23 Add to_base62 method 2018-02-28 13:28:57 +01:00
Sasha Hilton 197d80edbf Fix formatting 2018-02-25 16:33:32 +01:00
Sasha Hilton 0abad9a8f8 Add custom SpotifyIdError type 2018-02-25 15:47:57 +01:00
Sasha Hilton 084646e21b Use prompt for password in main.rs 2018-02-25 05:40:00 +01:00
Sasha Hilton 4fb8c71b0a Set SpotifyId methods to return Result 2018-02-25 03:04:07 +01:00
Anton Voyl 58ea1baa98 Issue 130 (#164)
* Core API: device_id

* Core API: u128
2018-02-24 16:34:04 +01:00
Colm d0ffb2ecdd
Update for rust format 2018-02-14 04:50:51 +00:00
Sasha Hilton 874cc541de
Merge pull request #138 from librespot-org/authpanic
Add error message to auth failure case
2018-02-13 23:19:05 +01:00
Sasha Hilton 6936825783 [ci skip] Accidentally deleted commit 2018-02-13 15:29:01 +01:00
awiouy edbe00c62b core API: move StrChunks* to metadata 2018-02-13 08:33:50 +01:00
awiouy 0ed4fb1c68 core API: MercuryManager.request() 2018-02-13 08:24:59 +01:00
awiouy ea597361ff core API: component.new() 2018-02-13 08:18:49 +01:00
awiouy 4c2b641cad core API: move spotify_id to lib.rs 2018-02-13 07:57:28 +01:00
awiouy 6a9084b00c core API: Lazy 2018-02-12 20:20:43 +01:00
awiouy aed4fe32d8 core API: SessionInternal 2018-02-12 20:13:37 +01:00
awiouy 0fd398e34d core API: SessionData 2018-02-12 20:10:36 +01:00
Anton Voyl e276d39704 core: remove protobuf_macros (#146)
Fixes #129
2018-02-12 15:58:09 +01:00
Sasha Hilton 234958672f Implement [replace] for rust-crypto 2018-02-12 14:48:39 +01:00
awiouy 191caca518 core API: move Bitrate and PlayerConfig from core to playback 2018-02-11 23:55:41 +01:00
awiouy c9ba73c9ef rustfmt: core 2018-02-11 12:37:08 +01:00