Compare commits

...
86 Commits
Author SHA1 Message Date
Kevin FronczakandGitHub dff0a66c05 Merge pull request #472 from fronzbot/dependabot/pip/pytest-6.2.4
Bump pytest from 6.2.3 to 6.2.4
2021-06-04 07:06:57 -04:00
Kevin FronczakandGitHub 849b3e060f Merge pull request #471 from fronzbot/dependabot/pip/pygments-2.9.0
Bump pygments from 2.8.1 to 2.9.0
2021-06-04 07:06:30 -04:00
dependabot[bot]andGitHub 29c6d269a2 Bump pytest from 6.2.3 to 6.2.4
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.3...6.2.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-05 08:22:56 +00:00
dependabot[bot]andGitHub 725debaebe Bump pygments from 2.8.1 to 2.9.0
Bumps [pygments](https://github.com/pygments/pygments) from 2.8.1 to 2.9.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.8.1...2.9.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-04 08:22:45 +00:00
Kevin FronczakandGitHub 7507163422 Merge pull request #468 from fronzbot/dependabot/pip/pygments-2.8.1
Bump pygments from 2.8.0 to 2.8.1
2021-05-02 08:49:37 -04:00
Kevin FronczakandGitHub 4cb9893fd9 Merge pull request #467 from fronzbot/dependabot/pip/flake8-docstrings-1.6.0
Bump flake8-docstrings from 1.5.0 to 1.6.0
2021-05-02 08:49:19 -04:00
dependabot[bot]andGitHub 6b4fba902b Bump pygments from 2.8.0 to 2.8.1
Bumps [pygments](https://github.com/pygments/pygments) from 2.8.0 to 2.8.1.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/2.8.1/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.8.0...2.8.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-02 12:07:11 +00:00
dependabot[bot]andGitHub c1dc538627 Bump flake8-docstrings from 1.5.0 to 1.6.0
Bumps [flake8-docstrings](https://gitlab.com/pycqa/flake8-docstrings) from 1.5.0 to 1.6.0.
- [Release notes](https://gitlab.com/pycqa/flake8-docstrings/tags)
- [Changelog](https://gitlab.com/pycqa/flake8-docstrings/blob/master/HISTORY.rst)
- [Commits](https://gitlab.com/pycqa/flake8-docstrings/compare/1.5.0...1.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-02 12:07:08 +00:00
Kevin FronczakandGitHub 6f262c8522 Merge pull request #466 from fronzbot/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-05-02 08:06:34 -04:00
Kevin FronczakandGitHub d8cf932672 Update dependabot.yml 2021-05-02 07:59:10 -04:00
Kevin FronczakandGitHub 42422b3462 Merge pull request #458 from fronzbot/dependabot/pip/flake8-3.9.1
Bump flake8 from 3.8.4 to 3.9.1
2021-05-02 07:56:13 -04:00
Kevin FronczakandGitHub c51f723133 Merge pull request #459 from fronzbot/dependabot/pip/pre-commit-2.12.1
Bump pre-commit from 2.10.1 to 2.12.1
2021-05-02 07:55:47 -04:00
dependabot-preview[bot]andGitHub 7270a1c1ee Bump flake8 from 3.8.4 to 3.9.1
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.8.4 to 3.9.1.
- [Release notes](https://gitlab.com/pycqa/flake8/tags)
- [Commits](https://gitlab.com/pycqa/flake8/compare/3.8.4...3.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-02 11:53:45 +00:00
dependabot-preview[bot]andGitHub 67b9fe0555 Bump pre-commit from 2.10.1 to 2.12.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.10.1 to 2.12.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.10.1...v2.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-02 11:53:43 +00:00
Kevin FronczakandGitHub 887e4288ae Merge pull request #463 from fronzbot/dependabot/pip/pylint-2.8.2
Bump pylint from 2.7.0 to 2.8.2
2021-05-02 07:52:34 -04:00
Kevin FronczakandGitHub 1c59b34ac4 Merge pull request #455 from fronzbot/dependabot/pip/pytest-6.2.3
Bump pytest from 6.2.2 to 6.2.3
2021-05-02 07:47:41 -04:00
dependabot-preview[bot]andGitHub ea2ba8dfcf Upgrade to GitHub-native Dependabot 2021-04-29 15:39:17 +00:00
dependabot-preview[bot]andGitHub 78a1b9b74d Bump pylint from 2.7.0 to 2.8.2
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.7.0 to 2.8.2.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/master/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/pylint-2.7.0...v2.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-28 04:55:17 +00:00
dependabot-preview[bot]andGitHub b99cfc74e9 Bump pytest from 6.2.2 to 6.2.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.2...6.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-24 12:41:34 +00:00
Kevin FronczakandGitHub 3d6efa4b0a Merge pull request #443 from fronzbot/dependabot/pip/coverage-5.5
Bump coverage from 5.4 to 5.5
2021-04-24 08:41:18 -04:00
Kevin FronczakandGitHub b998c47ac7 Merge pull request #451 from fronzbot/dependabot/pip/pydocstyle-6.0.0
Bump pydocstyle from 5.1.1 to 6.0.0
2021-04-24 08:40:23 -04:00
dependabot-preview[bot]andGitHub fc7848f00b Bump pydocstyle from 5.1.1 to 6.0.0
Bumps [pydocstyle](https://github.com/PyCQA/pydocstyle) from 5.1.1 to 6.0.0.
- [Release notes](https://github.com/PyCQA/pydocstyle/releases)
- [Changelog](https://github.com/PyCQA/pydocstyle/blob/master/docs/release_notes.rst)
- [Commits](https://github.com/PyCQA/pydocstyle/compare/5.1.1...6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-24 11:02:56 +00:00
dependabot-preview[bot]andGitHub 125c562df5 Bump coverage from 5.4 to 5.5
Bumps [coverage](https://github.com/nedbat/coveragepy) from 5.4 to 5.5.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/coverage-5.4...coverage-5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-24 11:02:51 +00:00
Kevin FronczakandGitHub f748147dcc Merge pull request #441 from fronzbot/dependabot/pip/pylint-2.7.0
Bump pylint from 2.6.2 to 2.7.0
2021-03-24 07:01:37 -04:00
dependabot-preview[bot]andGitHub 77c23f8109 Bump pylint from 2.6.2 to 2.7.0
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.6.2 to 2.7.0.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/master/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/pylint-2.6.2...pylint-2.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-22 06:12:55 +00:00
Kevin FronczakandGitHub b98c56938f Merge pull request #440 from fronzbot/dev-bump-0.18.dev0
Dev version bump
2021-02-18 09:53:36 -05:00
Kevin Fronczak 23308cd5db Dev version bump 2021-02-18 09:48:23 -05:00
Kevin FronczakandGitHub 9d9d3aa7a3 Merge pull request #438 from fronzbot/dev-bump
Version bump
2021-02-18 09:45:35 -05:00
Kevin Fronczak 3ddfd10678 Version bump 2021-02-18 09:42:45 -05:00
Kevin FronczakandGitHub 7c75ffa815 Merge pull request #436 from fronzbot/dependabot/pip/pylint-2.6.2
Bump pylint from 2.6.0 to 2.6.2
2021-02-18 09:18:16 -05:00
Kevin FronczakandGitHub 4e4b22314a Merge pull request #437 from fronzbot/add-download-delay
Add throttling to download function
2021-02-18 09:17:58 -05:00
Kevin Fronczak 4e6b570cba Change default delay to 1s 2021-02-18 08:38:27 -05:00
Kevin Fronczak b12d9ba969 Add throttling to download function 2021-02-18 08:34:57 -05:00
dependabot-preview[bot]andGitHub 83df95f0da Bump pylint from 2.6.0 to 2.6.2
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.6.0 to 2.6.2.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/master/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/pylint-2.6.0...pylint-2.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-17 06:07:15 +00:00
Kevin Fronczak 3c5caae93f Dev version bump 2021-02-15 10:31:30 -05:00
Kevin Fronczak b41460c569 Add 0.17.0 changes 2021-02-15 10:27:32 -05:00
Kevin Fronczak 9ff02de48b Version bump 2021-02-15 10:16:59 -05:00
Kevin FronczakandGitHub 14cbbacc1b Merge pull request #433 from fronzbot/dependabot/pip/pygments-2.8.0
Bump pygments from 2.7.4 to 2.8.0
2021-02-15 10:14:35 -05:00
dependabot-preview[bot]andGitHub 1cadf3488d Bump pygments from 2.7.4 to 2.8.0
Bumps [pygments](https://github.com/pygments/pygments) from 2.7.4 to 2.8.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.7.4...2.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-15 06:09:58 +00:00
Kevin FronczakandGitHub c78f411014 Merge pull request #432 from fronzbot/add-reauth-back
Add reauth param back into login
2021-02-13 11:38:27 -05:00
Kevin Fronczak ab2db14bc8 Add reauth param back into login...may stop emails
- Also added a debug script because I'm tired of typing the same
  commands over and over again when debugging
2021-02-13 11:33:05 -05:00
Kevin FronczakandGitHub 36ff8e4917 Merge pull request #431 from fronzbot/0.17.0rc0
v0.17.0rc0
2021-02-11 23:55:59 -05:00
Kevin Fronczak f42c49d221 RC Version bump 2021-02-11 23:49:11 -05:00
Kevin FronczakandGitHub 114f8fbfa8 Merge pull request #430 from fronzbot/add-clip-record-function
Add camera record function
2021-02-11 23:46:33 -05:00
Kevin FronczakandGitHub 8bbf03fdb4 Merge pull request #429 from fronzbot/add-logout-endpoint
Add logout endpoint
2021-02-11 23:44:49 -05:00
Kevin Fronczak 5b57982b41 Add record function for camera 2021-02-11 23:41:16 -05:00
Kevin Fronczak ecf7a5b13a Add logout endpoint (among some linting improvements) 2021-02-11 23:34:59 -05:00
Kevin FronczakandGitHub f68951fab7 Merge pull request #428 from fronzbot/update-login
Upgrade login, UUID
2021-02-11 22:42:12 -05:00
Kevin Fronczak 23eec5187d Add gen_uid test 2021-02-11 22:32:15 -05:00
Kevin Fronczak caa3e10648 Fixed errant comment 2021-02-11 22:22:05 -05:00
Kevin FronczakandGitHub 4bc0b80eea Merge pull request #427 from fronzbot/dependabot/pip/pre-commit-2.10.1
Bump pre-commit from 2.9.3 to 2.10.1
2021-02-11 22:17:17 -05:00
Kevin Fronczak 959a7dfa85 Modify uid to prefix with BlinkCamera 2021-02-11 11:55:27 -05:00
Kevin Fronczak 9e793b6748 Upgraded login endpoint, fixed uid generation 2021-02-11 11:21:26 -05:00
dependabot-preview[bot]andGitHub c75e057e83 Bump pre-commit from 2.9.3 to 2.10.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.9.3 to 2.10.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.9.3...v2.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-08 06:29:34 +00:00
Kevin FronczakandGitHub 6fa4aa6f75 Merge pull request #425 from fronzbot/0.16.5.rc0
0.16.5.rc0
2021-02-05 10:24:00 -05:00
Kevin FronczakandGitHub 89da167404 Update constants.py 2021-02-05 10:22:04 -05:00
Kevin FronczakandGitHub f2520e35fe Merge pull request #424 from fronzbot/fix-vid-download
Add content type to header to fix downloading
2021-02-05 10:21:10 -05:00
Kevin Fronczak aaaaea4dd1 Fix header test 2021-02-05 15:18:09 +00:00
Kevin Fronczak ec67d97809 Add content type to header to fix downloading 2021-02-05 15:11:03 +00:00
Kevin FronczakandGitHub f6118ea4a7 Merge pull request #420 from fronzbot/dependabot/pip/coverage-5.4
Bump coverage from 5.3.1 to 5.4
2021-01-27 07:37:23 -05:00
dependabot-preview[bot]andGitHub d257f676ec Bump coverage from 5.3.1 to 5.4
Bumps [coverage](https://github.com/nedbat/coveragepy) from 5.3.1 to 5.4.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/coverage-5.3.1...coverage-5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-27 06:09:36 +00:00
Kevin FronczakandGitHub 58f4a9df57 Merge pull request #419 from fronzbot/dependabot/pip/pytest-6.2.2
Bump pytest from 6.2.1 to 6.2.2
2021-01-26 08:10:02 -05:00
dependabot-preview[bot]andGitHub 9d91ce62d3 Bump pytest from 6.2.1 to 6.2.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.1...6.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-26 06:06:01 +00:00
Kevin FronczakandGitHub 511ca99cba Merge pull request #416 from fronzbot/dependabot/pip/pytest-cov-2.11.1
Bump pytest-cov from 2.11.0 to 2.11.1
2021-01-21 09:04:52 -05:00
dependabot-preview[bot]andGitHub 465701810b Bump pytest-cov from 2.11.0 to 2.11.1
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.11.0 to 2.11.1.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.11.0...v2.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-21 06:06:32 +00:00
Kevin FronczakandGitHub c8c0ed58df Merge pull request #415 from fronzbot/dependabot/pip/pytest-cov-2.11.0
Bump pytest-cov from 2.10.1 to 2.11.0
2021-01-19 07:30:16 -05:00
dependabot-preview[bot]andGitHub cfe3c10cec Bump pytest-cov from 2.10.1 to 2.11.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.10.1 to 2.11.0.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.10.1...v2.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-19 06:06:21 +00:00
Kevin FronczakandGitHub 014509bd64 Merge pull request #414 from fronzbot/dependabot/pip/pygments-2.7.4
Bump pygments from 2.7.3 to 2.7.4
2021-01-13 07:53:07 -05:00
dependabot-preview[bot]andGitHub f5d5d34eda Bump pygments from 2.7.3 to 2.7.4
Bumps [pygments](https://github.com/pygments/pygments) from 2.7.3 to 2.7.4.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.7.3...2.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-13 06:12:31 +00:00
Kevin FronczakandGitHub 64c8bec614 Merge pull request #405 from fronzbot/dependabot/pip/restructuredtext-lint-1.3.2
Bump restructuredtext-lint from 1.3.1 to 1.3.2
2021-01-05 09:43:00 -05:00
Kevin FronczakandGitHub 1b765035de Merge pull request #408 from fronzbot/dependabot/pip/pre-commit-2.9.3
Bump pre-commit from 2.7.1 to 2.9.3
2021-01-05 09:42:48 -05:00
dependabot-preview[bot]andGitHub 93f46bde6a Bump restructuredtext-lint from 1.3.1 to 1.3.2
Bumps [restructuredtext-lint](https://github.com/twolfson/restructuredtext-lint) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/twolfson/restructuredtext-lint/releases)
- [Changelog](https://github.com/twolfson/restructuredtext-lint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/twolfson/restructuredtext-lint/compare/1.3.1...1.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-05 14:37:34 +00:00
dependabot-preview[bot]andGitHub 4a09fcf06f Bump pre-commit from 2.7.1 to 2.9.3
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.7.1 to 2.9.3.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.7.1...v2.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-05 14:36:38 +00:00
Kevin FronczakandGitHub 12a2ae1326 Merge pull request #407 from fronzbot/dependabot/pip/pygments-2.7.3
Bump pygments from 2.7.1 to 2.7.3
2021-01-05 09:36:22 -05:00
Kevin FronczakandGitHub 325241d56a Merge pull request #411 from fronzbot/dependabot/pip/coverage-5.3.1
Bump coverage from 5.3 to 5.3.1
2021-01-05 09:36:04 -05:00
Kevin FronczakandGitHub 95664fea1f Merge pull request #410 from fronzbot/dependabot/pip/pytest-6.2.1
Bump pytest from 6.1.1 to 6.2.1
2021-01-05 09:35:22 -05:00
dependabot-preview[bot]andGitHub e2b43f4b06 Bump pytest from 6.1.1 to 6.2.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.1.1 to 6.2.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.1.1...6.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-05 14:29:23 +00:00
Kevin FronczakandGitHub 845c8a2a40 Merge pull request #413 from fronzbot/add-py39
Add py39
2021-01-05 09:27:31 -05:00
Kevin FronczakandGitHub 306f8b6cb4 Update tests.yml 2021-01-05 09:24:04 -05:00
Kevin FronczakandGitHub a704933a35 Update publish.yml 2021-01-05 09:23:29 -05:00
Kevin FronczakandGitHub 8bd09c3726 Delete .gitlab-ci.yml 2021-01-05 09:22:04 -05:00
Kevin FronczakandGitHub 6240364067 Update constants.py 2021-01-05 09:21:36 -05:00
Kevin FronczakandGitHub 9d37cfccd0 Update stale.yml 2021-01-05 09:12:56 -05:00
dependabot-preview[bot]andGitHub 125efd9436 Bump coverage from 5.3 to 5.3.1
Bumps [coverage](https://github.com/nedbat/coveragepy) from 5.3 to 5.3.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/coverage-5.3...coverage-5.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-21 06:32:59 +00:00
dependabot-preview[bot]andGitHub 6701fd39d8 Bump pygments from 2.7.1 to 2.7.3
Bumps [pygments](https://github.com/pygments/pygments) from 2.7.1 to 2.7.3.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.7.1...2.7.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-07 06:18:02 +00:00
Kevin Fronczak d4edf96f83 Dev version bump 2020-11-23 04:34:49 +00:00
21 changed files with 253 additions and 87 deletions
+9
View File
@@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
reviewers:
- fronzbot
+3 -2
View File
@@ -1,5 +1,5 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
@@ -8,7 +8,8 @@ daysUntilClose: 7
exemptLabels:
- Priority
- bug
- Help Wanted
- help wanted
- feature request
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: true
+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8]
python-version: [3.9]
steps:
- uses: actions/checkout@v2
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: '3.7'
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
+2 -2
View File
@@ -10,11 +10,11 @@ jobs:
build:
runs-on: ${{ matrix.platform }}
strategy:
max-parallel: 3
max-parallel: 4
matrix:
platform:
- ubuntu-latest
python-version: [3.6, 3.7, 3.8]
python-version: [3.6, 3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v2
+1
View File
@@ -14,3 +14,4 @@ build/*
docs/_build
*.log
venv
.session*
-25
View File
@@ -1,25 +0,0 @@
image: python
stages:
- test
before_script:
- curl -O https://bootstrap.pypa.io/get-pip.py
- python get-pip.py
- pip install tox
python35:
image: python:3.5
stage: test
script: tox -e py35
python36:
image: python:3.6
stage: test
script: tox -e py36
lint:
image: python:3.6
stage: test
script: tox -e lint
+30
View File
@@ -4,6 +4,36 @@ Changelog
A list of changes between each release
0.17.1 (2021-02-18)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Add delay parameter to Blink.download_videos method in order to throttle API during video retrieval (`#437 <https://github.com/fronzbot/blinkpy/pull/437>`__)
- Bump pylint to 2.6.2
0.17.0 (2021-02-15)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Bugfixes:**
- Fix video downloading bug (`#424 <https://github.com/fronzbot/blinkpy/pull/424>`__)
- Fix repeated authorization email bug (`#432 <https://github.com/fronzbot/blinkpy/pull/432>`__ and `#428 <https://github.com/fronzbot/blinkpy/pull/428>`__)
**New Features:**
- Add logout method (`#429 <https://github.com/fronzbot/blinkpy/pull/429>`__)
- Add camera record method (`#430 <https://github.com/fronzbot/blinkpy/pull/430>`__)
**Other:**
- Add debug script to main repo to help with general debug
- Upgrade login endpoint from v4 to v5
- Add python 3.9 support
- Bump coverage to 5.4
- Bump pytest to 6.2.2
- Bump pytest-cov to 2.11.1
- Bump pygments to 2.8.0
- Bump pre-commit to 2.10.1
- Bump restructuredtext-lint to 1.3.2
0.16.4 (2020-11-22)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3 -3
View File
@@ -174,13 +174,13 @@ Similar methods exist for individual cameras:
Download videos
----------------
You can also use this library to download all videos from the server. In order to do this, you must specify a ``path``. You may also specifiy a how far back in time to go to retrieve videos via the ``since=`` variable (a simple string such as ``"2017/09/21"`` is sufficient), as well as how many pages to traverse via the ``stop=`` variable. Note that by default, the library will search the first ten pages which is sufficient in most use cases. Additionally, you can specify one or more cameras via the ``camera=`` property. This can be a single string indicating the name of the camera, or a list of camera names. By default, it is set to the string ``'all'`` to grab videos from all cameras.
You can also use this library to download all videos from the server. In order to do this, you must specify a ``path``. You may also specifiy a how far back in time to go to retrieve videos via the ``since=`` variable (a simple string such as ``"2017/09/21"`` is sufficient), as well as how many pages to traverse via the ``stop=`` variable. Note that by default, the library will search the first ten pages which is sufficient in most use cases. Additionally, you can specify one or more cameras via the ``camera=`` property. This can be a single string indicating the name of the camera, or a list of camera names. By default, it is set to the string ``'all'`` to grab videos from all cameras. If you are downloading many items, setting the ``delay`` parameter is advised in order to throttle sequential calls to the API. By default this is set to ``1`` but can be any integer representing the number of seconds to delay between calls.
Example usage, which downloads all videos recorded since July 4th, 2018 at 9:34am to the ``/home/blink`` directory:
Example usage, which downloads all videos recorded since July 4th, 2018 at 9:34am to the ``/home/blink`` directory with a 2s delay between calls:
.. code:: python
blink.download_videos('/home/blink', since='2018/07/04 09:34')
blink.download_videos('/home/blink', since='2018/07/04 09:34', delay=2)
.. |Build Status| image:: https://github.com/fronzbot/blinkpy/workflows/build/badge.svg
+7 -3
View File
@@ -23,18 +23,16 @@ def request_login(
headers = {
"Host": DEFAULT_URL,
"Content-Type": "application/json",
"Accept": "/",
"user-agent": DEFAULT_USER_AGENT,
}
data = dumps(
{
"email": login_data["username"],
"password": login_data["password"],
"notification_key": login_data["notification_key"],
"unique_id": login_data["uid"],
"device_identifier": login_data["device_id"],
"client_name": "Computer",
"reauth": "false",
"reauth": True,
}
)
@@ -57,6 +55,12 @@ def request_verify(auth, blink, verify_key):
)
def request_logout(blink):
"""Logout of blink servers."""
url = f"{blink.urls.base_url}/api/v4/account/{blink.account_id}/client/{blink.client_id}/logout"
return http_post(blink, url=url)
def request_networks(blink):
"""Request all networks information."""
url = f"{blink.urls.base_url}/networks"
+25 -14
View File
@@ -58,7 +58,11 @@ class Auth:
"""Return authorization header."""
if self.token is None:
return None
return {"TOKEN_AUTH": self.token, "user-agent": DEFAULT_USER_AGENT}
return {
"TOKEN_AUTH": self.token,
"user-agent": DEFAULT_USER_AGENT,
"content-type": "application/json",
}
def create_session(self, opts=None):
"""Create a session for blink communication."""
@@ -104,8 +108,12 @@ class Auth:
if response.status_code == 200:
return response.json()
raise LoginError
except AttributeError:
raise LoginError
except AttributeError as error:
raise LoginError from error
def logout(self, blink):
"""Log out."""
return api.request_logout(blink)
def refresh_token(self):
"""Refresh auth token."""
@@ -115,21 +123,21 @@ class Auth:
self.login_response = self.login()
self.extract_login_info()
self.is_errored = False
except LoginError:
except LoginError as error:
_LOGGER.error("Login endpoint failed. Try again later.")
raise TokenRefreshFailed
except (TypeError, KeyError):
raise TokenRefreshFailed from error
except (TypeError, KeyError) as error:
_LOGGER.error("Malformed login response: %s", self.login_response)
raise TokenRefreshFailed
raise TokenRefreshFailed from error
return True
def extract_login_info(self):
"""Extract login info from login response."""
self.region_id = self.login_response["region"]["tier"]
self.region_id = self.login_response["account"]["tier"]
self.host = f"{self.region_id}.{BLINK_URL}"
self.token = self.login_response["authtoken"]["authtoken"]
self.client_id = self.login_response["client"]["id"]
self.account_id = self.login_response["account"]["id"]
self.token = self.login_response["auth"]["token"]
self.client_id = self.login_response["account"]["client_id"]
self.account_id = self.login_response["account"]["account_id"]
def startup(self):
"""Initialize tokens for communication."""
@@ -151,8 +159,8 @@ class Auth:
json_data = response.json()
except KeyError:
pass
except (AttributeError, ValueError):
raise BlinkBadResponse
except (AttributeError, ValueError) as error:
raise BlinkBadResponse from error
self.is_errored = False
return json_data
@@ -227,6 +235,9 @@ class Auth:
try:
json_resp = response.json()
blink.available = json_resp["valid"]
if not json_resp["valid"]:
_LOGGER.error("%s", json_resp["message"])
return False
except (KeyError, TypeError):
_LOGGER.error("Did not receive valid response from server.")
return False
@@ -235,7 +246,7 @@ class Auth:
def check_key_required(self):
"""Check if 2FA key is required."""
try:
if self.login_response["client"]["verification_required"]:
if self.login_response["account"]["client_verification_required"]:
return True
except (KeyError, TypeError):
pass
+8 -3
View File
@@ -264,7 +264,9 @@ class Blink:
"""Save login data to file."""
util.json_save(self.auth.login_attributes, file_name)
def download_videos(self, path, since=None, camera="all", stop=10, debug=False):
def download_videos(
self, path, since=None, camera="all", stop=10, delay=1, debug=False
):
"""
Download all videos from server since specified time.
@@ -275,6 +277,7 @@ class Blink:
:param camera: Camera name to retrieve. Defaults to "all".
Use a list for multiple cameras.
:param stop: Page to stop on (~25 items per page. Default page 10).
:param delay: Number of seconds to wait in between subsequent video downloads.
:param debug: Set to TRUE to prevent downloading of items.
Instead of downloading, entries will be printed to log.
"""
@@ -301,9 +304,9 @@ class Blink:
_LOGGER.info("No videos found on page %s. Exiting.", page)
break
self._parse_downloaded_items(result, camera, path, debug)
self._parse_downloaded_items(result, camera, path, delay, debug)
def _parse_downloaded_items(self, result, camera, path, debug):
def _parse_downloaded_items(self, result, camera, path, delay, debug):
"""Parse downloaded videos."""
for item in result:
try:
@@ -351,6 +354,8 @@ class Blink:
"Address: {address}, Filename: {filename}"
)
)
if delay > 0:
time.sleep(delay)
class BlinkSetupError(Exception):
+4
View File
@@ -98,6 +98,10 @@ class BlinkCamera:
self.sync.blink, self.network_id, self.camera_id
)
def record(self):
"""Initiate clip recording."""
return api.request_new_video(self.sync.blink, self.network_id, self.camera_id)
def get_media(self, media_type="image"):
"""Download media (image or video)."""
url = self.thumbnail
+4 -3
View File
@@ -3,8 +3,8 @@
import os
MAJOR_VERSION = 0
MINOR_VERSION = 16
PATCH_VERSION = 4
MINOR_VERSION = 18
PATCH_VERSION = "0.dev0"
__version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}.{PATCH_VERSION}"
@@ -34,6 +34,7 @@ PROJECT_CLASSIFIERS = [
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Topic :: Home Automation",
]
@@ -48,7 +49,7 @@ URLS
BLINK_URL = "immedia-semi.com"
DEFAULT_URL = f"rest-prod.{BLINK_URL}"
BASE_URL = f"https://{DEFAULT_URL}"
LOGIN_ENDPOINT = f"{BASE_URL}/api/v4/account/login"
LOGIN_ENDPOINT = f"{BASE_URL}/api/v5/account/login"
"""
Dictionaries
+7 -7
View File
@@ -33,10 +33,13 @@ def json_save(data, file_name):
json.dump(data, json_file, indent=4)
def gen_uid(size):
def gen_uid(size, uid_format=False):
"""Create a random sring."""
full_token = secrets.token_hex(size)
return full_token[0:size]
if uid_format:
token = f"BlinkCamera_{secrets.token_hex(4)}-{secrets.token_hex(2)}-{secrets.token_hex(2)}-{secrets.token_hex(2)}-{secrets.token_hex(6)}"
else:
token = secrets.token_hex(size)
return token
def time_to_seconds(timestamp):
@@ -79,10 +82,7 @@ def prompt_login_data(data):
def validate_login_data(data):
"""Check for missing keys."""
data["uid"] = data.get("uid", gen_uid(const.SIZE_UID))
data["notification_key"] = data.get(
"notification_key", gen_uid(const.SIZE_NOTIFICATION_KEY)
)
data["uid"] = data.get("uid", gen_uid(const.SIZE_UID, uid_format=True))
data["device_id"] = data.get("device_id", const.DEVICE_ID)
return data
+77
View File
@@ -0,0 +1,77 @@
"""Login testing script."""
import sys
import os
from blinkpy.blinkpy import Blink
from blinkpy.auth import Auth
from blinkpy.helpers.util import json_load, json_save
save_session = False
print("")
print("Blink Login Debug Script ...")
print(" ... Loading previous session information.")
cwd = os.getcwd()
print(f" ... Looking in {cwd}.")
session_path = os.path.join(cwd, ".session_debug")
session = json_load(session_path)
try:
auth_file = session["file"]
except (TypeError, KeyError):
print(" ... Please input location of auth file")
auth_file = input(" Must contain username and password: ")
save_session = True
data = json_load(auth_file)
if data is None:
print(f" ... Please fix file contents of {auth_file}.")
print(" ... Exiting.")
sys.exit(1)
try:
username = data["username"]
password = data["password"]
except KeyError:
print(f" ... File contents of {auth_file} incorrect.")
print(" ... Require username and password at minimum.")
print(" ... Exiting.")
sys.exit(1)
if save_session:
print(f" ... Saving session file to {session_path}.")
json_save({"file": auth_file}, session_path)
blink = Blink()
auth = Auth(data)
blink.auth = auth
print(" ... Starting Blink.")
print("")
blink.start()
print("")
print(" ... Printing login response.")
print("")
print(blink.auth.login_response)
print("")
print(" ... Printing login attributes.")
print("")
print(blink.auth.login_attributes)
print("")
input(" ... Press any key to continue: ")
print(" ... Deactivating auth token.")
blink.auth.token = "foobar"
print(f"\t - blink.auth.token = {blink.auth.token}")
print(" ... Attempting login.")
print("")
blink.start()
print("")
print(" ... Printing login response.")
print("")
print(blink.auth.login_response)
print("")
print(" ... Printing login attributes.")
print("")
print(blink.auth.login_attributes)
print("")
rint(" ... Done.")
print("")
+10 -10
View File
@@ -1,14 +1,14 @@
black==19.10b0
coverage==5.3
flake8==3.8.4
flake8-docstrings==1.5.0
pre-commit==2.7.1
pylint==2.6.0
pydocstyle==5.1.1
pytest==6.1.1
pytest-cov==2.10.1
coverage==5.5
flake8==3.9.1
flake8-docstrings==1.6.0
pre-commit==2.12.1
pylint==2.8.2
pydocstyle==6.0.0
pytest==6.2.4
pytest-cov==2.11.1
pytest-sugar==0.9.4
pytest-timeout==1.4.2
restructuredtext-lint==1.3.1
pygments==2.7.1
restructuredtext-lint==1.3.2
pygments==2.9.0
testtools>=2.4.0
+16 -9
View File
@@ -42,7 +42,6 @@ class TestAuth(unittest.TestCase):
"username": "foo",
"password": "bar",
"uid": 1234,
"notification_key": 1234,
"device_id": const.DEVICE_ID,
}
self.assertDictEqual(auth.data, expected_data)
@@ -62,7 +61,6 @@ class TestAuth(unittest.TestCase):
"username": "foo",
"password": "bar",
"uid": 1234,
"notification_key": 1234,
"device_id": const.DEVICE_ID,
}
self.assertDictEqual(auth.data, expected_data)
@@ -128,7 +126,11 @@ class TestAuth(unittest.TestCase):
def test_header(self):
"""Test header data."""
self.auth.token = "bar"
expected_header = {"TOKEN_AUTH": "bar", "user-agent": const.DEFAULT_USER_AGENT}
expected_header = {
"TOKEN_AUTH": "bar",
"user-agent": const.DEFAULT_USER_AGENT,
"content-type": "application/json",
}
self.assertDictEqual(self.auth.header, expected_header)
def test_header_no_token(self):
@@ -161,10 +163,8 @@ class TestAuth(unittest.TestCase):
def test_refresh_token(self, mock_login):
"""Test refresh token method."""
mock_login.return_value = {
"region": {"tier": "test"},
"authtoken": {"authtoken": "foobar"},
"client": {"id": 1234},
"account": {"id": 5678},
"account": {"account_id": 5678, "client_id": 1234, "tier": "test"},
"auth": {"token": "foobar"},
}
self.assertTrue(self.auth.refresh_token())
self.assertEqual(self.auth.region_id, "test")
@@ -186,12 +186,19 @@ class TestAuth(unittest.TestCase):
self.auth.login_response = {}
self.assertFalse(self.auth.check_key_required())
self.auth.login_response = {"client": {"verification_required": False}}
self.auth.login_response = {"account": {"client_verification_required": False}}
self.assertFalse(self.auth.check_key_required())
self.auth.login_response = {"client": {"verification_required": True}}
self.auth.login_response = {"account": {"client_verification_required": True}}
self.assertTrue(self.auth.check_key_required())
@mock.patch("blinkpy.auth.api.request_logout")
def test_logout(self, mock_req):
"""Test logout method."""
mock_blink = MockBlink(None)
mock_req.return_value = True
self.assertTrue(self.auth.logout(mock_blink))
@mock.patch("blinkpy.auth.api.request_verify")
def test_send_auth_key(self, mock_req):
"""Check sending of auth key."""
+27 -2
View File
@@ -2,6 +2,7 @@
import unittest
from unittest import mock
import logging
import time
from blinkpy import blinkpy
from blinkpy.sync_module import BlinkSyncModule
@@ -88,9 +89,33 @@ class TestBlinkFunctions(unittest.TestCase):
"DEBUG:blinkpy.blinkpy:foo: /bar.mp4 is marked as deleted.",
]
with self.assertLogs() as dl_log:
blink.download_videos("/tmp", stop=2)
blink.download_videos("/tmp", stop=2, delay=0)
self.assertEqual(dl_log.output, expected_log)
@mock.patch("blinkpy.blinkpy.api.request_videos")
def test_parse_downloaded_throttle(self, mock_req):
"""Test ability to parse downloaded items list."""
generic_entry = {
"created_at": "1970",
"device_name": "foo",
"deleted": False,
"media": "/bar.mp4",
}
result = [generic_entry]
mock_req.return_value = {"media": result}
self.blink.last_refresh = 0
start = time.time()
self.blink.download_videos("/tmp", stop=2, delay=0, debug=True)
now = time.time()
delta = now - start
self.assertTrue(delta < 0.1)
start = time.time()
self.blink.download_videos("/tmp", stop=2, delay=0.1, debug=True)
now = time.time()
delta = now - start
self.assertTrue(delta >= 0.1)
@mock.patch("blinkpy.blinkpy.api.request_videos")
def test_parse_camera_not_in_list(self, mock_req):
"""Test ability to parse downloaded items list."""
@@ -113,7 +138,7 @@ class TestBlinkFunctions(unittest.TestCase):
"DEBUG:blinkpy.blinkpy:Skipping videos for foo.",
]
with self.assertLogs() as dl_log:
blink.download_videos("/tmp", camera="bar", stop=2)
blink.download_videos("/tmp", camera="bar", stop=2, delay=0)
self.assertEqual(dl_log.output, expected_log)
@mock.patch("blinkpy.blinkpy.api.request_network_update")
+17 -1
View File
@@ -3,7 +3,7 @@
import unittest
from unittest import mock
import time
from blinkpy.helpers.util import json_load, Throttle, time_to_seconds
from blinkpy.helpers.util import json_load, Throttle, time_to_seconds, gen_uid
class TestUtil(unittest.TestCase):
@@ -132,3 +132,19 @@ class TestUtil(unittest.TestCase):
self.assertEqual(json_load("fake.file"), None)
with mock.patch("builtins.open", mock.mock_open(read_data="")):
self.assertEqual(json_load("fake.file"), None)
def test_gen_uid(self):
"""Test gen_uid formatting."""
val1 = gen_uid(8)
val2 = gen_uid(8, uid_format=True)
self.assertEqual(len(val1), 16)
self.assertTrue(val2.startswith("BlinkCamera_"))
val2_cut = val2.split("_")
val2_split = val2_cut[1].split("-")
self.assertEqual(len(val2_split[0]), 8)
self.assertEqual(len(val2_split[1]), 4)
self.assertEqual(len(val2_split[2]), 4)
self.assertEqual(len(val2_split[3]), 4)
self.assertEqual(len(val2_split[4]), 12)
+1 -1
View File
@@ -1,5 +1,5 @@
[tox]
envlist = build, py36, py37, py38, lint
envlist = build, py36, py37, py38, py39, lint
skip_missing_interpreters = True
skipsdist = True