├── .alexignore ├── .alexrc ├── .alexrc.license ├── .cz.toml ├── .dir-locals.el.in ├── .dockerignore ├── .env.in ├── .github └── workflows │ └── build-test.yml ├── .gitignore ├── .gitlab-ci.yml ├── .nvmrc ├── .nvmrc.license ├── .pre-commit-config.yaml ├── .prettierignore ├── .prettierrc.json ├── .prettierrc.json.license ├── .proselintrc.json ├── .proselintrc.json.license ├── .prospector.yaml ├── .reuse └── dep5 ├── .tox └── .gitignore ├── .vale.ini ├── Dockerfile ├── LICENSES └── MIT.txt ├── Makefile ├── NEWS-VERSION.rst ├── NEWS.rst ├── README.rst ├── bin ├── cz-check-bump.py ├── docker-add-volume-paths.sh ├── entrypoint.sh ├── get-base-version.py ├── hadolint.sh ├── test-lint-docs.sh ├── test-lint-prose.sh ├── test-lint-prospector.sh ├── vale-map-formats.py └── vale-set-rule-levels.py ├── build-host ├── Dockerfile ├── Makefile ├── README.rst └── bin │ ├── entrypoint.sh │ ├── init-job.sh │ └── install-codecov.sh ├── dist └── .gitignore ├── docker-compose-servarr.yml ├── docker-compose.override.yml ├── docker-compose.yml ├── docs ├── _static │ └── .gitignore ├── conf.py ├── contributing.rst ├── index.rst └── todo.rst ├── gitlab-runner ├── cache │ └── .gitignore ├── certs │ └── .gitignore ├── config │ └── config.toml.in └── docker-compose.yml ├── home ├── .cache │ └── .gitignore ├── .config │ └── .gitignore ├── .gitignore ├── .local │ ├── .gitignore │ └── share │ │ └── .gitignore └── .pypirc.in ├── logo.png ├── logo.png.license ├── logo.svg ├── logo.svg.license ├── newsfragments ├── +export-subcommand.feature.rst ├── +free-space-avoid-timeouts.bugfix.rst ├── +free-space-disk-usage.bugfix.rst ├── +free-space-done-date-guess.bugfix.rst ├── +free-space-orphans-incomplete.bugfix.rst ├── +free-space-orphans-unwanted.bugfix.rst ├── +free-space-pause-download.removal.rst ├── +free-space-previous-delete.bugfix.rst ├── +free-space-socket-error.bugfix.rst ├── +operations-files-filters.feature.rst ├── +portion-divide-by-zero.bugfix.rst ├── +re-add-subcommand.feature.rst ├── +upgrade-requirements.bugfix.rst └── .gitignore ├── package.json ├── package.json.license ├── pyproject.toml ├── radarr └── config │ └── .gitignore ├── requirements ├── build.txt.in ├── py310 │ ├── build.txt │ ├── devel.txt │ ├── test.txt │ └── user.txt ├── py311 │ ├── build.txt │ ├── devel.txt │ ├── test.txt │ └── user.txt ├── py312 │ ├── build.txt │ ├── devel.txt │ ├── test.txt │ └── user.txt ├── py38 │ ├── build.txt │ ├── devel.txt │ ├── test.txt │ └── user.txt └── py39 │ ├── build.txt │ ├── devel.txt │ ├── test.txt │ └── user.txt ├── setup.cfg ├── sonarr └── config │ └── .gitignore ├── src ├── prunerr.egg-info │ └── .gitignore └── prunerr │ ├── __init__.py │ ├── __main__.py │ ├── commands │ ├── __init__.py │ └── export.py │ ├── downloadclient.py │ ├── downloaditem.py │ ├── home │ └── .config │ │ └── prunerr.yml │ ├── operations.py │ ├── py.typed │ ├── runner.py │ ├── servarr.py │ └── utils.py ├── styles ├── .gitignore ├── Google │ ├── AMPM.yml │ ├── Acronyms.yml │ ├── Colons.yml │ ├── Contractions.yml │ ├── DateFormat.yml │ ├── Ellipses.yml │ ├── EmDash.yml │ ├── Exclamation.yml │ ├── FirstPerson.yml │ ├── Gender.yml │ ├── GenderBias.yml │ ├── HeadingPunctuation.yml │ ├── Headings.yml │ ├── Latin.yml │ ├── LyHyphens.yml │ ├── OptionalPlurals.yml │ ├── Ordinal.yml │ ├── OxfordComma.yml │ ├── Parens.yml │ ├── Passive.yml │ ├── Periods.yml │ ├── Quotes.yml │ ├── Ranges.yml │ ├── Semicolons.yml │ ├── Slang.yml │ ├── Spacing.yml │ ├── Spelling.yml │ ├── Units.yml │ ├── We.yml │ ├── Will.yml │ ├── WordList.yml │ └── meta.json ├── Joblint │ ├── Acronyms.yml │ ├── Benefits.yml │ ├── Bro.yml │ ├── Competitive.yml │ ├── Derogatory.yml │ ├── DevEnv.yml │ ├── DumbTitles.yml │ ├── Gendered.yml │ ├── Hair.yml │ ├── LegacyTech.yml │ ├── Meritocracy.yml │ ├── Profanity.yml │ ├── Reassure.yml │ ├── Sexualised.yml │ ├── Starter.yml │ ├── TechTerms.yml │ ├── Visionary.yml │ └── meta.json ├── Microsoft │ ├── AMPM.yml │ ├── Accessibility.yml │ ├── Acronyms.yml │ ├── Adverbs.yml │ ├── Auto.yml │ ├── Avoid.yml │ ├── Contractions.yml │ ├── Dashes.yml │ ├── DateFormat.yml │ ├── DateNumbers.yml │ ├── DateOrder.yml │ ├── Ellipses.yml │ ├── FirstPerson.yml │ ├── Foreign.yml │ ├── Gender.yml │ ├── GenderBias.yml │ ├── GeneralURL.yml │ ├── HeadingAcronyms.yml │ ├── HeadingColons.yml │ ├── HeadingPunctuation.yml │ ├── Headings.yml │ ├── Hyphens.yml │ ├── Negative.yml │ ├── Ordinal.yml │ ├── OxfordComma.yml │ ├── Passive.yml │ ├── Percentages.yml │ ├── Plurals.yml │ ├── Quotes.yml │ ├── RangeTime.yml │ ├── Semicolon.yml │ ├── SentenceLength.yml │ ├── Spacing.yml │ ├── Suspended.yml │ ├── Terms.yml │ ├── URLFormat.yml │ ├── Units.yml │ ├── Vocab.yml │ ├── We.yml │ ├── Wordiness.yml │ └── meta.json ├── Readability │ ├── AutomatedReadability.yml │ ├── ColemanLiau.yml │ ├── FleschKincaid.yml │ ├── FleschReadingEase.yml │ ├── GunningFog.yml │ ├── LIX.yml │ ├── SMOG.yml │ └── meta.json ├── RedHat │ ├── Abbreviations.yml │ ├── CaseSensitiveTerms.yml │ ├── Conjunctions.yml │ ├── ConsciousLanguage.yml │ ├── Contractions.yml │ ├── Definitions.yml │ ├── DoNotUseTerms.yml │ ├── Ellipses.yml │ ├── EmDash.yml │ ├── HeadingPunctuation.yml │ ├── Headings.yml │ ├── Hyphens.yml │ ├── MergeConflictMarkers.yml │ ├── OxfordComma.yml │ ├── PascalCamelCase.yml │ ├── PassiveVoice.yml │ ├── ProductCentricWriting.yml │ ├── ReadabilityGrade.yml │ ├── ReleaseNotes.yml │ ├── RepeatedWords.yml │ ├── SelfReferentialText.yml │ ├── SentenceLength.yml │ ├── SimpleWords.yml │ ├── Slash.yml │ ├── SmartQuotes.yml │ ├── Spacing.yml │ ├── Spelling.yml │ ├── Symbols.yml │ ├── TermsErrors.yml │ ├── TermsSuggestions.yml │ ├── TermsWarnings.yml │ ├── UserReplacedValues.yml │ ├── Using.yml │ └── meta.json ├── Vocab │ ├── Code │ │ ├── accept.txt │ │ ├── accept.txt.license │ │ ├── reject.txt │ │ └── reject.txt.license │ └── Markup │ │ ├── accept.txt │ │ ├── accept.txt.license │ │ ├── reject.txt │ │ └── reject.txt.license ├── alex │ ├── Ablist.yml │ ├── Condescending.yml │ ├── Gendered.yml │ ├── LGBTQ.yml │ ├── OCD.yml │ ├── Press.yml │ ├── ProfanityLikely.yml │ ├── ProfanityMaybe.yml │ ├── ProfanityUnlikely.yml │ ├── Race.yml │ ├── Suicide.yml │ └── meta.json ├── code.ini ├── local │ ├── AutomatedReadability.yml │ ├── ColemanLiau.yml │ ├── FleschKincaid.yml │ ├── FleschReadingEase.yml │ ├── GunningFog.yml │ ├── LIX.yml │ └── SMOG.yml ├── proselint │ ├── Airlinese.yml │ ├── AnimalLabels.yml │ ├── Annotations.yml │ ├── Apologizing.yml │ ├── Archaisms.yml │ ├── But.yml │ ├── Cliches.yml │ ├── CorporateSpeak.yml │ ├── Currency.yml │ ├── Cursing.yml │ ├── DateCase.yml │ ├── DateMidnight.yml │ ├── DateRedundancy.yml │ ├── DateSpacing.yml │ ├── DenizenLabels.yml │ ├── Diacritical.yml │ ├── GenderBias.yml │ ├── GroupTerms.yml │ ├── Hedging.yml │ ├── Hyperbole.yml │ ├── Jargon.yml │ ├── LGBTOffensive.yml │ ├── LGBTTerms.yml │ ├── Malapropisms.yml │ ├── Needless.yml │ ├── Nonwords.yml │ ├── Oxymorons.yml │ ├── P-Value.yml │ ├── RASSyndrome.yml │ ├── Skunked.yml │ ├── Spelling.yml │ ├── Typography.yml │ ├── Uncomparables.yml │ ├── Very.yml │ └── meta.json └── write-good │ ├── Cliches.yml │ ├── E-Prime.yml │ ├── Illusions.yml │ ├── Passive.yml │ ├── So.yml │ ├── ThereIs.yml │ ├── TooWordy.yml │ ├── Weasel.yml │ └── meta.json ├── tests └── prunerrtests │ ├── Makefile │ ├── __init__.py │ ├── example-5s.mkv │ ├── home │ ├── daemon │ │ └── .config │ │ │ ├── prunerr-example.yml │ │ │ └── prunerr.yml │ ├── download-client-only │ │ └── .config │ │ │ └── prunerr.yml │ ├── download-clients │ │ └── .config │ │ │ └── prunerr.yml │ ├── download-items │ │ └── .config │ │ │ └── prunerr.yml │ ├── empty │ │ └── .config │ │ │ └── prunerr.yml │ ├── move-exec │ │ └── .config │ │ │ └── prunerr.yml │ └── review-edge-cases │ │ └── .config │ │ └── prunerr.yml │ ├── responses │ ├── daemon │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ ├── 1-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ ├── 1-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ ├── 1-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ ├── 1-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ ├── 1-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue │ │ │ │ └── 1%3Fapikey%3D%26blacklist%3Dtrue │ │ │ │ │ └── DELETE │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ ├── 1-response │ │ │ │ └── response.json │ │ │ │ ├── 2-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── default │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue │ │ │ │ └── 1%3Fapikey%3D%26blacklist%3Dtrue │ │ │ │ │ └── DELETE │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-remove │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── download-client-only │ │ └── http │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── download-clients │ │ ├── http │ │ │ ├── 192.168.1.2%3A80 │ │ │ │ └── transmission │ │ │ │ │ └── rpc │ │ │ │ │ └── POST │ │ │ │ │ ├── 00-session-get │ │ │ │ │ ├── request.json │ │ │ │ │ └── response.json │ │ │ │ │ ├── 01-torrent-get │ │ │ │ │ ├── request.json │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A7878 │ │ │ │ └── api │ │ │ │ │ └── v3 │ │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ │ └── GET │ │ │ │ │ │ ├── 0-response │ │ │ │ │ │ └── response.json │ │ │ │ │ │ └── request-headers.json │ │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ │ └── GET │ │ │ │ │ │ ├── 0-response │ │ │ │ │ │ └── response.json │ │ │ │ │ │ └── request-headers.json │ │ │ │ │ └── system │ │ │ │ │ └── status%3Fapikey%3D │ │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ │ └── api │ │ │ │ │ └── v3 │ │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ │ └── GET │ │ │ │ │ │ ├── 0-response │ │ │ │ │ │ └── response.json │ │ │ │ │ │ └── request-headers.json │ │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ │ └── GET │ │ │ │ │ │ ├── 0-response │ │ │ │ │ │ └── response.json │ │ │ │ │ │ └── request-headers.json │ │ │ │ │ └── system │ │ │ │ │ └── status%3Fapikey%3D │ │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ ├── transmission%3Asecret%40localhost%3A9091 │ │ │ │ └── transmission │ │ │ │ │ └── rpc │ │ │ │ │ └── POST │ │ │ │ │ ├── 00-session-get │ │ │ │ │ ├── request.json │ │ │ │ │ └── response.json │ │ │ │ │ ├── 01-torrent-get │ │ │ │ │ ├── request.json │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ └── transmission%40192.168.1.1%3A9091 │ │ │ │ └── transmission │ │ │ │ └── rpc │ │ │ │ └── POST │ │ │ │ ├── 00-session-get │ │ │ │ ├── request.json │ │ │ │ └── response.json │ │ │ │ ├── 01-torrent-get │ │ │ │ ├── request.json │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ └── https │ │ │ ├── transmission.example.com%3A443 │ │ │ └── rpc │ │ │ │ └── POST │ │ │ │ ├── 00-session-get │ │ │ │ ├── request.json │ │ │ │ └── response.json │ │ │ │ ├── 01-torrent-get │ │ │ │ ├── request.json │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission.foo.example.com%3A443 │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── download-items │ │ └── http │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── export-empty │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── movie%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── series%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── export │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── history │ │ │ │ └── movie%3Fapikey%3D%26movieId%3D1 │ │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── movie%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── movieFile%3Fapikey%3D%26movieId%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── episode%3Fapikey%3D%26seriesId%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── episodeFile%3Fapikey%3D%26seriesId%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── history │ │ │ │ └── series%3Fapikey%3D%26seriesId%3D1 │ │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── series%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A9696 │ │ │ └── 1 │ │ │ │ └── download%3Fapikey%3D%26link%3D%26file%3DFoo.Series.1970.S01E02.Grault.Episode.Title.WEB-DL.x265.HEVC-RELEASER │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-add │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-torrent-set-location │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 04-torrent-verify │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 05-torrent-start │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 06-torrent-set │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 07-torrent-verify │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 08-torrent-start │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 09-torrent-verify │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 10-torrent-start │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── free-space-imported-insufficient │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── free-space-imported-sufficient │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── free-space-orphans │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── free-space-remaining │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── free-space-unregistered │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-remove │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── free-space-upgraded-insufficient │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-remove │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-completed │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-deleted │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-grabbed │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-import │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── history%3Fapikey%3D%26pageSize%3D250%26page%3D1%26downloadId%3D1FAFED76F4264B14934C13D7A306F94FEA4B3184 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-set-location │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-imported-before │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── history%3Fapikey%3D%26pageSize%3D250%26page%3D1%26downloadId%3D1FAFED76F4264B14934C13D7A306F94FEA4B3184 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-set-location │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-imported │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── move-ungrabbed │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── review-downloading │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue │ │ │ │ └── 2%3Fapikey%3D%26blacklist%3Dtrue │ │ │ │ │ └── DELETE │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-remove │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 04-torrent-set │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 05-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 06-torrent-set │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 07-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── review-edge-cases │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue │ │ │ │ ├── 1%3Fapikey%3D │ │ │ │ │ └── DELETE │ │ │ │ │ │ ├── 0-response │ │ │ │ │ │ └── response.json │ │ │ │ │ │ └── request-headers.json │ │ │ │ └── 2%3Fapikey%3D │ │ │ │ │ └── DELETE │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 02-torrent-remove │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 03-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 04-torrent-remove │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 05-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ ├── review-reviewed │ │ └── http │ │ │ ├── localhost%3A7878 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── localhost%3A8989 │ │ │ └── api │ │ │ │ └── v3 │ │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ │ └── GET │ │ │ │ │ ├── 0-response │ │ │ │ │ └── response.json │ │ │ │ │ └── request-headers.json │ │ │ │ └── system │ │ │ │ └── status%3Fapikey%3D │ │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ │ └── transmission │ │ │ └── rpc │ │ │ └── POST │ │ │ ├── 00-session-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ ├── 01-torrent-get │ │ │ ├── request.json │ │ │ └── response.json │ │ │ └── request-headers.json │ └── verify │ │ └── http │ │ ├── localhost%3A7878 │ │ └── api │ │ │ └── v3 │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── system │ │ │ └── status%3Fapikey%3D │ │ │ └── GET │ │ │ ├── 0-response │ │ │ └── response.json │ │ │ └── request-headers.json │ │ ├── localhost%3A8989 │ │ └── api │ │ │ └── v3 │ │ │ ├── downloadclient%3Fapikey%3D │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ ├── queue%3Fapikey%3D%26pageSize%3D250%26page%3D1 │ │ │ └── GET │ │ │ │ ├── 0-response │ │ │ │ └── response.json │ │ │ │ └── request-headers.json │ │ │ └── system │ │ │ └── status%3Fapikey%3D │ │ │ └── GET │ │ │ ├── 0-response │ │ │ └── response.json │ │ │ └── request-headers.json │ │ └── transmission%3Asecret%40localhost%3A9091 │ │ └── transmission │ │ └── rpc │ │ └── POST │ │ ├── 00-session-get │ │ ├── request.json │ │ └── response.json │ │ ├── 01-torrent-get │ │ ├── request.json │ │ └── response.json │ │ ├── 02-torrent-verify │ │ ├── request.json │ │ └── response.json │ │ ├── 03-torrent-get │ │ ├── request.json │ │ └── response.json │ │ ├── 04-torrent-get │ │ ├── request.json │ │ └── response.json │ │ ├── 05-torrent-start │ │ ├── request.json │ │ └── response.json │ │ └── request-headers.json │ ├── test_cli.py │ ├── test_daemon.py │ ├── test_downloadclient.py │ ├── test_downloaditem.py │ ├── test_export.py │ ├── test_free_space.py │ ├── test_move.py │ ├── test_operations.py │ ├── test_re_add.py │ ├── test_review.py │ ├── test_runner.py │ ├── test_servarr.py │ └── test_verify.py ├── towncrier.toml ├── tox.ini ├── transmission ├── etc │ ├── crontabs │ │ ├── abc │ │ └── root │ └── s6-overlay │ │ └── s6-rc.d │ │ └── svc-transmission │ │ └── finish └── usr │ └── local │ └── bin │ ├── transmission-config-space-shutdown │ └── transmission-pause-download ├── var-docker ├── .gitignore ├── media │ └── Library │ │ └── .gitignore ├── py310 │ ├── .gitignore │ ├── .tox │ │ └── .gitignore │ └── prunerr.egg-info │ │ └── .gitignore ├── py311 │ ├── .gitignore │ ├── .tox │ │ └── .gitignore │ └── prunerr.egg-info │ │ └── .gitignore ├── py312 │ ├── .gitignore │ ├── .tox │ │ └── .gitignore │ └── prunerr.egg-info │ │ └── .gitignore ├── py38 │ ├── .gitignore │ ├── .tox │ │ └── .gitignore │ └── prunerr.egg-info │ │ └── .gitignore └── py39 │ ├── .gitignore │ ├── .tox │ └── .gitignore │ └── prunerr.egg-info │ └── .gitignore └── var └── .gitignore /.alexignore: -------------------------------------------------------------------------------- 1 | .gitignore -------------------------------------------------------------------------------- /.alexrc: -------------------------------------------------------------------------------- 1 | { 2 | "allow": [ 3 | "master", 4 | "failure", 5 | "failures", 6 | "failed", 7 | "host-hostess", 8 | "hostesses-hosts", 9 | "kill", 10 | "black", 11 | "blacks", 12 | "dummy", 13 | "blacklist" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /.alexrc.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /.cz.toml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | [tool.commitizen] 6 | # Parse commit messages according to conventional commits to decide the next version 7 | # increment, major, minor or patch, and create the Version Control System (VCS) 8 | # tag. Also supplies a VCS integration to enforce conventional commit messages: 9 | # https://commitizen-tools.github.io/commitizen/ 10 | name = "cz_conventional_commits" 11 | changelog_start_rev = "v0.0.0" 12 | version = "3.0.0b0" 13 | tag_format = "v$version" 14 | annotated_tag = true 15 | gpg_sign = true 16 | bump_message = """\ 17 | build(release): Version $current_version → $new_version 18 | 19 | [actions skip] 20 | [ci release] 21 | """ 22 | -------------------------------------------------------------------------------- /.dir-locals.el.in: -------------------------------------------------------------------------------- 1 | ; SPDX-FileCopyrightText: 2023 Ross Patterson 2 | ; 3 | ; SPDX-License-Identifier: MIT 4 | 5 | ;;; Directory Local Variables 6 | ;;; For more information see (info \"(emacs) Directory Variables\") 7 | 8 | ((python-mode 9 | . ((flycheck-python-prospector-executable 10 | . "${PWD}/.tox/${PYTHON_ENV}/bin/prospector") 11 | (flycheck-python-flake8-executable . "${PWD}/.tox/${PYTHON_ENV}/bin/python") 12 | (flycheck-python-pylint-executable . "${PWD}/.tox/${PYTHON_ENV}/bin/pylint") 13 | (flycheck-python-mypy-executable . "${PWD}/.tox/${PYTHON_ENV}/bin/mypy"))) 14 | (dockerfile-mode 15 | . ((flycheck-dockerfile-hadolint-executable . "${PWD}/bin/hadolint.sh")))) 16 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .gitignore -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 18 2 | -------------------------------------------------------------------------------- /.nvmrc.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .gitignore -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.prettierrc.json.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /.proselintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "checks": { 3 | "typography.symbols": false, 4 | "annotations.misc": false 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.proselintrc.json.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /.tox/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /NEWS-VERSION.rst: -------------------------------------------------------------------------------- 1 | prunerr 3.0.0b0 (2023-11-09) 2 | ============================ 3 | 4 | Features 5 | -------- 6 | 7 | - Add support for setting the download client's timeout. This involves adding support for 8 | configuring each download client individually, as opposed to only a list of URLs, and as 9 | such requires a configuration change:: 10 | 11 | ... 12 | download-clients: 13 | Transmission: 14 | url: "http://transmission:secret@localhost:9091/transmission/" 15 | timeout: "30.0" 16 | max-download-bandwidth: 100 17 | min-download-time-margin: 600 18 | ... 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /bin/hadolint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-FileCopyrightText: 2023 Ross Patterson 4 | # 5 | # SPDX-License-Identifier: MIT 6 | 7 | # Wrapper for running the Dockerfile linter in a container. 8 | 9 | set -eu -o pipefail 10 | shopt -s inherit_errexit 11 | if test -n "${DEBUG:=}" 12 | then 13 | # Echo commands for easier debugging 14 | PS4='$0:$LINENO+' 15 | set -x 16 | fi 17 | 18 | 19 | main() { 20 | # Delegate to the container 21 | exec docker compose run --rm hadolint "$@" 22 | } 23 | 24 | 25 | main "$@" 26 | -------------------------------------------------------------------------------- /bin/test-lint-prose.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-FileCopyrightText: 2023 Ross Patterson 4 | # 5 | # SPDX-License-Identifier: MIT 6 | 7 | # Run prose linters implemented in Python. 8 | 9 | set -eu -o pipefail 10 | shopt -s inherit_errexit 11 | if test "${DEBUG:=false}" = "true" 12 | then 13 | # Echo commands for easier debugging 14 | set -x 15 | PS4='$0:$LINENO+' 16 | fi 17 | 18 | 19 | main() { 20 | set -x 21 | git ls-files -z '*.rst' | xargs -r -0 -- proselint --config "./.proselintrc.json" 22 | } 23 | 24 | 25 | main "$@" 26 | -------------------------------------------------------------------------------- /bin/test-lint-prospector.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-FileCopyrightText: 2023 Ross Patterson 4 | # 5 | # SPDX-License-Identifier: MIT 6 | 7 | # Run the Python kitchen sink linter as fast as possible. 8 | 9 | set -eu -o pipefail 10 | shopt -s inherit_errexit 11 | if test "${DEBUG:=false}" = "true" 12 | then 13 | # Echo commands for easier debugging 14 | set -x 15 | PS4='$0:$LINENO+' 16 | fi 17 | 18 | 19 | main() { 20 | git ls-files -co --exclude-standard -z '*.py' | xargs -0 -- prospector "${@}" 21 | } 22 | 23 | 24 | main "${@}" 25 | -------------------------------------------------------------------------------- /build-host/README.rst: -------------------------------------------------------------------------------- 1 | .. SPDX-FileCopyrightText: 2023 Ross Patterson 2 | .. 3 | .. SPDX-License-Identifier: MIT 4 | 5 | ######################################## 6 | Projects build host 7 | ######################################## 8 | The container image that builds projects 9 | **************************************** 10 | 11 | Use this directory to build a container image that can build, test, and release 12 | projects. The project host CI/CD platforms run pipeline jobs in this image. Developers 13 | can also use it to reproduce CI/CD issues locally. 14 | 15 | The release processes of projects don't publish changes to this image. As such, 16 | maintainers must push new versions of this image as it changes by using the project's 17 | ``../Makefile``:: 18 | 19 | $ cd .. 20 | $ make bootstrap-project 21 | -------------------------------------------------------------------------------- /build-host/bin/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/ash 2 | 3 | # SPDX-FileCopyrightText: 2023 Ross Patterson 4 | # 5 | # SPDX-License-Identifier: MIT 6 | 7 | # Shared set up for local testing of CI/CD 8 | 9 | set -eu -o pipefail 10 | if test "${DEBUG:=false}" = "true" 11 | then 12 | # Echo commands for easier debugging 13 | set -x 14 | PS4='${0}:${LINENO}+' 15 | fi 16 | 17 | 18 | main() { 19 | # Run as the user from the environment: 20 | if test -n "${PUID:-}" 21 | then 22 | exec su-exec "${PUID}" "${@}" 23 | fi 24 | 25 | # Run un-altered as the user passed in by docker: 26 | exec "$@" 27 | } 28 | 29 | 30 | main "$@" 31 | -------------------------------------------------------------------------------- /dist/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Include packages in Docker but not in VCS: 6 | /* 7 | !/.git* 8 | 9 | # Restore backup file ignores reversed by the wildcards above 10 | *~ 11 | -------------------------------------------------------------------------------- /docs/_static/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the directory for static assets exists. -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. SPDX-FileCopyrightText: 2023 Ross Patterson 2 | .. 3 | .. SPDX-License-Identifier: MIT 4 | 5 | .. meta:: 6 | :keywords: template, structure 7 | 8 | .. include:: ../README.rst 9 | :end-before: include-end-before 10 | 11 | .. contents:: On this page: 12 | :local: 13 | 14 | .. include:: ../README.rst 15 | :start-after: include-start-after 16 | 17 | .. prunerr documentation root file, created by 18 | sphinx-quickstart on Wed May 24 21:39:04 2023. 19 | You can adapt this file completely to your liking, but it should at least 20 | contain the root `toctree` directive. 21 | 22 | 23 | .. toctree:: 24 | :hidden: 25 | 26 | contributing 27 | todo 28 | -------------------------------------------------------------------------------- /gitlab-runner/cache/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /gitlab-runner/certs/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /gitlab-runner/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Override `$ docker compose` configuration for development or testing here in this 6 | # repository checkout. Keep everything used by users outside this checkout in 7 | # `./docker-compose.yml`. 8 | services: 9 | # Conserve shared runner minutes, run GitLab CI/CD jobs locally: 10 | gitlab-runner: 11 | image: "gitlab/gitlab-runner" 12 | volumes: 13 | - "${CHECKOUT_DIR:-.}/gitlab-runner/config:/etc/gitlab-runner" 14 | - "/var/run/docker.sock:/var/run/docker.sock" 15 | - "${CHECKOUT_DIR:-.}/gitlab-runner/cache:/cache" 16 | - "${CHECKOUT_DIR:-.}/gitlab-runner/certs:/certs" 17 | ports: 18 | - "8093:8093" 19 | -------------------------------------------------------------------------------- /home/.cache/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Docker bind mount placeholder: 6 | /* 7 | !.git* 8 | 9 | # Restore backup file ignores reversed by the wildcards above 10 | *~ 11 | -------------------------------------------------------------------------------- /home/.config/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Docker bind mount placeholder: 6 | /* 7 | !.git* 8 | 9 | # Restore backup file ignores reversed by the wildcards above 10 | *~ 11 | -------------------------------------------------------------------------------- /home/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ignore everything but files managed by VCS: 6 | /* 7 | !.git* 8 | 9 | # Track templates in VCS: 10 | !/*.in 11 | 12 | # Ensure Docker bind mounts exist and that this checkout's owner also owns them: 13 | !/.cache 14 | !/.config 15 | !/.local 16 | 17 | # Restore backup file ignores reversed by the wildcards above 18 | *~ 19 | -------------------------------------------------------------------------------- /home/.local/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Docker bind mount placeholder: 6 | /* 7 | !.git* 8 | !/share 9 | 10 | # Restore backup file ignores reversed by the wildcards above 11 | *~ 12 | -------------------------------------------------------------------------------- /home/.local/share/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Docker bind mount placeholder: 6 | /* 7 | !.git* 8 | 9 | # Restore backup file ignores reversed by the wildcards above 10 | *~ 11 | -------------------------------------------------------------------------------- /home/.pypirc.in: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | [distutils] 6 | index-servers = 7 | pypi 8 | testpypi 9 | gitlab 10 | 11 | [pypi] 12 | username = __token__ 13 | password = ${PYPI_PASSWORD} 14 | 15 | [testpypi] 16 | username = __token__ 17 | password = ${TEST_PYPI_PASSWORD} 18 | 19 | [gitlab] 20 | repository = https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/pypi 21 | username = gitlab-ci-token 22 | password = ${CI_JOB_TOKEN} 23 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/logo.png -------------------------------------------------------------------------------- /logo.png.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /logo.svg.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /newsfragments/+export-subcommand.feature.rst: -------------------------------------------------------------------------------- 1 | :Export: Add a new ``export`` sub-command that is roughly the inverse of Servarr import 2 | events, hard link imported files back into download client items and verify. 3 | -------------------------------------------------------------------------------- /newsfragments/+free-space-avoid-timeouts.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Prevent download clients under heavy load from blocking the freeing of disk 2 | space. 3 | -------------------------------------------------------------------------------- /newsfragments/+free-space-disk-usage.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Consider sparse files and hard links when calculating real storage usage. 2 | -------------------------------------------------------------------------------- /newsfragments/+free-space-done-date-guess.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Switch from start date to added date when guessing torrent time since done 2 | when the done date is missing. 3 | -------------------------------------------------------------------------------- /newsfragments/+free-space-orphans-incomplete.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Also consider files in the Transmission ``incomplete-dir`` when identifying 2 | item files as orphans to delete. 3 | -------------------------------------------------------------------------------- /newsfragments/+free-space-orphans-unwanted.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Also consider unselected/unwanted download item files as orphans to delete. 2 | -------------------------------------------------------------------------------- /newsfragments/+free-space-pause-download.removal.rst: -------------------------------------------------------------------------------- 1 | :free-space: Remove support for pausing/resuming download out of Prunerr and into the 2 | download client container via a cron job. 3 | -------------------------------------------------------------------------------- /newsfragments/+free-space-previous-delete.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Tolerate but log when a previous ``$ prunerr free-space`` run deleted the 2 | files but the download client, under heavy load, fails to remove the item. 3 | -------------------------------------------------------------------------------- /newsfragments/+free-space-socket-error.bugfix.rst: -------------------------------------------------------------------------------- 1 | :free-space: Too broad socket connection error exception catch. 2 | -------------------------------------------------------------------------------- /newsfragments/+operations-files-filters.feature.rst: -------------------------------------------------------------------------------- 1 | :Operations: Make the ``type: "files"`` operation more flexible to support filtering on 2 | file attributes. Needed to reproduce the ``size_imported`` use case but 3 | only on wanted/selected files. 4 | -------------------------------------------------------------------------------- /newsfragments/+portion-divide-by-zero.bugfix.rst: -------------------------------------------------------------------------------- 1 | :operations: Avoid division by zero when no files are selected and using the ``portion`` 2 | option for the item files operation results. 3 | -------------------------------------------------------------------------------- /newsfragments/+re-add-subcommand.feature.rst: -------------------------------------------------------------------------------- 1 | :Re-add: Add a new ``re-add`` sub-command to remove and re-add all seeding download 2 | items with nothing downloaded. This is useful to avoid re-verifying seeding 3 | items when Transmission loses track of the items progress such as when it's 4 | ``/config/resume/*.resume`` files are lost or recreated. 5 | -------------------------------------------------------------------------------- /newsfragments/+upgrade-requirements.bugfix.rst: -------------------------------------------------------------------------------- 1 | Upgrade all requirements to the most recent versions as of 2 | Sun Aug 18 12:40:22 AM UTC 2024. 3 | -------------------------------------------------------------------------------- /newsfragments/.gitignore: -------------------------------------------------------------------------------- 1 | # https://towncrier.readthedocs.io/en/stable/quickstart.html#configuration 2 | !.git* 3 | !/*~ 4 | -------------------------------------------------------------------------------- /package.json.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /radarr/config/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /sonarr/config/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /src/prunerr.egg-info/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /src/prunerr/__main__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # SPDX-FileCopyrightText: 2023 Ross Patterson 4 | # SPDX-License-Identifier: MIT 5 | 6 | # PYTHON_ARGCOMPLETE_OK 7 | 8 | # https://kislyuk.github.io/argcomplete/#global-completion 9 | """ 10 | Run from the command-line by using Python's `-m` option. 11 | """ 12 | 13 | import sys 14 | 15 | from . import main 16 | 17 | sys.exit(main()) 18 | -------------------------------------------------------------------------------- /src/prunerr/commands/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Ross Patterson 2 | # SPDX-License-Identifier: MIT 3 | 4 | """ 5 | Modules for sub-commands with significant implementation complexity all their own. 6 | """ 7 | -------------------------------------------------------------------------------- /src/prunerr/py.typed: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # This package includes type annotations. -------------------------------------------------------------------------------- /styles/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Exclude downloaded styles from formatting and linting but include in VCS: 6 | !/*/meta.json 7 | !/*/*.yml 8 | !/Vocab/* 9 | !/local/* 10 | 11 | # Restore general ignores: 12 | *~ -------------------------------------------------------------------------------- /styles/Google/AMPM.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'AM' or 'PM' (preceded by a space)." 3 | link: 'https://developers.google.com/style/word-list' 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2}[AP]M' 8 | - '\d{1,2} ?[ap]m' 9 | - '\d{1,2} ?[aApP]\.[mM]\.' 10 | -------------------------------------------------------------------------------- /styles/Google/Colons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' should be in lowercase." 3 | link: 'https://developers.google.com/style/colons' 4 | nonword: true 5 | level: warning 6 | scope: sentence 7 | tokens: 8 | - ':\s[A-Z]' 9 | -------------------------------------------------------------------------------- /styles/Google/Contractions.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | link: 'https://developers.google.com/style/contractions' 4 | level: suggestion 5 | ignorecase: true 6 | action: 7 | name: replace 8 | swap: 9 | are not: aren't 10 | cannot: can't 11 | could not: couldn't 12 | did not: didn't 13 | do not: don't 14 | does not: doesn't 15 | has not: hasn't 16 | have not: haven't 17 | how is: how's 18 | is not: isn't 19 | it is: it's 20 | should not: shouldn't 21 | that is: that's 22 | they are: they're 23 | was not: wasn't 24 | we are: we're 25 | we have: we've 26 | were not: weren't 27 | what is: what's 28 | when is: when's 29 | where is: where's 30 | will not: won't 31 | -------------------------------------------------------------------------------- /styles/Google/DateFormat.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'July 31, 2016' format, not '%s'." 3 | link: 'https://developers.google.com/style/dates-times' 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}' 9 | - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' 10 | -------------------------------------------------------------------------------- /styles/Google/Ellipses.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't use an ellipsis." 3 | link: 'https://developers.google.com/style/ellipses' 4 | nonword: true 5 | level: warning 6 | action: 7 | name: remove 8 | tokens: 9 | - '\.\.\.' 10 | -------------------------------------------------------------------------------- /styles/Google/EmDash.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't put a space before or after a dash." 3 | link: "https://developers.google.com/style/dashes" 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - trim 10 | - " " 11 | tokens: 12 | - '\s[—–]\s' 13 | 14 | -------------------------------------------------------------------------------- /styles/Google/Exclamation.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use exclamation points in text." 3 | link: "https://developers.google.com/style/exclamation-points" 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - trim_right 10 | - "!" 11 | tokens: 12 | - '\w+!(?:\s|$)' 13 | -------------------------------------------------------------------------------- /styles/Google/FirstPerson.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid first-person pronouns such as '%s'." 3 | link: 'https://developers.google.com/style/pronouns#personal-pronouns' 4 | ignorecase: true 5 | level: warning 6 | nonword: true 7 | tokens: 8 | - (?:^|\s)I\s 9 | - (?:^|\s)I,\s 10 | - \bI'm\b 11 | - \bme\b 12 | - \bmy\b 13 | - \bmine\b 14 | -------------------------------------------------------------------------------- /styles/Google/Gender.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s' as a gender-neutral pronoun." 3 | link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns' 4 | level: error 5 | ignorecase: true 6 | tokens: 7 | - he/she 8 | - s/he 9 | - \(s\)he 10 | -------------------------------------------------------------------------------- /styles/Google/HeadingPunctuation.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't put a period at the end of a heading." 3 | link: "https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings" 4 | nonword: true 5 | level: warning 6 | scope: heading 7 | action: 8 | name: edit 9 | params: 10 | - trim_right 11 | - "." 12 | tokens: 13 | - '[a-z0-9][.]\s*$' 14 | -------------------------------------------------------------------------------- /styles/Google/Headings.yml: -------------------------------------------------------------------------------- 1 | extends: capitalization 2 | message: "'%s' should use sentence-style capitalization." 3 | link: "https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings" 4 | level: warning 5 | scope: heading 6 | match: $sentence 7 | indicators: 8 | - ":" 9 | exceptions: 10 | - Azure 11 | - CLI 12 | - Cosmos 13 | - Docker 14 | - Emmet 15 | - gRPC 16 | - I 17 | - Kubernetes 18 | - Linux 19 | - macOS 20 | - Marketplace 21 | - MongoDB 22 | - REPL 23 | - Studio 24 | - TypeScript 25 | - URLs 26 | - Visual 27 | - VS 28 | - Windows 29 | - JSON 30 | -------------------------------------------------------------------------------- /styles/Google/Latin.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | link: 'https://developers.google.com/style/abbreviations' 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | action: 8 | name: replace 9 | swap: 10 | '\b(?:eg|e\.g\.)(?=[\s,;])': for example 11 | '\b(?:ie|i\.e\.)(?=[\s,;])': that is 12 | -------------------------------------------------------------------------------- /styles/Google/LyHyphens.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' doesn't need a hyphen." 3 | link: "https://developers.google.com/style/hyphens" 4 | level: error 5 | ignorecase: false 6 | nonword: true 7 | action: 8 | name: edit 9 | params: 10 | - regex 11 | - "-" 12 | - " " 13 | tokens: 14 | - '\b[^\s-]+ly-\w+\b' 15 | -------------------------------------------------------------------------------- /styles/Google/OptionalPlurals.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use plurals in parentheses such as in '%s'." 3 | link: "https://developers.google.com/style/plurals-parentheses" 4 | level: error 5 | nonword: true 6 | action: 7 | name: edit 8 | params: 9 | - trim_right 10 | - "(s)" 11 | tokens: 12 | - '\b\w+\(s\)' 13 | -------------------------------------------------------------------------------- /styles/Google/Ordinal.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Spell out all ordinal numbers ('%s') in text." 3 | link: 'https://developers.google.com/style/numbers' 4 | level: error 5 | nonword: true 6 | tokens: 7 | - \d+(?:st|nd|rd|th) 8 | -------------------------------------------------------------------------------- /styles/Google/OxfordComma.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use the Oxford comma in '%s'." 3 | link: 'https://developers.google.com/style/commas' 4 | scope: sentence 5 | level: warning 6 | tokens: 7 | - '(?:[^,]+,){1,}\s\w+\s(?:and|or)' 8 | -------------------------------------------------------------------------------- /styles/Google/Parens.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use parentheses judiciously." 3 | link: 'https://developers.google.com/style/parentheses' 4 | nonword: true 5 | level: suggestion 6 | tokens: 7 | - '\(.+\)' 8 | -------------------------------------------------------------------------------- /styles/Google/Periods.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use periods with acronyms or initialisms such as '%s'." 3 | link: 'https://developers.google.com/style/abbreviations' 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\b(?:[A-Z]\.){3,}' 8 | -------------------------------------------------------------------------------- /styles/Google/Quotes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Commas and periods go inside quotation marks." 3 | link: 'https://developers.google.com/style/quotation-marks' 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '"[^"]+"[.,?]' 8 | -------------------------------------------------------------------------------- /styles/Google/Ranges.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't add words such as 'from' or 'between' to describe a range of numbers." 3 | link: 'https://developers.google.com/style/hyphens' 4 | nonword: true 5 | level: warning 6 | tokens: 7 | - '(?:from|between)\s\d+\s?-\s?\d+' 8 | -------------------------------------------------------------------------------- /styles/Google/Semicolons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use semicolons judiciously." 3 | link: 'https://developers.google.com/style/semicolons' 4 | nonword: true 5 | scope: sentence 6 | level: suggestion 7 | tokens: 8 | - ';' 9 | -------------------------------------------------------------------------------- /styles/Google/Slang.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use internet slang abbreviations such as '%s'." 3 | link: 'https://developers.google.com/style/abbreviations' 4 | ignorecase: true 5 | level: error 6 | tokens: 7 | - 'tl;dr' 8 | - ymmv 9 | - rtfm 10 | - imo 11 | - fwiw 12 | -------------------------------------------------------------------------------- /styles/Google/Spacing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' should have one space." 3 | link: 'https://developers.google.com/style/sentence-spacing' 4 | level: error 5 | nonword: true 6 | action: 7 | name: remove 8 | tokens: 9 | - '[a-z][.?!] {2,}[A-Z]' 10 | - '[a-z][.?!][A-Z]' 11 | -------------------------------------------------------------------------------- /styles/Google/Spelling.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, use American spelling instead of '%s'." 3 | link: 'https://developers.google.com/style/spelling' 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - '(?:\w+)nised?' 8 | - 'colour' 9 | - 'labour' 10 | - 'centre' 11 | -------------------------------------------------------------------------------- /styles/Google/Units.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Put a nonbreaking space between the number and the unit in '%s'." 3 | link: "https://developers.google.com/style/units-of-measure" 4 | nonword: true 5 | level: error 6 | tokens: 7 | - \b\d+(?:B|kB|MB|GB|TB) 8 | - \b\d+(?:ns|ms|s|min|h|d) 9 | -------------------------------------------------------------------------------- /styles/Google/We.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to avoid using first-person plural like '%s'." 3 | link: 'https://developers.google.com/style/pronouns#personal-pronouns' 4 | level: warning 5 | ignorecase: true 6 | tokens: 7 | - we 8 | - we'(?:ve|re) 9 | - ours? 10 | - us 11 | - let's 12 | -------------------------------------------------------------------------------- /styles/Google/Will.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'." 3 | link: 'https://developers.google.com/style/tense' 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - will 8 | -------------------------------------------------------------------------------- /styles/Google/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/Google/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /styles/Joblint/Acronyms.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Use '%s' instead of '%s' 3 | description: "Tech people know their acronyms; you come across as not very tech-savvy if you expand them." 4 | ignorecase: true 5 | level: warning 6 | action: 7 | name: replace 8 | swap: 9 | 'cascading[ -]?style[ -]?sheets': CSS 10 | 'hyper[ -]?text(?:[ -]?mark[ -]?up(?:[ -]?language)?)?': HTML 11 | -------------------------------------------------------------------------------- /styles/Joblint/Benefits.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Benefits such as '%s' are not bad in themselves, but their appearance in a job post often disguises the fact that there are few real benefits to working for a company." 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - 'ales?' 8 | - 'beers?' 9 | - 'brewskis?' 10 | - 'coffee' 11 | - '(?:foos|fuss)[ -]*ball' 12 | - 'happy[ -]*hours?' 13 | - 'keg(erator)?s?' 14 | - 'lagers?' 15 | - 'nerf[ -]*guns?' 16 | - 'ping[ -]*pong?' 17 | - 'pints?' 18 | - 'pizzas?' 19 | - 'play\\s*stations?' 20 | - 'pool[ -]*table|pool' 21 | - 'rock[ -]*walls?' 22 | - 'table[ -]*football' 23 | - 'table[ -]*tennis' 24 | - 'wiis?' 25 | - 'xbox(?:es|s)?' 26 | - 'massages?' 27 | -------------------------------------------------------------------------------- /styles/Joblint/Bro.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Bro culture terminology can really reduce the number of people likely to show interest." 4 | ignorecase: true 5 | level: error 6 | tokens: 7 | - 'brogramm(?:er|ers|ing)' 8 | - 'crank' 9 | - 'crush' 10 | - 'hard[ -]*core' 11 | - 'hella' 12 | - 'mak(?:e|ing) it rain' 13 | - 'skillz' 14 | -------------------------------------------------------------------------------- /styles/Joblint/Competitive.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Competition can be healthy, but for a lot of people a heavily competitive environment can be a strain." 4 | ignorecase: true 5 | level: suggestion 6 | tokens: 7 | - 'compete' 8 | - 'competition' 9 | - 'competitive' 10 | - 'cutting[ -]edge' 11 | - 'fail' 12 | - 'fore[ -]*front' 13 | - 'super[ -]*stars?' 14 | - 'the best' 15 | - 'reach the top' 16 | - 'top of .{2,8} (?:game|class)' 17 | - 'win' 18 | -------------------------------------------------------------------------------- /styles/Joblint/Derogatory.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "When you use '%s,' you're being discriminatory." 4 | ignorecase: true 5 | level: error 6 | tokens: 7 | - 'bia?tch(?:es)?' 8 | - 'bimbos?' 9 | - 'hoes?' 10 | - 'hunks?' 11 | - 'milfs?' 12 | - 'slags?' 13 | - 'sluts?' 14 | - 'stallions?' 15 | - 'studs?' 16 | -------------------------------------------------------------------------------- /styles/Joblint/DevEnv.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't specify a development environment unless absolutely necessary." 3 | ignorecase: true 4 | level: suggestion 5 | tokens: 6 | - 'atom' 7 | - 'bb[ -]*edit' 8 | - 'dream[ -]*weaver' 9 | - 'eclipse' 10 | - 'emacs' 11 | - 'net[ -]*beans' 12 | - 'note[ -]*pad' 13 | - 'sublime[ -]*text' 14 | - 'text[ -]*wrangler' 15 | - 'text[ -]*mate' 16 | - 'vim?' 17 | - 'visual[ -]*studio' 18 | -------------------------------------------------------------------------------- /styles/Joblint/DumbTitles.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Referring to tech people as '%s' devalues the work that they do and shows a lack of respect and professionalism." 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - 'gurus?' 8 | - 'hero(?:es|ic)?' 9 | - 'ninjas?' 10 | - 'rock[ -]*stars?' 11 | - 'super[ -]*stars?' 12 | - 'badass(?:es)?' 13 | - 'BAMF' 14 | -------------------------------------------------------------------------------- /styles/Joblint/Gendered.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Use of '%s' could indicate that you're discriminating in favour of a certain gender." 4 | ignorecase: true 5 | level: error 6 | tokens: 7 | - 'boys?' 8 | - 'bros?' 9 | - 'broth(?:a|er)s?' 10 | - 'chicks?' 11 | - 'dads?' 12 | - 'dudes?' 13 | - 'fathers?' 14 | - 'females?' 15 | - 'gentlem[ae]n' 16 | - 'girls?' 17 | - 'grandfathers?' 18 | - 'grandmas?' 19 | - 'grandmothers?' 20 | - 'grandpas?' 21 | - 'gran' 22 | - 'grann(?:y|ies)' 23 | - 'guys?' 24 | - 'husbands?' 25 | - 'lad(y|ies)?' 26 | - 'm[ae]n' 27 | - 'm[ou]ms?' 28 | - 'males?' 29 | - 'momm(?:y|ies)' 30 | - 'mommas?' 31 | - 'mothers?' 32 | - 'papas?' 33 | - 'sist(?:a|er)s?' 34 | - 'wi(?:fe|ves)' 35 | - 'wom[ae]n' 36 | - he 37 | - her 38 | - him 39 | - his 40 | - she 41 | -------------------------------------------------------------------------------- /styles/Joblint/Hair.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "The use of '%s' indicates that you're only looking for male developers." 4 | ignorecase: true 5 | level: error 6 | tokens: 7 | - 'beard(?:ed|s|y)?' 8 | - 'grizzl(?:ed|y)' 9 | -------------------------------------------------------------------------------- /styles/Joblint/LegacyTech.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Legacy technologies can reduce the number of people interested in a job." 4 | ignorecase: true 5 | level: suggestion 6 | tokens: 7 | - 'cobol' 8 | - 'cvs' 9 | - 'front[ -]*page' 10 | - 'rcs' 11 | - 'sccs' 12 | - 'source[ -]*safe' 13 | - 'vb\\s*6' 14 | - 'visual[ -]*basic\\s*6' 15 | - 'vbscript' 16 | -------------------------------------------------------------------------------- /styles/Joblint/Meritocracy.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Reevaluate the use of '%s'" 3 | ignorecase: true 4 | level: suggestion 5 | tokens: 6 | - 'meritocra(?:cy|cies|tic)' 7 | -------------------------------------------------------------------------------- /styles/Joblint/Profanity.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Remove '%s'" 3 | ignorecase: true 4 | level: warning 5 | tokens: 6 | - 'bloody' 7 | - 'bugger' 8 | - 'cunt' 9 | - 'damn' 10 | - 'fuck(?:er|ing)?' 11 | - 'piss(?:ing)?' 12 | - 'shit' 13 | - 'motherfuck(?:ers?|ing)' 14 | -------------------------------------------------------------------------------- /styles/Joblint/Reassure.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Something feels off when you need to reassure someone of something that should definitely not be an issue in any workplace." 4 | ignorecase: true 5 | level: suggestion 6 | tokens: 7 | - 'drama[ -]*free' 8 | - 'stress[ -]*free' 9 | -------------------------------------------------------------------------------- /styles/Joblint/Sexualised.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Terms like '%s' are often used if the person writing a post doesn't know what they are talking about." 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - gay for 8 | - sexy 9 | - hawt 10 | - phat 11 | -------------------------------------------------------------------------------- /styles/Joblint/Starter.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Terms like '%s' and others can indicate that the person writing a job post is unaware of the time and effort involved in preparing a new starter for work." 4 | ignorecase: true 5 | level: suggestion 6 | tokens: 7 | - 'hit[ -]the[ -]ground[ -]running' 8 | - 'juggle' 9 | - 'tight deadlines?' 10 | -------------------------------------------------------------------------------- /styles/Joblint/TechTerms.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Use '%s' instead of '%s' 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: replace 7 | swap: 8 | 'java[ -]?scripts?': JavaScript 9 | ruby on rail: Ruby on Rails 10 | -------------------------------------------------------------------------------- /styles/Joblint/Visionary.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using '%s'" 3 | description: "Terms like '%s' often indicate that a non technical person (perhaps a CEO or stakeholder) has been involved in writing the post." 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - 'blue[ -]*sk(?:y|ies)' 8 | - 'enlighten(?:ed|ing)?' 9 | - 'green[ -]*fields?' 10 | - 'incentivi[sz]e' 11 | - 'paradigm' 12 | - 'producti[sz]e' 13 | - 'reach(?:ed|ing)? out' 14 | - 'synerg(?:y|ize|ise)' 15 | - 'visionar(?:y|ies)' 16 | -------------------------------------------------------------------------------- /styles/Joblint/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/Joblint/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /styles/Microsoft/AMPM.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: Use 'AM' or 'PM' (preceded by a space). 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2}[AP]M' 8 | - '\d{1,2} ?[ap]m' 9 | - '\d{1,2} ?[aApP]\.[mM]\.' 10 | -------------------------------------------------------------------------------- /styles/Microsoft/Accessibility.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use language (such as '%s') that defines people by their disability." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/accessibility-terms 4 | level: suggestion 5 | ignorecase: true 6 | tokens: 7 | - a victim of 8 | - able-bodied 9 | - an epileptic 10 | - birth defect 11 | - crippled 12 | - differently abled 13 | - disabled 14 | - dumb 15 | - handicapped 16 | - handicaps 17 | - healthy person 18 | - hearing-impaired 19 | - lame 20 | - maimed 21 | - mentally handicapped 22 | - missing a limb 23 | - mute 24 | - non-verbal 25 | - normal person 26 | - sight-impaired 27 | - slow learner 28 | - stricken with 29 | - suffers from 30 | - vision-impaired 31 | -------------------------------------------------------------------------------- /styles/Microsoft/Auto.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't hyphenate '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto 4 | ignorecase: true 5 | level: error 6 | action: 7 | name: convert 8 | params: 9 | - simple 10 | tokens: 11 | - 'auto-\w+' 12 | -------------------------------------------------------------------------------- /styles/Microsoft/Avoid.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s'. See the A-Z word list for details." 3 | # See the A-Z word list 4 | link: https://docs.microsoft.com/en-us/style-guide 5 | ignorecase: true 6 | level: error 7 | tokens: 8 | - abortion 9 | - and so on 10 | - app(?:lication)?s? (?:developer|program) 11 | - app(?:lication)? file 12 | - backbone 13 | - backend 14 | - contiguous selection 15 | -------------------------------------------------------------------------------- /styles/Microsoft/Dashes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Remove the spaces around '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes 4 | ignorecase: true 5 | nonword: true 6 | level: error 7 | action: 8 | name: edit 9 | params: 10 | - trim 11 | - " " 12 | tokens: 13 | - '\s[—–]\s|\s[—–]|[—–]\s' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/DateFormat.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: Use 'July 31, 2016' format, not '%s'. 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/DateNumbers.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use ordinal numbers for dates." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates 4 | level: error 5 | nonword: true 6 | ignorecase: true 7 | raw: 8 | - \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?)\b\s* 9 | tokens: 10 | - first 11 | - second 12 | - third 13 | - fourth 14 | - fifth 15 | - sixth 16 | - seventh 17 | - eighth 18 | - ninth 19 | - tenth 20 | - eleventh 21 | - twelfth 22 | - thirteenth 23 | - fourteenth 24 | - fifteenth 25 | - sixteenth 26 | - seventeenth 27 | - eighteenth 28 | - nineteenth 29 | - twentieth 30 | - twenty-first 31 | - twenty-second 32 | - twenty-third 33 | - twenty-fourth 34 | - twenty-fifth 35 | - twenty-sixth 36 | - twenty-seventh 37 | - twenty-eighth 38 | - twenty-ninth 39 | - thirtieth 40 | - thirty-first 41 | -------------------------------------------------------------------------------- /styles/Microsoft/DateOrder.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Always spell out the name of the month." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\b\d{1,2}/\d{1,2}/(?:\d{4}|\d{2})\b' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/Ellipses.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't use an ellipsis." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/ellipses 4 | nonword: true 5 | level: warning 6 | action: 7 | name: remove 8 | tokens: 9 | - '\.\.\.' 10 | -------------------------------------------------------------------------------- /styles/Microsoft/FirstPerson.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use first person (such as '%s') sparingly." 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person 4 | ignorecase: true 5 | level: warning 6 | nonword: true 7 | tokens: 8 | - (?:^|\s)I(?=\s) 9 | - (?:^|\s)I(?=,\s) 10 | - \bI'd\b 11 | - \bI'll\b 12 | - \bI'm\b 13 | - \bI've\b 14 | - \bme\b 15 | - \bmy\b 16 | - \bmine\b 17 | -------------------------------------------------------------------------------- /styles/Microsoft/Foreign.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | action: 8 | name: replace 9 | swap: 10 | '\b(?:eg|e\.g\.)[\s,]': for example 11 | '\b(?:ie|i\.e\.)[\s,]': that is 12 | '\b(?:viz\.)[\s,]': namely 13 | '\b(?:ergo)[\s,]': therefore 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Gender.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s'." 3 | link: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender 4 | level: error 5 | ignorecase: true 6 | tokens: 7 | - he/she 8 | - s/he 9 | -------------------------------------------------------------------------------- /styles/Microsoft/GeneralURL.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "For a general audience, use 'address' rather than 'URL'." 3 | link: https://docs.microsoft.com/en-us/style-guide/urls-web-addresses 4 | level: warning 5 | action: 6 | name: replace 7 | params: 8 | - URL 9 | - address 10 | tokens: 11 | - URL 12 | -------------------------------------------------------------------------------- /styles/Microsoft/HeadingAcronyms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using acronyms in a title or heading." 3 | link: https://docs.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings 4 | level: warning 5 | scope: heading 6 | tokens: 7 | - '[A-Z]{2,4}' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/HeadingColons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Capitalize '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/colons 4 | nonword: true 5 | level: error 6 | scope: heading 7 | tokens: 8 | - ':\s[a-z]' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/HeadingPunctuation.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use end punctuation in headings." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods 4 | nonword: true 5 | level: warning 6 | scope: heading 7 | action: 8 | name: edit 9 | params: 10 | - trim_right 11 | - ".?!" 12 | tokens: 13 | - "[a-z][.?!]$" 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Headings.yml: -------------------------------------------------------------------------------- 1 | extends: capitalization 2 | message: "'%s' should use sentence-style capitalization." 3 | link: https://docs.microsoft.com/en-us/style-guide/capitalization 4 | level: suggestion 5 | scope: heading 6 | match: $sentence 7 | indicators: 8 | - ':' 9 | exceptions: 10 | - Azure 11 | - CLI 12 | - Code 13 | - Cosmos 14 | - Docker 15 | - Emmet 16 | - I 17 | - Kubernetes 18 | - Linux 19 | - macOS 20 | - Marketplace 21 | - MongoDB 22 | - REPL 23 | - Studio 24 | - TypeScript 25 | - URLs 26 | - Visual 27 | - VS 28 | - Windows 29 | -------------------------------------------------------------------------------- /styles/Microsoft/Hyphens.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' doesn't need a hyphen." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens 4 | level: warning 5 | ignorecase: false 6 | nonword: true 7 | action: 8 | name: edit 9 | params: 10 | - regex 11 | - "-" 12 | - " " 13 | tokens: 14 | - '\b[^\s-]+ly-\w+\b' 15 | -------------------------------------------------------------------------------- /styles/Microsoft/Negative.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Form a negative number with an en dash, not a hyphen." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - regex 10 | - "-" 11 | - "–" 12 | tokens: 13 | - '(?<=\s)-\d+(?:\.\d+)?\b' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Ordinal.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't add -ly to an ordinal number." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | level: error 5 | action: 6 | name: edit 7 | params: 8 | - trim 9 | - ly 10 | tokens: 11 | - firstly 12 | - secondly 13 | - thirdly 14 | -------------------------------------------------------------------------------- /styles/Microsoft/OxfordComma.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use the Oxford comma in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas 4 | scope: sentence 5 | level: suggestion 6 | nonword: true 7 | tokens: 8 | - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/Percentages.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use a numeral plus the units." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | tokens: 7 | - '\b[a-zA-z]+\spercent\b' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/Plurals.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't add '%s' to a singular noun. Use plural instead." 3 | ignorecase: true 4 | level: error 5 | link: https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/s-es 6 | raw: 7 | - '\(s\)|\(es\)' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/Quotes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: 'Punctuation should be inside the quotes.' 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/quotation-marks 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '["“][^"”“]+["”][.,]' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/RangeTime.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'to' instead of a dash in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - regex 10 | - "[-–]" 11 | - "to" 12 | tokens: 13 | - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Semicolon.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to simplify this sentence." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/semicolons 4 | nonword: true 5 | scope: sentence 6 | level: suggestion 7 | tokens: 8 | - ';' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/SentenceLength.yml: -------------------------------------------------------------------------------- 1 | extends: occurrence 2 | message: "Try to keep sentences short (< 30 words)." 3 | scope: sentence 4 | level: suggestion 5 | max: 30 6 | token: \b(\w+)\b 7 | 8 | -------------------------------------------------------------------------------- /styles/Microsoft/Spacing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' should have one space." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '[a-z][.?!] {2,}[A-Z]' 8 | - '[a-z][.?!][A-Z]' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/Suspended.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s' unless space is limited." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - '\w+- and \w+-' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/URLFormat.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Use 'of' (not 'for') to describe the relationship of the word URL to a resource. 3 | ignorecase: true 4 | link: https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/u/url 5 | level: suggestion 6 | action: 7 | name: replace 8 | swap: 9 | URL for: URL of 10 | -------------------------------------------------------------------------------- /styles/Microsoft/Units.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't spell out the number in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms 4 | level: error 5 | raw: 6 | - '[a-zA-Z]+\s' 7 | tokens: 8 | - '(?:centi|milli)?meters' 9 | - '(?:kilo)?grams' 10 | - '(?:kilo)?meters' 11 | - '(?:mega)?pixels' 12 | - cm 13 | - inches 14 | - lb 15 | - miles 16 | - pounds 17 | -------------------------------------------------------------------------------- /styles/Microsoft/Vocab.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Verify your use of '%s' with the A-Z word list." 3 | link: 'https://docs.microsoft.com/en-us/style-guide' 4 | level: suggestion 5 | ignorecase: true 6 | tokens: 7 | - above 8 | - accessible 9 | - actionable 10 | - against 11 | - alarm 12 | - alert 13 | - alias 14 | - allows? 15 | - and/or 16 | - as well as 17 | - assure 18 | - author 19 | - avg 20 | - beta 21 | - ensure 22 | - he 23 | - insure 24 | - sample 25 | - she 26 | -------------------------------------------------------------------------------- /styles/Microsoft/We.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to avoid using first-person plural like '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural 4 | level: warning 5 | ignorecase: true 6 | tokens: 7 | - we 8 | - we'(?:ve|re) 9 | - ours? 10 | - us 11 | - let's 12 | -------------------------------------------------------------------------------- /styles/Microsoft/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/Microsoft/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /styles/Readability/AutomatedReadability.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Automated Readability Index (%s) below 8." 3 | link: https://en.wikipedia.org/wiki/Automated_readability_index 4 | 5 | formula: | 6 | (4.71 * (characters / words)) + (0.5 * (words / sentences)) - 21.43 7 | 8 | condition: "> 8" 9 | -------------------------------------------------------------------------------- /styles/Readability/ColemanLiau.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Coleman–Liau Index grade (%s) below 9." 3 | link: https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index 4 | 5 | formula: | 6 | (0.0588 * (characters / words) * 100) - (0.296 * (sentences / words) * 100) - 15.8 7 | 8 | condition: "> 9" 9 | -------------------------------------------------------------------------------- /styles/Readability/FleschKincaid.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Flesch–Kincaid grade level (%s) below 8." 3 | link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests 4 | 5 | formula: | 6 | (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59 7 | 8 | condition: "> 8" 9 | -------------------------------------------------------------------------------- /styles/Readability/FleschReadingEase.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Flesch reading ease score (%s) above 70." 3 | link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests 4 | 5 | formula: | 6 | 206.835 - (1.015 * (words / sentences)) - (84.6 * (syllables / words)) 7 | 8 | condition: "< 70" 9 | -------------------------------------------------------------------------------- /styles/Readability/GunningFog.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Gunning-Fog index (%s) below 10." 3 | link: https://en.wikipedia.org/wiki/Gunning_fog_index 4 | 5 | formula: | 6 | 0.4 * ((words / sentences) + 100 * (complex_words / words)) 7 | 8 | condition: "> 10" 9 | -------------------------------------------------------------------------------- /styles/Readability/LIX.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the LIX score (%s) below 35." 3 | 4 | link: https://en.wikipedia.org/wiki/Lix_(readability_test) 5 | # Very Easy: 20 - 25 6 | # 7 | # Easy: 30 - 35 8 | # 9 | # Medium: 40 - 45 10 | # 11 | # Difficult: 50 - 55 12 | # 13 | # Very Difficult: 60+ 14 | formula: | 15 | (words / sentences) + ((long_words * 100) / words) 16 | 17 | condition: "> 35" 18 | -------------------------------------------------------------------------------- /styles/Readability/SMOG.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the SMOG grade (%s) below 10." 3 | link: https://en.wikipedia.org/wiki/SMOG 4 | 5 | formula: | 6 | 1.0430 * math.sqrt((polysyllabic_words * 30.0) / sentences) + 3.1291 7 | 8 | condition: "> 10" 9 | -------------------------------------------------------------------------------- /styles/Readability/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/Readability/releases.atom", 3 | "vale_version": ">=2.13.0" 4 | } -------------------------------------------------------------------------------- /styles/RedHat/Abbreviations.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | level: error 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/abbreviations/ 5 | message: "Do not use periods in all-uppercase abbreviations such as '%s'." 6 | nonword: true 7 | # source: "IBM - Periods with abbreviations, p. 5" 8 | tokens: 9 | - '\b(?:[A-Z]\.){3,5}' 10 | -------------------------------------------------------------------------------- /styles/RedHat/Conjunctions.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | level: suggestion 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/conjunctions/ 5 | message: "Do not overuse beginning sentences with '%s'." 6 | scope: paragraph 7 | # source: https://github.com/redhat-documentation/vale-at-red-hat/tree/main/.vale/styles/RedHat/Conjunctions.yml 8 | action: 9 | name: remove 10 | tokens: 11 | - ^And 12 | - ^But 13 | - ^Or 14 | - ^So 15 | -------------------------------------------------------------------------------- /styles/RedHat/ConsciousLanguage.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: substitution 3 | ignorecase: true 4 | level: warning 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/consciouslanguage/ 6 | message: "Use %s rather than '%s'." 7 | action: 8 | name: replace 9 | swap: 10 | blacklist: blocklist 11 | master(?! broker): primary|source|initiator|requester|controller|host|director|supplier 12 | slave(?! broker): secondary|replica|responder|device|worker|proxy|performer|consumer|child 13 | whitelist: allowlist 14 | -------------------------------------------------------------------------------- /styles/RedHat/Ellipses.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | level: suggestion 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/ellipses/ 5 | message: "Avoid the ellipsis (...) except to indicate omitted words." 6 | nonword: true 7 | # source: "IBM - Ellipses, p.49" 8 | action: 9 | name: remove 10 | tokens: 11 | - '\.\.\.' 12 | - "…" 13 | -------------------------------------------------------------------------------- /styles/RedHat/EmDash.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | ignorecase: true 4 | level: warning 5 | scope: raw 6 | nonword: true 7 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/emdash/ 8 | message: Do not use em dashes. Use punctuation marks such as commas, parentheses, or colons instead. 9 | tokens: 10 | - '—' 11 | - '—' 12 | -------------------------------------------------------------------------------- /styles/RedHat/HeadingPunctuation.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: substitution 3 | level: warning 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/headingpunctuation/ 5 | message: "Do not use end punctuation in headings." 6 | nonword: true 7 | scope: heading 8 | action: 9 | name: replace 10 | swap: 11 | '[.?!]$': '' 12 | -------------------------------------------------------------------------------- /styles/RedHat/MergeConflictMarkers.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | scope: raw 4 | level: error 5 | nonword: true 6 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/mergeconflictmarkers/ 7 | message: "Do not commit Git merge conflict markers in source code." 8 | action: 9 | name: remove 10 | tokens: 11 | - '^<{7}\s.*$' 12 | - '^={7}$' 13 | - '^>{7}\s.*$' 14 | -------------------------------------------------------------------------------- /styles/RedHat/OxfordComma.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | level: suggestion 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/oxfordcomma/ 5 | message: "Use the Oxford comma in '%s'." 6 | scope: sentence 7 | nonword: true 8 | tokens: 9 | - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]' 10 | -------------------------------------------------------------------------------- /styles/RedHat/ProductCentricWriting.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | ignorecase: true 4 | level: suggestion 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/productcentricwriting/ 6 | message: "Do not use transitive verb constructions like '%s' to grant abilities to inanimate objects. Whenever possible, use direct, user-focused sentences where the subject of the sentence performs the action." 7 | tokens: 8 | - '(allows?|enables?|lets?|permits?)\s(you|customers|the customer|the user|users)' 9 | -------------------------------------------------------------------------------- /styles/RedHat/ReadabilityGrade.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: readability 3 | grade: 9 4 | message: "Simplify your language. The calculated Flesch–Kincaid grade level of %s is above the recommended reading grade level of 9." 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/readabilitygrade/ 6 | level: suggestion 7 | metrics: 8 | - Flesch-Kincaid 9 | 10 | -------------------------------------------------------------------------------- /styles/RedHat/ReleaseNotes.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: substitution 3 | ignorecase: false 4 | level: suggestion 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/releasenotes/ 6 | message: "For release notes, consider using '%s' rather than '%s'." 7 | # source: "https://redhat-documentation.github.io/supplementary-style-guide/#release-notes" 8 | # swap maps tokens in form of bad: good 9 | swap: 10 | Now: With this update 11 | Previously: Before this update 12 | -------------------------------------------------------------------------------- /styles/RedHat/RepeatedWords.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: repetition 3 | message: "'%s' is repeated." 4 | level: warning 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/repeatedwords/ 6 | ignorecase: false 7 | alpha: true 8 | action: 9 | name: edit 10 | params: 11 | - regex 12 | - '(\w+)(\s\w+)' # pattern 13 | - "$1" # replace 14 | tokens: 15 | - '[^\s\.]+' 16 | - '[^\s]+' 17 | -------------------------------------------------------------------------------- /styles/RedHat/SelfReferentialText.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | ignorecase: true 4 | level: suggestion 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/selfreferentialtext/ 6 | message: "Avoid using self-referential text such as '%s'." 7 | # source: "IBM - Audience and medium, p. 22" 8 | tokens: 9 | - this topic 10 | - this module 11 | - this assembly 12 | - this chapter 13 | - this section 14 | - this subsection 15 | -------------------------------------------------------------------------------- /styles/RedHat/SentenceLength.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: occurrence 3 | level: suggestion 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/sentencelength/ 5 | message: "Try to keep sentences to an average of 32 words or fewer." 6 | scope: sentence 7 | # source: "IBM - Conversational style" 8 | max: 32 9 | token: \b(\w+)\b 10 | -------------------------------------------------------------------------------- /styles/RedHat/Slash.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | ignorecase: true 4 | level: warning 5 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/slash/ 6 | message: "Use either 'or' or 'and' in '%s'" 7 | # source: "IBM - Slashes, p. 68" 8 | scope: 9 | - sentence 10 | - heading 11 | tokens: 12 | - '(?__' 16 | - '<[a-z_]+-[a-z_-]+>' -------------------------------------------------------------------------------- /styles/RedHat/Using.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: sequence 3 | message: "Use 'by using' instead of 'using' when it follows a noun for clarity and grammatical correctness." 4 | link: https://redhat-documentation.github.io/vale-at-red-hat/docs/main/reference-guide/using/ 5 | level: warning 6 | action: 7 | name: edit 8 | params: 9 | - regex 10 | - '(\w+)( using)' # pattern 11 | - "$1 by using" # replace 12 | tokens: 13 | - tag: NN|NNP|NNPS|NNS 14 | - pattern: using 15 | -------------------------------------------------------------------------------- /styles/RedHat/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/redhat-documentation/vale-at-red-hat/releases.atom", 3 | "vale_version": ">=2.20.0" 4 | } 5 | -------------------------------------------------------------------------------- /styles/Vocab/Code/accept.txt: -------------------------------------------------------------------------------- 1 | SPDX 2 | MIT 3 | me 4 | env 5 | pylint 6 | disable 7 | invalid 8 | type 9 | [Cc]ode 10 | [Ff]ail 11 | [Ff]ailed 12 | [Mm]ake 13 | MAKE 14 | mkdir 15 | GNU 16 | gnu 17 | cz 18 | shell 19 | master 20 | HEAD 21 | VCS 22 | CI 23 | ci 24 | CD 25 | cd 26 | CI/CD 27 | free 28 | formatter 29 | it's 30 | I 31 | FIXME 32 | TODO 33 | BBB 34 | PHONY 35 | [Ee]nsure 36 | [Tt]ox 37 | stdin 38 | stdout 39 | stderr 40 | admin 41 | touch 42 | HOME 43 | home 44 | CMD 45 | TTY 46 | allows 47 | yaml 48 | kill 49 | [Gg]it 50 | HEAD 51 | head 52 | via 53 | INFO 54 | NEWS 55 | PUID 56 | junit 57 | failure 58 | [Cc]odecov 59 | gh 60 | GPG 61 | gpg 62 | gpgconf 63 | agent 64 | dummy 65 | noqa 66 | nosec 67 | pragma 68 | Pylint 69 | pyroma 70 | args 71 | kwargs 72 | -------------------------------------------------------------------------------- /styles/Vocab/Code/accept.txt.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /styles/Vocab/Code/reject.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/styles/Vocab/Code/reject.txt -------------------------------------------------------------------------------- /styles/Vocab/Code/reject.txt.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /styles/Vocab/Markup/accept.txt: -------------------------------------------------------------------------------- 1 | TODO 2 | Makefile 3 | Towncrier 4 | Prunerr 5 | CI/CD 6 | free 7 | formatter 8 | it's 9 | UTC 10 | May 11 | Codecov 12 | Pylint 13 | argcomplete 14 | blacklist 15 | -------------------------------------------------------------------------------- /styles/Vocab/Markup/accept.txt.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /styles/Vocab/Markup/reject.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/styles/Vocab/Markup/reject.txt -------------------------------------------------------------------------------- /styles/Vocab/Markup/reject.txt.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2023 Ross Patterson 2 | 3 | SPDX-License-Identifier: MIT 4 | -------------------------------------------------------------------------------- /styles/alex/Condescending.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: existence 3 | message: Using '%s' may come across as condescending. 4 | link: https://css-tricks.com/words-avoid-educational-writing/ 5 | level: error 6 | ignorecase: true 7 | tokens: 8 | - obvious 9 | - obviously 10 | - simple 11 | - simply 12 | - easy 13 | - easily 14 | - of course 15 | - clearly 16 | - everyone knows 17 | -------------------------------------------------------------------------------- /styles/alex/OCD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: substitution 3 | message: When referring to a person, consider using '%s' instead of '%s'. 4 | ignorecase: true 5 | level: warning 6 | nonword: true 7 | action: 8 | name: replace 9 | swap: 10 | '\bocd\b|o\.c\.d\.': has an anxiety disorder|obsessive|pedantic|niggly|picky 11 | -------------------------------------------------------------------------------- /styles/alex/Press.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: substitution 3 | message: Consider using '%s' instead of '%s'. 4 | ignorecase: true 5 | level: warning 6 | action: 7 | name: replace 8 | swap: 9 | islamist: muslim|person of Islamic faith|fanatic|zealot|follower of islam|follower 10 | of the islamic faith 11 | islamists: muslims|people of Islamic faith|fanatics|zealots 12 | -------------------------------------------------------------------------------- /styles/alex/Suicide.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: substitution 3 | message: When referring to a person, consider using '%s' instead of '%s'. 4 | ignorecase: true 5 | level: warning 6 | action: 7 | name: replace 8 | swap: 9 | commit suicide: die by suicide 10 | committed suicide: died by suicide 11 | complete suicide: die by suicide 12 | completed suicide: died by suicide 13 | epidemic of suicides: rise in suicides 14 | failed attempt: suicide attempt|attempted suicide 15 | failed suicide: suicide attempt|attempted suicide 16 | hang: the app froze|the app stopped responding|the app stopped responding to events|the 17 | app became unresponsive 18 | hanged: the app froze|the app stopped responding|the app stopped responding to events|the 19 | app became unresponsive 20 | successful suicide: die by suicide 21 | suicide epidemic: rise in suicides 22 | suicide failure: suicide attempt|attempted suicide 23 | suicide note: a note from the deceased 24 | suicide pact: rise in suicides 25 | -------------------------------------------------------------------------------- /styles/alex/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/alex/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } -------------------------------------------------------------------------------- /styles/local/AutomatedReadability.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Automated Readability Index (%s) below 9." 3 | link: https://en.wikipedia.org/wiki/Automated_readability_index 4 | level: error 5 | 6 | formula: | 7 | (4.71 * (characters / words)) + (0.5 * (words / sentences)) - 21.43 8 | 9 | condition: "> 9" 10 | -------------------------------------------------------------------------------- /styles/local/ColemanLiau.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Coleman–Liau Index grade (%s) below 14." 3 | link: https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index 4 | level: error 5 | 6 | formula: | 7 | (0.0588 * (characters / words) * 100) - (0.296 * (sentences / words) * 100) - 15.8 8 | 9 | condition: "> 14" 10 | -------------------------------------------------------------------------------- /styles/local/FleschKincaid.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Flesch–Kincaid grade level (%s) below 9." 3 | link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests 4 | level: error 5 | 6 | formula: | 7 | (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59 8 | 9 | condition: "> 9" 10 | -------------------------------------------------------------------------------- /styles/local/FleschReadingEase.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Flesch reading ease score (%s) above 50." 3 | link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests 4 | level: error 5 | 6 | formula: | 7 | 206.835 - (1.015 * (words / sentences)) - (84.6 * (syllables / words)) 8 | 9 | condition: "< 50" 10 | -------------------------------------------------------------------------------- /styles/local/GunningFog.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the Gunning-Fog index (%s) below 12." 3 | link: https://en.wikipedia.org/wiki/Gunning_fog_index 4 | level: error 5 | 6 | formula: | 7 | 0.4 * ((words / sentences) + 100 * (complex_words / words)) 8 | 9 | condition: "> 12" 10 | -------------------------------------------------------------------------------- /styles/local/LIX.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the LIX score (%s) below 45." 3 | link: https://en.wikipedia.org/wiki/Lix_(readability_test) 4 | level: error 5 | 6 | formula: | 7 | (words / sentences) + ((long_words * 100) / words) 8 | 9 | condition: "> 45" 10 | -------------------------------------------------------------------------------- /styles/local/SMOG.yml: -------------------------------------------------------------------------------- 1 | extends: metric 2 | message: "Try to keep the SMOG grade (%s) below 12." 3 | link: https://en.wikipedia.org/wiki/SMOG 4 | level: error 5 | 6 | formula: | 7 | 1.0430 * math.sqrt((polysyllabic_words * 30.0) / sentences) + 3.1291 8 | 9 | condition: "> 12" 10 | -------------------------------------------------------------------------------- /styles/proselint/Airlinese.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is airlinese." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - enplan(?:e|ed|ing|ement) 7 | - deplan(?:e|ed|ing|ement) 8 | - taking off momentarily 9 | -------------------------------------------------------------------------------- /styles/proselint/Annotations.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' left in text." 3 | ignorecase: false 4 | level: error 5 | tokens: 6 | - XXX 7 | - FIXME 8 | - TODO 9 | - NOTE 10 | -------------------------------------------------------------------------------- /styles/proselint/Apologizing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Excessive apologizing: '%s'" 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: remove 7 | tokens: 8 | - More research is needed 9 | -------------------------------------------------------------------------------- /styles/proselint/Archaisms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is archaic." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - alack 7 | - anent 8 | - begat 9 | - belike 10 | - betimes 11 | - boughten 12 | - brocage 13 | - brokage 14 | - camarade 15 | - chiefer 16 | - chiefest 17 | - Christiana 18 | - completely obsolescent 19 | - cozen 20 | - divers 21 | - deflexion 22 | - fain 23 | - forsooth 24 | - foreclose from 25 | - haply 26 | - howbeit 27 | - illumine 28 | - in sooth 29 | - maugre 30 | - meseems 31 | - methinks 32 | - nigh 33 | - peradventure 34 | - perchance 35 | - saith 36 | - shew 37 | - sistren 38 | - spake 39 | - to wit 40 | - verily 41 | - whilom 42 | - withal 43 | - wot 44 | - enclosed please find 45 | - please find enclosed 46 | - enclosed herewith 47 | - enclosed herein 48 | - inforce 49 | - ex postfacto 50 | - foreclose from 51 | - forewent 52 | - for ever 53 | -------------------------------------------------------------------------------- /styles/proselint/But.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Do not start a paragraph with a 'but'." 3 | level: error 4 | scope: paragraph 5 | action: 6 | name: remove 7 | tokens: 8 | - ^But 9 | -------------------------------------------------------------------------------- /styles/proselint/CorporateSpeak.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is corporate speak." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - at the end of the day 7 | - back to the drawing board 8 | - hit the ground running 9 | - get the ball rolling 10 | - low-hanging fruit 11 | - thrown under the bus 12 | - think outside the box 13 | - let's touch base 14 | - get my manager's blessing 15 | - it's on my radar 16 | - ping me 17 | - i don't have the bandwidth 18 | - no brainer 19 | - par for the course 20 | - bang for your buck 21 | - synergy 22 | - move the goal post 23 | - apples to apples 24 | - win-win 25 | - circle back around 26 | - all hands on deck 27 | - take this offline 28 | - drill-down 29 | - elephant in the room 30 | - on my plate 31 | -------------------------------------------------------------------------------- /styles/proselint/Currency.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Incorrect use of symbols in '%s'." 3 | ignorecase: true 4 | raw: 5 | - \$[\d]* ?(?:dollars|usd|us dollars) 6 | -------------------------------------------------------------------------------- /styles/proselint/Cursing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Consider replacing '%s'." 3 | level: error 4 | ignorecase: true 5 | tokens: 6 | - shit 7 | - piss 8 | - fuck 9 | - cunt 10 | - cocksucker 11 | - motherfucker 12 | - tits 13 | - fart 14 | - turd 15 | - twat 16 | -------------------------------------------------------------------------------- /styles/proselint/DateCase.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: With lowercase letters, the periods are standard. 3 | ignorecase: false 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2} ?[ap]m\b' 8 | -------------------------------------------------------------------------------- /styles/proselint/DateMidnight.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'midnight' or 'noon'." 3 | ignorecase: true 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '12 ?[ap]\.?m\.?' 8 | -------------------------------------------------------------------------------- /styles/proselint/DateRedundancy.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'a.m.' is always morning; 'p.m.' is always night." 3 | ignorecase: true 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2} ?a\.?m\.? in the morning' 8 | - '\d{1,2} ?p\.?m\.? in the evening' 9 | - '\d{1,2} ?p\.?m\.? at night' 10 | - '\d{1,2} ?p\.?m\.? in the afternoon' 11 | -------------------------------------------------------------------------------- /styles/proselint/DateSpacing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "It's standard to put a space before '%s'" 3 | ignorecase: true 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2}[ap]\.?m\.?' 8 | -------------------------------------------------------------------------------- /styles/proselint/Hedging.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is hedging." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - I would argue that 7 | - ', so to speak' 8 | - to a certain degree 9 | -------------------------------------------------------------------------------- /styles/proselint/Hyperbole.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is hyperbolic." 3 | level: error 4 | nonword: true 5 | tokens: 6 | - '[a-z]+[!?]{2,}' 7 | -------------------------------------------------------------------------------- /styles/proselint/Jargon.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is jargon." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - in the affirmative 7 | - in the negative 8 | - agendize 9 | - per your order 10 | - per your request 11 | - disincentivize 12 | -------------------------------------------------------------------------------- /styles/proselint/LGBTOffensive.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is offensive. Remove it or consider the context." 3 | ignorecase: true 4 | tokens: 5 | - fag 6 | - faggot 7 | - dyke 8 | - sodomite 9 | - homosexual agenda 10 | - gay agenda 11 | - transvestite 12 | - homosexual lifestyle 13 | - gay lifestyle 14 | -------------------------------------------------------------------------------- /styles/proselint/LGBTTerms.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Consider using '%s' instead of '%s'." 3 | ignorecase: true 4 | action: 5 | name: replace 6 | swap: 7 | homosexual man: gay man 8 | homosexual men: gay men 9 | homosexual woman: lesbian 10 | homosexual women: lesbians 11 | homosexual people: gay people 12 | homosexual couple: gay couple 13 | sexual preference: sexual orientation 14 | (?:admitted homosexual|avowed homosexual): openly gay 15 | special rights: equal rights 16 | -------------------------------------------------------------------------------- /styles/proselint/Malapropisms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is a malapropism." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - the infinitesimal universe 7 | - a serial experience 8 | - attack my voracity 9 | -------------------------------------------------------------------------------- /styles/proselint/Oxymorons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is an oxymoron." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - amateur expert 7 | - increasingly less 8 | - advancing backwards 9 | - alludes explicitly to 10 | - explicitly alludes to 11 | - totally obsolescent 12 | - completely obsolescent 13 | - generally always 14 | - usually always 15 | - increasingly less 16 | - build down 17 | - conspicuous absence 18 | - exact estimate 19 | - found missing 20 | - intense apathy 21 | - mandatory choice 22 | - organized mess 23 | -------------------------------------------------------------------------------- /styles/proselint/P-Value.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "You should use more decimal places, unless '%s' is really true." 3 | ignorecase: true 4 | level: suggestion 5 | tokens: 6 | - 'p = 0\.0{2,4}' 7 | -------------------------------------------------------------------------------- /styles/proselint/RASSyndrome.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is redundant." 3 | level: error 4 | action: 5 | name: edit 6 | params: 7 | - split 8 | - ' ' 9 | - '0' 10 | tokens: 11 | - ABM missile 12 | - ACT test 13 | - ABM missiles 14 | - ABS braking system 15 | - ATM machine 16 | - CD disc 17 | - CPI Index 18 | - GPS system 19 | - GUI interface 20 | - HIV virus 21 | - ISBN number 22 | - LCD display 23 | - PDF format 24 | - PIN number 25 | - RAS syndrome 26 | - RIP in peace 27 | - please RSVP 28 | - SALT talks 29 | - SAT test 30 | - UPC codes 31 | -------------------------------------------------------------------------------- /styles/proselint/Skunked.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is a bit of a skunked term — impossible to use without issue." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - bona fides 7 | - deceptively 8 | - decimate 9 | - effete 10 | - fulsome 11 | - hopefully 12 | - impassionate 13 | - Thankfully 14 | -------------------------------------------------------------------------------- /styles/proselint/Spelling.yml: -------------------------------------------------------------------------------- 1 | extends: consistency 2 | message: "Inconsistent spelling of '%s'." 3 | level: error 4 | ignorecase: true 5 | either: 6 | advisor: adviser 7 | centre: center 8 | colour: color 9 | emphasise: emphasize 10 | finalise: finalize 11 | focussed: focused 12 | labour: labor 13 | learnt: learned 14 | organise: organize 15 | organised: organized 16 | organising: organizing 17 | recognise: recognize 18 | -------------------------------------------------------------------------------- /styles/proselint/Typography.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Consider using the '%s' symbol instead of '%s'. 3 | level: error 4 | nonword: true 5 | swap: 6 | '\.\.\.': … 7 | '\([cC]\)': © 8 | '\(TM\)': ™ 9 | '\(tm\)': ™ 10 | '\([rR]\)': ® 11 | '[0-9]+ ?x ?[0-9]+': × 12 | -------------------------------------------------------------------------------- /styles/proselint/Uncomparables.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is not comparable" 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: edit 7 | params: 8 | - split 9 | - ' ' 10 | - '1' 11 | raw: 12 | - \b(?:absolutely|most|more|less|least|very|quite|largely|extremely|increasingly|kind of|mildy|hardly|greatly|sort of)\b\s* 13 | tokens: 14 | - absolute 15 | - adequate 16 | - complete 17 | - correct 18 | - certain 19 | - devoid 20 | - entire 21 | - 'false' 22 | - fatal 23 | - favorite 24 | - final 25 | - ideal 26 | - impossible 27 | - inevitable 28 | - infinite 29 | - irrevocable 30 | - main 31 | - manifest 32 | - only 33 | - paramount 34 | - perfect 35 | - perpetual 36 | - possible 37 | - preferable 38 | - principal 39 | - singular 40 | - stationary 41 | - sufficient 42 | - 'true' 43 | - unanimous 44 | - unavoidable 45 | - unbroken 46 | - uniform 47 | - unique 48 | - universal 49 | - void 50 | - whole 51 | -------------------------------------------------------------------------------- /styles/proselint/Very.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Remove '%s'." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - very 7 | -------------------------------------------------------------------------------- /styles/proselint/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "jdkato", 3 | "description": "A Vale-compatible implementation of the proselint linter.", 4 | "email": "support@errata.ai", 5 | "lang": "en", 6 | "url": "https://github.com/errata-ai/proselint/releases/latest/download/proselint.zip", 7 | "feed": "https://github.com/errata-ai/proselint/releases.atom", 8 | "issues": "https://github.com/errata-ai/proselint/issues/new", 9 | "license": "BSD-3-Clause", 10 | "name": "proselint", 11 | "sources": [ 12 | "https://github.com/amperser/proselint" 13 | ], 14 | "vale_version": ">=1.0.0", 15 | "coverage": 0.0, 16 | "version": "0.1.0" 17 | } 18 | -------------------------------------------------------------------------------- /styles/write-good/E-Prime.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to avoid using '%s'." 3 | ignorecase: true 4 | level: suggestion 5 | tokens: 6 | - am 7 | - are 8 | - aren't 9 | - be 10 | - been 11 | - being 12 | - he's 13 | - here's 14 | - here's 15 | - how's 16 | - i'm 17 | - is 18 | - isn't 19 | - it's 20 | - she's 21 | - that's 22 | - there's 23 | - they're 24 | - was 25 | - wasn't 26 | - we're 27 | - were 28 | - weren't 29 | - what's 30 | - where's 31 | - who's 32 | - you're 33 | -------------------------------------------------------------------------------- /styles/write-good/Illusions.yml: -------------------------------------------------------------------------------- 1 | extends: repetition 2 | message: "'%s' is repeated!" 3 | level: warning 4 | alpha: true 5 | action: 6 | name: edit 7 | params: 8 | - truncate 9 | - " " 10 | tokens: 11 | - '[^\s]+' 12 | -------------------------------------------------------------------------------- /styles/write-good/So.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't start a sentence with '%s'." 3 | level: error 4 | raw: 5 | - '(?:[;-]\s)so[\s,]|\bSo[\s,]' 6 | -------------------------------------------------------------------------------- /styles/write-good/ThereIs.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't start a sentence with '%s'." 3 | ignorecase: false 4 | level: error 5 | raw: 6 | - '(?:[;-]\s)There\s(is|are)|\bThere\s(is|are)\b' 7 | -------------------------------------------------------------------------------- /styles/write-good/Weasel.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is a weasel word!" 3 | ignorecase: true 4 | level: warning 5 | tokens: 6 | - clearly 7 | - completely 8 | - exceedingly 9 | - excellent 10 | - extremely 11 | - fairly 12 | - huge 13 | - interestingly 14 | - is a number 15 | - largely 16 | - mostly 17 | - obviously 18 | - quite 19 | - relatively 20 | - remarkably 21 | - several 22 | - significantly 23 | - substantially 24 | - surprisingly 25 | - tiny 26 | - usually 27 | - various 28 | - vast 29 | - very 30 | -------------------------------------------------------------------------------- /styles/write-good/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/write-good/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/example-5s.mkv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/tests/prunerrtests/example-5s.mkv -------------------------------------------------------------------------------- /tests/prunerrtests/home/daemon/.config/prunerr-example.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | daemon: 6 | poll: 1 7 | servarrs: 8 | download-clients: 9 | Transmission: 10 | max-download-bandwidth: 100 11 | min-download-time-margin: 3600 12 | indexers: 13 | -------------------------------------------------------------------------------- /tests/prunerrtests/home/download-client-only/.config/prunerr.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | download-clients: 6 | Transmission: 7 | url: "http://transmission:secret@localhost:9091/transmission/" 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/home/download-items/.config/prunerr.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | download-clients: 6 | Transmission: 7 | max-download-bandwidth: 100 8 | min-download-time-margin: 3600 9 | url: "http://transmission:secret@localhost:9091/transmission/" 10 | -------------------------------------------------------------------------------- /tests/prunerrtests/home/empty/.config/prunerr.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # SPDX-License-Identifier: MIT 3 | 4 | {} 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/home/move-exec/.config/prunerr.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | servarrs: 6 | Sonarr: 7 | url: "http://localhost:8989" 8 | api-key: "" 9 | type: "sonarr" 10 | 11 | download-clients: 12 | Transmission: 13 | url: "http://transmission:secret@localhost:9091/transmission/" 14 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/1-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/1-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/1-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D%26blacklist%3Dtrue/DELETE/0-response/response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D%26blacklist%3Dtrue/DELETE/0-response/response.json -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D%26blacklist%3Dtrue/DELETE/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/1-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/2-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-torrent-get/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "torrents": [] 4 | }, 5 | "result": "success" 6 | } 7 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/daemon/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D%26blacklist%3Dtrue/DELETE/0-response/response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D%26blacklist%3Dtrue/DELETE/0-response/response.json -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D%26blacklist%3Dtrue/DELETE/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 2, 3 | "method": "torrent-remove", 4 | "arguments": { 5 | "delete-local-data": 0, 6 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 3, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/default/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-client-only/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-client-only/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/01-torrent-get/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "torrents": [] 4 | }, 5 | "result": "success" 6 | } 7 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-client-only/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/192.168.1.2%3A80/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/192.168.1.2%3A80/transmission/rpc/POST/01-torrent-get/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "torrents": [] 4 | }, 5 | "result": "success" 6 | } 7 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/192.168.1.2%3A80/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/transmission%40192.168.1.1%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/http/transmission%40192.168.1.1%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/https/transmission.example.com%3A443/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/https/transmission.example.com%3A443/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/https/transmission.foo.example.com%3A443/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-clients/https/transmission.foo.example.com%3A443/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-items/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/download-items/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A7878/api/v3/movie%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A7878/api/v3/movie%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A8989/api/v3/series%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A8989/api/v3/series%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export-empty/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/history/movie%3Fapikey%3D%26movieId%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/movie%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/movieFile%3Fapikey%3D%26movieId%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/episode%3Fapikey%3D%26seriesId%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/episodeFile%3Fapikey%3D%26seriesId%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/history/series%3Fapikey%3D%26seriesId%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/series%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A9696/1/download%3Fapikey%3D%26link%3D%26file%3DFoo.Series.1970.S01E02.Grault.Episode.Title.WEB-DL.x265.HEVC-RELEASER/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | "Example torrent for testing" 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/localhost%3A9696/1/download%3Fapikey%3D%26link%3D%26file%3DFoo.Series.1970.S01E02.Grault.Episode.Title.WEB-DL.x265.HEVC-RELEASER/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-add/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "metainfo": "IkV4YW1wbGUgdG9ycmVudCBmb3IgdGVzdGluZyI=", 4 | "download-dir": "/media/Library/seeding/Sonarr/Videos/Series", 5 | "paused": true 6 | }, 7 | "method": "torrent-add", 8 | "tag": 2 9 | } 10 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-torrent-set-location/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "ids": [1], 4 | "location": "/media/Library/seeding/Sonarr/Videos/Series", 5 | "move": false 6 | }, 7 | "method": "torrent-set-location", 8 | "tag": 3 9 | } 10 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-torrent-set-location/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/04-torrent-verify/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 4, 3 | "method": "torrent-verify", 4 | "arguments": { 5 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/04-torrent-verify/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/05-torrent-start/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 5, 3 | "method": "torrent-start", 4 | "arguments": { 5 | "ids": [1] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/05-torrent-start/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/06-torrent-set/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "ids": ["8B8060BF22C942B1B6CABB8E5B840E445B840E44"], 4 | "files-unwanted": [1] 5 | }, 6 | "method": "torrent-set", 7 | "tag": 6 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/06-torrent-set/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/07-torrent-verify/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 7, 3 | "method": "torrent-verify", 4 | "arguments": { 5 | "ids": ["8B8060BF22C942B1B6CABB8E5B840E445B840E44"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/07-torrent-verify/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/08-torrent-start/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 8, 3 | "method": "torrent-start", 4 | "arguments": { 5 | "ids": [2] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/08-torrent-start/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/09-torrent-verify/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 9, 3 | "method": "torrent-verify", 4 | "arguments": { 5 | "ids": ["2E594A052E594A05ACBE431E81820B39C3671154"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/09-torrent-verify/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/10-torrent-start/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 10, 3 | "method": "torrent-start", 4 | "arguments": { 5 | "ids": [4] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/10-torrent-start/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/export/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 2, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-imported-sufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 2, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-orphans/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-remaining/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 2, 3 | "method": "torrent-remove", 4 | "arguments": { 5 | "delete-local-data": 0, 6 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 3, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-unregistered/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 2, 3 | "method": "torrent-remove", 4 | "arguments": { 5 | "delete-local-data": 0, 6 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 3, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/free-space-upgraded-insufficient/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-completed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-deleted/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-grabbed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A8989/api/v3/history%3Fapikey%3D%26pageSize%3D250%26page%3D1%26downloadId%3D1FAFED76F4264B14934C13D7A306F94FEA4B3184/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-set-location/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"], 4 | "location": "/media/Library/seeding/Sonarr/Videos/Series", 5 | "move": true 6 | }, 7 | "method": "torrent-set-location", 8 | "tag": 2 9 | } 10 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-set-location/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-import/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A8989/api/v3/history%3Fapikey%3D%26pageSize%3D250%26page%3D1%26downloadId%3D1FAFED76F4264B14934C13D7A306F94FEA4B3184/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-set-location/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"], 4 | "location": "/media/Library/seeding/Sonarr/Videos/Series", 5 | "move": true 6 | }, 7 | "method": "torrent-set-location", 8 | "tag": 2 9 | } 10 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-set-location/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported-before/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 1, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-imported/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/move-ungrabbed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A8989/api/v3/queue/2%3Fapikey%3D%26blacklist%3Dtrue/DELETE/0-response/response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/tests/prunerrtests/responses/review-downloading/http/localhost%3A8989/api/v3/queue/2%3Fapikey%3D%26blacklist%3Dtrue/DELETE/0-response/response.json -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A8989/api/v3/queue/2%3Fapikey%3D%26blacklist%3Dtrue/DELETE/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 2, 3 | "method": "torrent-remove", 4 | "arguments": { 5 | "delete-local-data": 0, 6 | "ids": ["72D08E64D0FE455A9ECE08AED0BB646D2632D339"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 3, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/04-torrent-set/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "bandwidthPriority": 1, 4 | "ids": ["909C9B954B414A87B1DCF6E2FB09650FCC35DE57"] 5 | }, 6 | "method": "torrent-set", 7 | "tag": 4 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/04-torrent-set/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/06-torrent-set/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": { 3 | "bandwidthPriority": 1, 4 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 5 | }, 6 | "method": "torrent-set", 7 | "tag": 6 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/06-torrent-set/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-downloading/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D/DELETE/0-response/response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D/DELETE/0-response/response.json -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue/1%3Fapikey%3D/DELETE/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue/2%3Fapikey%3D/DELETE/0-response/response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rpatterson/prunerr/3a905b55a0d60eec49619e3a6f0ed4ccd1ab4466/tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue/2%3Fapikey%3D/DELETE/0-response/response.json -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/queue/2%3Fapikey%3D/DELETE/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 2, 3 | "method": "torrent-remove", 4 | "arguments": { 5 | "delete-local-data": 0, 6 | "ids": ["72D08E64D0FE455A9ECE08AED0BB646D2632D339"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-remove/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/03-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 3, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/04-torrent-remove/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 4, 3 | "method": "torrent-remove", 4 | "arguments": { 5 | "delete-local-data": 0, 6 | "ids": ["909C9B954B414A87B1DCF6E2FB09650FCC35DE57"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/04-torrent-remove/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/05-session-get/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 5, 3 | "method": "session-get", 4 | "arguments": {} 5 | } 6 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-edge-cases/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/review-reviewed/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A7878/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "page": 1, 3 | "pageSize": 250, 4 | "sortKey": "progress", 5 | "sortDirection": "descending", 6 | "totalRecords": 0, 7 | "records": [] 8 | } 9 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A7878/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A7878/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A8989/api/v3/downloadclient%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A8989/api/v3/queue%3Fapikey%3D%26pageSize%3D250%26page%3D1/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/0-response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": "Sonarr", 3 | "instanceName": "Sonarr", 4 | "version": "3.0.9.1549", 5 | "buildTime": "2022-08-06T15:55:48Z", 6 | "isDebug": false, 7 | "isProduction": true, 8 | "isAdmin": false, 9 | "isUserInteractive": false, 10 | "startupPath": "/app/bin", 11 | "appData": "/config", 12 | "osName": "alpine", 13 | "osVersion": "3.16.2", 14 | "isMonoRuntime": true, 15 | "isMono": true, 16 | "isLinux": true, 17 | "isOsx": false, 18 | "isWindows": false, 19 | "mode": "console", 20 | "branch": "main", 21 | "authentication": "none", 22 | "sqliteVersion": "3.38.5", 23 | "urlBase": "", 24 | "runtimeVersion": "6.12.0.182", 25 | "runtimeName": "mono", 26 | "startTime": "2022-11-07T02:36:53.427125Z", 27 | "packageVersion": "release-c566730", 28 | "packageAuthor": "[hotio](https://github.com/hotio)", 29 | "packageUpdateMechanism": "docker" 30 | } 31 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/localhost%3A8989/api/v3/system/status%3Fapikey%3D/GET/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/00-session-get/request.json: -------------------------------------------------------------------------------- 1 | { "tag": 0, "method": "session-get", "arguments": {} } 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-verify/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 2, 3 | "method": "torrent-verify", 4 | "arguments": { 5 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/02-torrent-verify/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/05-torrent-start/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "tag": 5, 3 | "method": "torrent-start", 4 | "arguments": { 5 | "ids": ["1FAFED76F4264B14934C13D7A306F94FEA4B3184"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/05-torrent-start/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "arguments": {}, 3 | "result": "success" 4 | } 5 | -------------------------------------------------------------------------------- /tests/prunerrtests/responses/verify/http/transmission%3Asecret%40localhost%3A9091/transmission/rpc/POST/request-headers.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /tests/prunerrtests/test_re_add.py: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # SPDX-License-Identifier: MIT 3 | 4 | """ 5 | Remove and re-add all download items with nothing downloaded. 6 | """ 7 | 8 | import os 9 | 10 | from unittest import mock 11 | 12 | import prunerrtests 13 | 14 | import prunerr 15 | 16 | 17 | @mock.patch.dict(os.environ, prunerrtests.PrunerrTestCase.ENV) 18 | class PrunerrReAddTests(prunerrtests.PrunerrTestCase): 19 | """ 20 | Remove and re-add all download items with nothing downloaded. 21 | """ 22 | 23 | def test_re_add_workflow(self): 24 | """ 25 | Remove and re-add all download items with nothing downloaded. 26 | """ 27 | self.mock_responses() 28 | prunerr.main(args=[f"--config={self.CONFIG}", "re-add"]) 29 | # TODO: Add test coverage. 30 | -------------------------------------------------------------------------------- /towncrier.toml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | [tool.towncrier] 6 | # https://towncrier.readthedocs.io/en/stable/#quick-start 7 | name = "prunerr" 8 | package = "prunerr" 9 | package_dir = "src" 10 | directory = "./newsfragments" 11 | -------------------------------------------------------------------------------- /transmission/etc/crontabs/abc: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # min hour day month weekday command 6 | 0 3 * * * /app/blocklist-update.sh 2>&1 7 | 8 | # Use `# timeout ...` to prevent jobs from stacking up endlessly and exhausting 9 | # resources when the `# transmission-daemon` is slow to respond: 10 | 11 | # Pause downloading when the `downloadDir` is getting low on space: 12 | * * * * * /usr/bin/timeout -v --kill-after=30m 25m /usr/local/bin/transmission-pause-download 13 | -------------------------------------------------------------------------------- /transmission/etc/crontabs/root: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # do daily/weekly/monthly maintenance 6 | # min hour day month weekday command 7 | */15 * * * * run-parts /etc/periodic/15min 8 | 0 * * * * run-parts /etc/periodic/hourly 9 | 0 2 * * * run-parts /etc/periodic/daily 10 | 0 3 * * 6 run-parts /etc/periodic/weekly 11 | 0 5 1 * * run-parts /etc/periodic/monthly 12 | 13 | # Shut down the container without restarting it when `/config/` is running out of disk space: 14 | * * * * * /usr/bin/timeout -v --kill-after=2m 1m /usr/local/bin/transmission-config-space-shutdown 15 | -------------------------------------------------------------------------------- /transmission/etc/s6-overlay/s6-rc.d/svc-transmission/finish: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv bash 2 | 3 | # SPDX-FileCopyrightText: 2023 Ross Patterson 4 | # 5 | # SPDX-License-Identifier: MIT 6 | 7 | # Stop the container if the service fails 8 | # 9 | # https://github.com/just-containers/s6-overlay#writing-an-optional-finish-script 10 | echo $1 >"/run/s6-linux-init-container-results/exitcode" 11 | exec /run/s6/basedir/bin/halt 12 | -------------------------------------------------------------------------------- /var-docker/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/py311 9 | !/py312 10 | !/py310 11 | !/py39 12 | !/py38 13 | /*~ 14 | -------------------------------------------------------------------------------- /var-docker/media/Library/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py310/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py310/.tox/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py310/prunerr.egg-info/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py311/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py311/.tox/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py311/prunerr.egg-info/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py312/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /var-docker/py312/.tox/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /var-docker/py312/prunerr.egg-info/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /var-docker/py38/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py38/.tox/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py38/prunerr.egg-info/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | !/Makefile 9 | /*~ 10 | -------------------------------------------------------------------------------- /var-docker/py39/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py39/.tox/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var-docker/py39/prunerr.egg-info/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | -------------------------------------------------------------------------------- /var/.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Ross Patterson 2 | # 3 | # SPDX-License-Identifier: MIT 4 | 5 | # Ensure the Docker volume exists so `# dockerd` doesn't create this as root: 6 | /* 7 | !.git* 8 | /*~ 9 | --------------------------------------------------------------------------------