Skip to content
Snippets Groups Projects
Commit d8b6763d authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

Modules: Split http module and create http_multi module

parent 24308d1f
Branches
No related tags found
No related merge requests found
...@@ -24,6 +24,7 @@ using System.Text.Json; ...@@ -24,6 +24,7 @@ using System.Text.Json;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
using System.CommandLine; using System.CommandLine;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
...@@ -336,17 +337,14 @@ class ModuleExec: ModuleAbstractPipe ...@@ -336,17 +337,14 @@ class ModuleExec: ModuleAbstractPipe
} }
[ModuleName("http")] abstract class ModuleHttpAbstract: ModuleSourceThreadAndParser
class ModuleHttp: ModuleSourceThreadAndParser
{ {
string url;
HttpRequestException error; HttpRequestException error;
InnerStatusBar ifReadError; InnerStatusBar ifReadError;
int period_ms; int period_ms;
int timeout_ms; int timeout_ms;
public override void Init(ModuleParent _bar, ConfigSection section) public override void Init(ModuleParent _bar, ConfigSection section)
{ {
url = section.Mandatory("url").AsString();
ifReadError = new InnerStatusBar(_bar, section.Optional("error_handler")?.AsConfig() ?? ifReadError = new InnerStatusBar(_bar, section.Optional("error_handler")?.AsConfig() ??
new ConfigParser( new ConfigParser(
@" @"
...@@ -359,6 +357,7 @@ text = ERR ...@@ -359,6 +357,7 @@ text = ERR
base.Init(_bar, section); base.Init(_bar, section);
} }
abstract protected Task<string> inputThreadFunc_Get(HttpClient client);
async override protected void inputThreadFunc() async override protected void inputThreadFunc()
{ {
HttpClient client = null; HttpClient client = null;
...@@ -377,7 +376,7 @@ text = ERR ...@@ -377,7 +376,7 @@ text = ERR
{ {
long t = Environment.TickCount64; long t = Environment.TickCount64;
string _data = await client.GetStringAsync(url); string _data = await inputThreadFunc_Get(client);
lock(this) lock(this)
{ {
dataTick = t; dataTick = t;
...@@ -417,6 +416,44 @@ text = ERR ...@@ -417,6 +416,44 @@ text = ERR
} }
} }
[ModuleName("http")]
class ModuleHttp: ModuleHttpAbstract
{
string url;
public override void Init(ModuleParent _bar, ConfigSection section)
{
url = section.Mandatory("url").AsString();
base.Init(_bar, section);
}
async override protected Task<string> inputThreadFunc_Get(HttpClient client)
{
return await client.GetStringAsync(url);
}
}
[ModuleName("http_multi")]
class ModuleHttpMulti: ModuleHttpAbstract
{
string[] urlList;
string separator;
public override void Init(ModuleParent _bar, ConfigSection section)
{
urlList = section.Mandatory("urls").Lines().Select(x => x.AsString()).ToArray();
separator = section.Optional("separator")?.AsString() ?? "\n";
base.Init(_bar, section);
}
async override protected Task<string> inputThreadFunc_Get(HttpClient client)
{
List<string> output = new();
foreach(string url in urlList)
{
string r = await client.GetStringAsync(url);
output.Add(r);
}
return string.Join(separator, output);
}
}
[ModuleName("i3status")] [ModuleName("i3status")]
class ModuleI3Status: Module class ModuleI3Status: Module
......
...@@ -291,6 +291,32 @@ timeout = 10 ...@@ -291,6 +291,32 @@ timeout = 10
# <time> default 10 # <time> default 10
# Timeout of each HTTP request. # Timeout of each HTTP request.
[http_multi]
# Fetch message from more than one http(s) pages
error_handler = [constant]
_color = red
text = ERR
delay = 0
show_old = 10
max_old = 30
no_data_handler = [constant]
text = No data
parser = text
period = 20
timeout = 10
# See http module
urls = http://kam.mff.cuni.cz/~jirikalvoda/y
http://kam.mff.cuni.cz/~jirikalvoda/z
# mandatory <string> on each line
separator << AMEN
AMEN
# <string> default see above (one new line)
# Options for all modules # Options for all modules
# ======================= # =======================
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment