├── .gitignore
├── Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests
├── Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests.csproj
└── MainTests.cs
├── Community.PowerToys.Run.Plugin.HttpStatusCodes
├── Community.PowerToys.Run.Plugin.HttpStatusCodes.csproj
├── ErrorHandler.cs
├── HttpStatusEntry.cs
├── Images
│ ├── httpstatuscodes.dark.png
│ └── httpstatuscodes.light.png
├── Main.cs
├── PluginSettings.cs
└── plugin.json
├── HttpStatusCodes.sln
├── LICENSE
├── README.md
└── httpstatuscodes.gif
/.gitignore:
--------------------------------------------------------------------------------
1 | # Binaries for programs and libraries
2 | bin/
3 | obj/
4 | out/
5 |
6 | # NuGet Packages Directory
7 | packages/
8 | !packages/README.txt
9 |
10 | # MSBuild Temporary Files
11 | *.suo
12 | *.user
13 | *.vspscc
14 | *.vssscc
15 | *.csproj.user
16 | *.csproj.vspscc
17 | *.vbproj.user
18 | *.vbproj.vspscc
19 | *.fsproj.user
20 | *.fsproj.vspscc
21 | *.vcxproj.user
22 | *.vcxproj.vspscc
23 |
24 | # Build Artifacts
25 | *.dll
26 | *.exe
27 | *.pdb
28 | *.mdb
29 | *.dll.config
30 | *.exe.config
31 | *.log
32 | *.bak
33 | *.tmp
34 |
35 | # MSTest Test Results
36 | TestResults/
37 | *_TestResults/
38 |
39 | # NUnit Test Results
40 | *.TestLog.xml
41 | *.TestResult.xml
42 |
43 | # Visual Studio Cache/Generated files
44 | .vs/
45 | *.cache
46 | *.lock.wpd
47 | *.mdf
48 | *.ldf
49 | *.sqlite3
50 |
51 | # Roslyn Compiler Generated Files
52 | *.rsproj
53 | *.rsp
54 |
55 | # Visual Studio Code
56 | .vscode/
57 | *.code-workspace
58 |
59 | # JetBrains Rider
60 | .Rider/
61 | *.idea/
62 | *.sln.iml
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests/Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | x64;ARM64
6 | $(Platform)
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests/MainTests.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.VisualStudio.TestTools.UnitTesting;
2 | using System.Linq;
3 | using Wox.Plugin;
4 |
5 | namespace Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests
6 | {
7 | [TestClass]
8 | public class MainTests
9 | {
10 | private Main main;
11 |
12 | [TestInitialize]
13 | public void TestInitialize()
14 | {
15 | main = new Main();
16 | }
17 |
18 | [TestMethod]
19 | public void Query_should_return_results()
20 | {
21 | var results = main.Query(new("search"));
22 |
23 | Assert.IsNotNull(results.First());
24 | }
25 |
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/Community.PowerToys.Run.Plugin.HttpStatusCodes.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0-windows
5 | true
6 | x64;ARM64
7 | $(Platform)
8 | enable
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | PreserveNewest
18 |
19 |
20 | PreserveNewest
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/ErrorHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Wox.Plugin;
4 | using Wox.Plugin.Logger;
5 | using BrowserInfo = Wox.Plugin.Common.DefaultBrowserInfo;
6 |
7 | namespace Community.PowerToys.Run.Plugin.HttpStatusCodes;
8 |
9 | internal static class ErrorHandler
10 | {
11 | internal static List OnError(string icon, string queryInput, string errorMessage, Exception exception = default)
12 | {
13 | Log.Error($"Failed to calculate <{queryInput}>: {errorMessage}", typeof(HttpStatusCodes.Main));
14 |
15 | return [ CreateErrorResult(errorMessage, icon) ];
16 | }
17 |
18 | internal static void OnPluginError()
19 | {
20 | var errorMessage = $"Failed to open {BrowserInfo.Name ?? BrowserInfo.MSEdgeName}";
21 | Log.Error(errorMessage, typeof(HttpStatusCodes.Main));
22 | }
23 |
24 | private static Result CreateErrorResult(string errorMessage, string iconPath)
25 | {
26 | return new Result
27 | {
28 | Title = "Search failed",
29 | SubTitle = errorMessage,
30 | IcoPath = iconPath,
31 | Score = 300,
32 | };
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/HttpStatusEntry.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Community.PowerToys.Run.Plugin.HttpStatusCodes;
4 |
5 | public class HttpStatusEntry(string code, string reasonPhrase, string oneLiner, string definedIn)
6 | {
7 | public string Code { get; } = code;
8 | public string ReasonPhrase { get; } = reasonPhrase;
9 | public string OneLiner { get; } = oneLiner;
10 | public string DefinedIn { get; } = definedIn;
11 | }
12 |
13 | public static class HttpStatusCatalog
14 | {
15 | private static readonly Dictionary Entries = new()
16 | {
17 | {"100", new HttpStatusEntry("100", "Continue", "The server has received the request headers, and that the client should proceed to send the request body", "http://tools.ietf.org/html/rfc7231#section-6.2.1")},
18 | {"101", new HttpStatusEntry("101", "Switching Protocols", "The requester has asked the server to switch protocols and the server is acknowledging that it will do so", "http://tools.ietf.org/html/rfc7231#section-6.2.2")},
19 | {"200", new HttpStatusEntry("200", "OK", "Standard response for successful HTTP requests", "http://tools.ietf.org/html/rfc7231#section-6.3.1")},
20 | {"201", new HttpStatusEntry("201", "Created", "The request has been fulfilled and resulted in a new resource being created", "http://tools.ietf.org/html/rfc7231#section-6.3.2")},
21 | {"204", new HttpStatusEntry("204", "No Content", "The server has successfully fulfilled the request and that there is no additional content to send in the response payload body", "http://tools.ietf.org/html/rfc7231#section-6.3.5")},
22 | {"206", new HttpStatusEntry("206", "Partial Content", "The server is successfully fulfilling a range request for the target resource", "http://tools.ietf.org/html/rfc7233#section-4.1")},
23 | {"301", new HttpStatusEntry("301", "Moved Permanently", "The resource has been moved permanently to a different URI", "http://tools.ietf.org/html/rfc7231#section-6.4.2")},
24 | {"302", new HttpStatusEntry("302", "Found", "The server is redirecting to a different URI, as indicated by the Location header", "http://tools.ietf.org/html/rfc7231#section-6.4.3")},
25 | {"303", new HttpStatusEntry("303", "See Other", "The server is redirecting to a different URI which accesses the same resource", "http://tools.ietf.org/html/rfc7231#section-6.4.4")},
26 | {"304", new HttpStatusEntry("304", "Not Modified", "There is no need to retransmit the resource, since the client still has a previously-downloaded copy", "http://tools.ietf.org/html/rfc7232#section-4.1")},
27 | {"305", new HttpStatusEntry("305", "Use Proxy", "The requested resource is only available through a proxy, whose address is provided in the response", "http://tools.ietf.org/html/rfc7231#section-6.4.5")},
28 | {"307", new HttpStatusEntry("307", "Temporary Redirect", "Subsequent requests should use the specified proxy", "http://tools.ietf.org/html/rfc7231#section-6.4.7")},
29 | {"400", new HttpStatusEntry("400", "Bad Request", "The request could not be understood by the server due to malformed syntax", "http://tools.ietf.org/html/rfc7231#section-6.5.1")},
30 | {"401", new HttpStatusEntry("401", "Unauthorized", "Authentication is required and has failed or has not yet been provided", "http://tools.ietf.org/html/rfc7235#section-3.1")},
31 | {"402", new HttpStatusEntry("402", "Payment Required", "The 402 (Payment Required) status code is reserved for future use", "http://tools.ietf.org/html/rfc7231#section-6.5.2")},
32 | {"403", new HttpStatusEntry("403", "Forbidden", "The server understood the request but refuses to authorize it", "http://tools.ietf.org/html/rfc7231#section-6.5.3")},
33 | {"404", new HttpStatusEntry("404", "Not Found", "The requested resource could not be found but may be available again in the future", "http://tools.ietf.org/html/rfc7231#section-6.5.4")},
34 | {"405", new HttpStatusEntry("405", "Method Not Allowed", "A request was made of a resource using a request method not supported by that resource", "http://tools.ietf.org/html/rfc7231#section-6.5.5")},
35 | {"406", new HttpStatusEntry("406", "Not Acceptable", "The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request", "http://tools.ietf.org/html/rfc7231#section-6.5.6")},
36 | {"407", new HttpStatusEntry("407", "Proxy Authentication Required", "The client must first authenticate itself with the proxy", "http://tools.ietf.org/html/rfc7235#section-3.2")},
37 | {"408", new HttpStatusEntry("408", "Request Timeout", "The server timed out waiting for the request", "http://tools.ietf.org/html/rfc7231#section-6.5.7")},
38 | {"409", new HttpStatusEntry("409", "Conflict", "The request could not be processed because of conflict in the request", "http://tools.ietf.org/html/rfc7231#section-6.5.8")},
39 | {"410", new HttpStatusEntry("410", "Gone", "The resource requested is no longer available and will not be available again", "http://tools.ietf.org/html/rfc7231#section-6.5.9")},
40 | {"411", new HttpStatusEntry("411", "Length Required", "The request did not specify the length of its content, which is required by the requested resource", "http://tools.ietf.org/html/rfc7231#section-6.5.10")},
41 | {"412", new HttpStatusEntry("412", "Precondition Failed", "The server does not meet one of the preconditions that the requester put on the request", "http://tools.ietf.org/html/rfc7232#section-4.2")},
42 | {"413", new HttpStatusEntry("413", "Payload Too Large", "The request is larger than the server is willing or able to process", "http://tools.ietf.org/html/rfc7231#section-6.5.11")},
43 | {"414", new HttpStatusEntry("414", "URI Too Long", "The URI provided was too long for the server to process", "http://tools.ietf.org/html/rfc7231#section-6.5.12")},
44 | {"415", new HttpStatusEntry("415", "Unsupported Media Type", "The request entity has a media type which the server or resource does not support", "http://tools.ietf.org/html/rfc7231#section-6.5.13")},
45 | {"416", new HttpStatusEntry("416", "Range Not Satisfiable", "The client has asked for a portion of the file (byte serving), but the server cannot supply that portion", "http://tools.ietf.org/html/rfc7233#section-4.4")},
46 | {"417", new HttpStatusEntry("417", "Expectation Failed", "The server cannot meet the requirements of the Expect request-header field", "http://tools.ietf.org/html/rfc7231#section-6.5.14")},
47 | {"426", new HttpStatusEntry("426", "Upgrade Required", "The client should switch to a different protocol", "http://tools.ietf.org/html/rfc7231#section-6.5.15")},
48 | {"428", new HttpStatusEntry("428", "Precondition Required", "The origin server requires the request to be conditional.", "http://tools.ietf.org/html/rfc6585#section-3")},
49 | {"429", new HttpStatusEntry("429", "Too Many Requests", "The user has sent too many requests in a given amount of time (rate limiting).", "http://tools.ietf.org/html/rfc6585#section-4")},
50 | {"431", new HttpStatusEntry("431", "Request Header Fields Too Large", "The server is unwilling to process the request because its header fields are too large.", "http://tools.ietf.org/html/rfc6585#section-5")},
51 | {"500", new HttpStatusEntry("500", "Internal Server Error", "The server encountered an unexpected condition that prevented it from fulfilling the request", "http://tools.ietf.org/html/rfc7231#section-6.6.1")},
52 | {"501", new HttpStatusEntry("501", "Not Implemented", "The server does not support the functionality required to fulfill the request", "http://tools.ietf.org/html/rfc7231#section-6.6.2")},
53 | {"502", new HttpStatusEntry("502", "Bad Gateway", "The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request", "http://tools.ietf.org/html/rfc7231#section-6.6.3")},
54 | {"503", new HttpStatusEntry("503", "Service Unavailable", "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance", "http://tools.ietf.org/html/rfc7231#section-6.6.4")},
55 | {"504", new HttpStatusEntry("504", "Gateway Timeout", "The server, while acting as a gateway or proxy, did not receive a timely response from an upstream server", "http://tools.ietf.org/html/rfc7231#section-6.6.5")},
56 | {"505", new HttpStatusEntry("505", "HTTP Version Not Supported", "The server does not support, or refuses to support, the major version of HTTP that was used in the request", "http://tools.ietf.org/html/rfc7231#section-6.6.6")},
57 | {"511", new HttpStatusEntry("511", "Network Authentication Required", "The client needs to authenticate to gain network access.", "http://tools.ietf.org/html/rfc6585#section-6")}
58 | };
59 |
60 | ///
61 | /// Try to find an entry by its code.
62 | ///
63 | public static bool TryFindByCode(string code, out HttpStatusEntry? entry)
64 | {
65 | return Entries.TryGetValue(code, out entry);
66 | }
67 | }
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/Images/httpstatuscodes.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/grzhan/HttpStatusCodePowerToys/51c2c0b47d2c8c9e04477f7e0f0cdb151646a014/Community.PowerToys.Run.Plugin.HttpStatusCodes/Images/httpstatuscodes.dark.png
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/Images/httpstatuscodes.light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/grzhan/HttpStatusCodePowerToys/51c2c0b47d2c8c9e04477f7e0f0cdb151646a014/Community.PowerToys.Run.Plugin.HttpStatusCodes/Images/httpstatuscodes.light.png
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/Main.cs:
--------------------------------------------------------------------------------
1 | using ManagedCommon;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.Linq;
6 | using System.Windows.Controls;
7 | using Microsoft.PowerToys.Settings.UI.Library;
8 | using Wox.Infrastructure;
9 | using Wox.Infrastructure.Storage;
10 | using Wox.Plugin;
11 | using BrowserInfo = Wox.Plugin.Common.DefaultBrowserInfo;
12 |
13 | namespace Community.PowerToys.Run.Plugin.HttpStatusCodes
14 | {
15 | ///
16 | /// Main class of this plugin that implement all used interfaces.
17 | ///
18 | public class Main : IPlugin, IDisposable, ISettingProvider, ISavable
19 | {
20 | ///
21 | /// ID of the plugin.
22 | ///
23 | public static string PluginID => "8419E21B985441A9A06C4B6264422694";
24 |
25 | ///
26 | /// Name of the plugin.
27 | ///
28 | public string Name => "Http Status Codes";
29 |
30 | ///
31 | /// Description of the plugin.
32 | ///
33 | public string Description => "Search for HTTP status codes and open the corresponding RFC.";
34 |
35 | private PluginInitContext Context { get; set; }
36 |
37 | private string IconPath { get; set; }
38 |
39 | private bool Disposed { get; set; }
40 |
41 | private readonly PluginJsonStorage _storage;
42 | private readonly PluginSettings _settings;
43 |
44 | public Main()
45 | {
46 | _storage = new PluginJsonStorage();
47 | _settings = _storage.Load();
48 | }
49 |
50 | public void Save()
51 | {
52 | _storage.Save();
53 | }
54 |
55 | public Control CreateSettingPanel()
56 | {
57 | throw new NotImplementedException();
58 | }
59 |
60 | public IEnumerable AdditionalOptions => new List()
61 | {
62 | new PluginAdditionalOption()
63 | {
64 | Key = "ReferenceType",
65 | DisplayLabel = "Reference Type",
66 | DisplayDescription =
67 | "Configuration to determine the type of documentation (RFC or MDN) referenced upon pressing Enter or clicking to open the browser after finding the corresponding HTTP status code.",
68 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Combobox,
69 | ComboBoxItems = new List>()
70 | {
71 | new KeyValuePair("RFC", "0"),
72 | new KeyValuePair("MDN", "1"),
73 | },
74 | ComboBoxValue = (int)_settings.ReferenceType
75 | }
76 | };
77 |
78 | ///
79 | /// Return a filtered list, based on the given query.
80 | ///
81 | /// The query to filter the list.
82 | /// A filtered list, can be empty when nothing was found.
83 | public List Query(Query query)
84 | {
85 | ArgumentNullException.ThrowIfNull(query);
86 | var isGlobalQuery = string.IsNullOrEmpty(query.ActionKeyword);
87 | if (string.IsNullOrEmpty(query.Search) || isGlobalQuery || query.Search.Length < 3)
88 | {
89 | return [];
90 | }
91 | if (HttpStatusCatalog.TryFindByCode(query.Search, out var httpStatus))
92 | {
93 | return [
94 | new Result
95 | {
96 | Title = $"{httpStatus?.Code} {httpStatus?.ReasonPhrase}",
97 | SubTitle = httpStatus?.OneLiner,
98 | IcoPath = IconPath,
99 | Action = _ =>
100 | {
101 | var url = httpStatus!.DefinedIn;
102 | if (_settings.ReferenceType == ReferenceType.Mdn)
103 | {
104 | url = "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/" + httpStatus!.Code;
105 | }
106 |
107 | try {
108 | if (Helper.OpenCommandInShell(BrowserInfo.Path, BrowserInfo.ArgumentsPattern,
109 | url)) return true;
110 | } catch (InvalidOperationException) {
111 | // See https://github.com/grzhan/HttpStatusCodePowerToys/issues/3
112 | // In some operating systems (perhaps Windows 10),
113 | // the DefaultBrowserInfo fails to return the correct browser path.
114 | // Therefore, attempt to launch the browser directly based on the URL.
115 | Process.Start(new ProcessStartInfo(url)
116 | {
117 | UseShellExecute = true
118 | });
119 | }
120 | ErrorHandler.OnPluginError();
121 | return false;
122 | },
123 | Score = 300,
124 | }
125 | ];
126 | }
127 | return [];
128 | }
129 |
130 | ///
131 | /// Initialize the plugin with the given .
132 | ///
133 | /// The for this plugin.
134 | public void Init(PluginInitContext context)
135 | {
136 | Context = context ?? throw new ArgumentNullException(nameof(context));
137 | Context.API.ThemeChanged += OnThemeChanged;
138 | UpdateIconPath(Context.API.GetCurrentTheme());
139 | }
140 |
141 | ///
142 | public void Dispose()
143 | {
144 | Dispose(true);
145 | GC.SuppressFinalize(this);
146 | }
147 |
148 | ///
149 | /// Wrapper method for that dispose additional objects and events form the plugin itself.
150 | ///
151 | /// Indicate that the plugin is disposed.
152 | protected virtual void Dispose(bool disposing)
153 | {
154 | if (Disposed || !disposing)
155 | {
156 | return;
157 | }
158 |
159 | if (Context?.API != null)
160 | {
161 | Context.API.ThemeChanged -= OnThemeChanged;
162 | }
163 |
164 | Disposed = true;
165 | }
166 |
167 | public void UpdateSettings(PowerLauncherPluginSettings settings)
168 | {
169 | var refOption = 0;
170 | if (settings is { AdditionalOptions: not null })
171 | {
172 | var referenceType =
173 | settings.AdditionalOptions.FirstOrDefault(x => x.Key == "ReferenceType");
174 | refOption = referenceType?.ComboBoxValue ?? refOption;
175 | _settings.ReferenceType = (ReferenceType)refOption;
176 | }
177 |
178 | Save();
179 | }
180 |
181 | private void UpdateIconPath(Theme theme) => IconPath = theme is Theme.Light or Theme.HighContrastWhite ? "Images/httpstatuscodes.light.png" : "Images/httpstatuscodes.dark.png";
182 |
183 | private void OnThemeChanged(Theme currentTheme, Theme newTheme) => UpdateIconPath(newTheme);
184 | }
185 | }
186 |
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/PluginSettings.cs:
--------------------------------------------------------------------------------
1 | namespace Community.PowerToys.Run.Plugin.HttpStatusCodes;
2 |
3 | public class PluginSettings
4 | {
5 | public ReferenceType ReferenceType { get; set; } = ReferenceType.Rfc;
6 | }
7 |
8 | public enum ReferenceType
9 | {
10 | Rfc = 0,
11 | Mdn = 1,
12 | }
--------------------------------------------------------------------------------
/Community.PowerToys.Run.Plugin.HttpStatusCodes/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "8419E21B985441A9A06C4B6264422694",
3 | "ActionKeyword": "http",
4 | "IsGlobal": false,
5 | "Name": "Http Status Codes",
6 | "Author": "grzhan",
7 | "Version": "0.1.3",
8 | "Language": "csharp",
9 | "Website": "https://github.com/hlaueriksson/Community.PowerToys.Run.Plugin.HttpStatusCodes",
10 | "ExecuteFileName": "Community.PowerToys.Run.Plugin.HttpStatusCodes.dll",
11 | "IcoPathDark": "Images\\httpstatuscodes.dark.png",
12 | "IcoPathLight": "Images\\httpstatuscodes.light.png",
13 | "DynamicLoading": false
14 | }
15 |
--------------------------------------------------------------------------------
/HttpStatusCodes.sln:
--------------------------------------------------------------------------------
1 | Microsoft Visual Studio Solution File, Format Version 12.00
2 | # Visual Studio Version 17
3 | VisualStudioVersion = 17.10.35027.167
4 | MinimumVisualStudioVersion = 10.0.40219.1
5 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Community.PowerToys.Run.Plugin.HttpStatusCodes", "Community.PowerToys.Run.Plugin.HttpStatusCodes\Community.PowerToys.Run.Plugin.HttpStatusCodes.csproj", "{42D4374E-8084-4541-9893-60759138875D}"
6 | EndProject
7 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests", "Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests\Community.PowerToys.Run.Plugin.HttpStatusCodes.UnitTests.csproj", "{33CAB7FE-2DD6-4625-9134-77D55F97F1E5}"
8 | EndProject
9 | Global
10 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
11 | Debug|ARM64 = Debug|ARM64
12 | Debug|x64 = Debug|x64
13 | Release|ARM64 = Release|ARM64
14 | Release|x64 = Release|x64
15 | EndGlobalSection
16 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
17 | {42D4374E-8084-4541-9893-60759138875D}.Debug|ARM64.ActiveCfg = Debug|ARM64
18 | {42D4374E-8084-4541-9893-60759138875D}.Debug|ARM64.Build.0 = Debug|ARM64
19 | {42D4374E-8084-4541-9893-60759138875D}.Debug|x64.ActiveCfg = Debug|x64
20 | {42D4374E-8084-4541-9893-60759138875D}.Debug|x64.Build.0 = Debug|x64
21 | {42D4374E-8084-4541-9893-60759138875D}.Release|ARM64.ActiveCfg = Release|ARM64
22 | {42D4374E-8084-4541-9893-60759138875D}.Release|ARM64.Build.0 = Release|ARM64
23 | {42D4374E-8084-4541-9893-60759138875D}.Release|x64.ActiveCfg = Release|x64
24 | {42D4374E-8084-4541-9893-60759138875D}.Release|x64.Build.0 = Release|x64
25 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Debug|ARM64.ActiveCfg = Debug|ARM64
26 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Debug|ARM64.Build.0 = Debug|ARM64
27 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Debug|x64.ActiveCfg = Debug|x64
28 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Debug|x64.Build.0 = Debug|x64
29 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Release|ARM64.ActiveCfg = Release|ARM64
30 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Release|ARM64.Build.0 = Release|ARM64
31 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Release|x64.ActiveCfg = Release|x64
32 | {33CAB7FE-2DD6-4625-9134-77D55F97F1E5}.Release|x64.Build.0 = Release|x64
33 | EndGlobalSection
34 | GlobalSection(SolutionProperties) = preSolution
35 | HideSolutionNode = FALSE
36 | EndGlobalSection
37 | GlobalSection(ExtensibilityGlobals) = postSolution
38 | SolutionGuid = {A92F02E6-409B-4D5B-BC53-5F376A3FB3B3}
39 | EndGlobalSection
40 | EndGlobal
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 grzhan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PowerToys Run: Http Status Codes
2 |
3 | [](https://github.com/grzhan/HttpStatusCodePowerToys/releases/latest)
4 | [](https://github.com/grzhan/HttpStatusCodePowerToys/releases/)
5 | [](https://github.com/grzhan/HttpStatusCodePowerToys/releases/latest)
6 |
7 | A [PowerToys Run](https://learn.microsoft.com/windows/powertoys/run) plugin for searching HTTP status codes. This plugin displays the codes along with their reason-phrase (e.g. "Not Found") and a short sentence describing the function of this code.
8 |
9 | Hitting return opens a browser window with the proper RFC (or [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404)) for that status code.
10 |
11 | 
12 |
13 | ## Installation
14 |
15 | 1. Close PowerToys.
16 | 2. Download [latest release](https://github.com/grzhan/HttpStatusCodePowerToys/releases/latest).
17 | 3. Extract it to `%LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins\`.
18 | 4. Start PowerToys.
19 |
20 | ## Usage
21 |
22 | + `http {code}`
23 |
24 |
25 | ## License
26 |
27 | This software is licensed under the [MIT licence](https://github.com/grzhan/HttpStatusCodePowerToys/blob/main/LICENSE)
--------------------------------------------------------------------------------
/httpstatuscodes.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/grzhan/HttpStatusCodePowerToys/51c2c0b47d2c8c9e04477f7e0f0cdb151646a014/httpstatuscodes.gif
--------------------------------------------------------------------------------