initial
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
__pycache__/
|
||||
.venv/
|
||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"python-envs.pythonProjects": []
|
||||
}
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Peter De Bruycker
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
7
Makefile
Normal file
7
Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||
INSTALL_DIR:=$(HOME)/.local/share/albert/python/plugins
|
||||
|
||||
install:
|
||||
ln -fs $(ROOT_DIR)/ $(INSTALL_DIR)/albert-plugin-python-http-status-codes
|
||||
echo $(ROOT_DIR)
|
||||
echo $(INSTALL_DIR)
|
||||
31
README.md
Normal file
31
README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# albert-http-status-codes
|
||||
|
||||
## Installation
|
||||
|
||||
1. Locate the `modules` directory in the Python extension data directory.
|
||||
|
||||
The data directories reside in the data directories of the application defined by Qt.
|
||||
|
||||
```
|
||||
~/.local/share/albert/python/plugins
|
||||
```
|
||||
|
||||
2. Clone this repository into your `modules` directory.
|
||||
|
||||
```bash
|
||||
cd /path/to/modules
|
||||
|
||||
git clone https://gitea.felix-boers.de/fboers/albert-plugin-python-http-status-codes.git
|
||||
```
|
||||
|
||||
3. Enable the extension in the settings under `Extensions`.
|
||||
|
||||
## Usage
|
||||
|
||||
Show the HTTP status codes in a popup.
|
||||
|
||||
Synopsis: `http 200`
|
||||
|
||||
## Contributing
|
||||
|
||||
If you have any questions, suggestions, or issues, please feel free to open an issue or pull request.
|
||||
114
__init__.py
Normal file
114
__init__.py
Normal file
@@ -0,0 +1,114 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from typing import List
|
||||
import albert
|
||||
|
||||
md_iid = '4.0'
|
||||
md_name = "HTTP Status Codes"
|
||||
md_description = "Show the list of HTTP Status Codes"
|
||||
md_version = "0.0.1"
|
||||
md_license = "MIT"
|
||||
md_url = "https://gitea.felix-boers.de/fboers/albert-plugin-python-http-status-codes"
|
||||
md_authors = ["@felixboers"]
|
||||
md_maintainers = ["@felixboers"]
|
||||
|
||||
class Code:
|
||||
def __init__(self, code: int, name: str, description: str):
|
||||
self.code = code
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.match = f"{code} {name}"
|
||||
|
||||
def build_code_list():
|
||||
return [
|
||||
Code(100, "Continue", "The client should continue the request."),
|
||||
Code(101, "Switching Protocols", "The transmission protocol is changed according to the client's request."),
|
||||
Code(102, "Processing", "A time-consuming request is being processed."),
|
||||
Code(200, "OK", "The request was successful."),
|
||||
Code(201, "Created", "A new resource was created."),
|
||||
Code(202, "Accepted", "The request has been accepted but not yet processed."),
|
||||
Code(203, "Non-Authoritative Information", "Meta information from a cache rather than the origin server."),
|
||||
Code(204, "No Content", "The request was successful but there is no content."),
|
||||
Code(205, "Reset Content", "The request was successful and the document should be reset."),
|
||||
Code(206, "Partial Content", "Partial resource delivered successfully."),
|
||||
Code(207, "Multi-Status", "Multiple operations performed; statuses in body."),
|
||||
Code(208, "Already Reported", "Some WebDAV members were already reported."),
|
||||
Code(301, "Moved Permanently", "The resource has a new permanent URL."),
|
||||
Code(302, "Found", "The resource is temporarily under a different URL."),
|
||||
Code(305, "Use Proxy", "Client should retrieve resource via proxy (deprecated)."),
|
||||
Code(307, "Temporary Redirect", "Temporary location, same method must be used."),
|
||||
Code(308, "Permanent Redirect", "Permanent redirect; same method used for future."),
|
||||
Code(400, "Bad Request", "The request is invalid."),
|
||||
Code(401, "Unauthorized", "Authentication is required."),
|
||||
Code(402, "Payment Required", "Payment is required."),
|
||||
Code(403, "Forbidden", "The request is forbidden."),
|
||||
Code(404, "Not Found", "The server could not find the requested resource."),
|
||||
Code(405, "Method Not Allowed", "The method is known but not allowed."),
|
||||
Code(406, "Not Acceptable", "No acceptable representation available."),
|
||||
Code(407, "Proxy Authentication Required", "Proxy authentication needed."),
|
||||
Code(408, "Request Timeout", "Server timed out waiting for full request."),
|
||||
Code(409, "Conflict", "Request conflicts with current state."),
|
||||
Code(410, "Gone", "The resource is no longer available."),
|
||||
Code(411, "Length Required", "Content-Length header required."),
|
||||
Code(412, "Precondition Failed", "A precondition failed."),
|
||||
Code(413, "Payload Too Large", "Payload is too large."),
|
||||
Code(414, "URI Too Long", "Request-URI is too long."),
|
||||
Code(415, "Unsupported Media Type", "Media type not supported."),
|
||||
Code(416, "Range Not Satisfiable", "Requested range not satisfiable."),
|
||||
Code(417, "Expectation Failed", "Expectation given in headers could not be met."),
|
||||
Code(418, "I'm a teapot", "Teapot refuses to brew coffee."),
|
||||
Code(420, "Enhance Your Calm", "Connection limit per user exceeded."),
|
||||
Code(421, "Misdirected Request", "Request directed at incapable server."),
|
||||
Code(422, "Unprocessable Entity", "Semantic errors prevent processing."),
|
||||
Code(423, "Locked", "Resource is currently locked."),
|
||||
Code(424, "Failed Dependency", "Request failed due to previous failure."),
|
||||
Code(426, "Upgrade Required", "Protocol upgrade required."),
|
||||
Code(428, "Precondition Required", "Precondition required for processing."),
|
||||
Code(429, "Too Many Requests", "Too many requests from the client."),
|
||||
Code(431, "Request Header Fields Too Large", "Header fields too large."),
|
||||
Code(444, "Connection Closed Without Response", "Server closed connection without response."),
|
||||
Code(451, "Unavailable For Legal Reasons", "Resource unavailable for legal reasons."),
|
||||
Code(499, "Client Closed Request", "Client closed connection before response."),
|
||||
Code(500, "Internal Server Error", "Server encountered an internal error."),
|
||||
Code(501, "Not Implemented", "Server does not support the functionality."),
|
||||
Code(502, "Bad Gateway", "Upstream server returned an invalid response."),
|
||||
Code(503, "Service Unavailable", "Service is unavailable."),
|
||||
Code(504, "Gateway Timeout", "Upstream server did not respond in time."),
|
||||
Code(505, "HTTP Version Not Supported", "HTTP version is not supported."),
|
||||
Code(506, "Variant Also Negotiates", "Negotiation error."),
|
||||
Code(507, "Insufficient Storage", "Insufficient storage for the request."),
|
||||
Code(508, "Loop Detected", "Infinite loop detected."),
|
||||
Code(510, "Not Extended", "Further extensions required."),
|
||||
Code(511, "Network Authentication Required", "Network authentication required."),
|
||||
Code(599, "Network Connect Timeout Error", "Network connection timeout error."),
|
||||
]
|
||||
|
||||
def build_query_items(query, codes: List[Code]):
|
||||
results = []
|
||||
for code in codes:
|
||||
if query.string.casefold() in code.match.casefold():
|
||||
results.append(
|
||||
albert.StandardItem(
|
||||
id='uuid',
|
||||
text=f"{code.code} {code.name}",
|
||||
subtext=code.description,
|
||||
actions=[]
|
||||
)
|
||||
)
|
||||
return results
|
||||
|
||||
class Plugin(albert.PluginInstance, albert.TriggerQueryHandler):
|
||||
|
||||
def __init__(self):
|
||||
albert.PluginInstance.__init__(self)
|
||||
albert.TriggerQueryHandler.__init__(self)
|
||||
|
||||
def defaultTrigger(self):
|
||||
return 'http '
|
||||
|
||||
# https://albertlauncher.github.io/reference/classalbert_1_1Query.html
|
||||
def handleTriggerQuery(self, query):
|
||||
if not query.isValid:
|
||||
return
|
||||
|
||||
codes = build_code_list()
|
||||
query.add(build_query_items(query, codes))
|
||||
Reference in New Issue
Block a user