%% luahttp.sty %% Copyright 2023 Johannes Casaburi % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % https://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2008 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Johannes Casaburi (johannes.casaburi@protonmail.com). % % This work consists of the files luahttp.sty, display.lua and fetch.lua. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luahttp}[LuaHTTP Package, Version 1.0.1] \RequirePackage{ifluatex} \RequirePackage{url} \RequirePackage{xparse} \ifluatex \RequirePackage{luapackageloader} \directlua{ version = 5.3 package.path = 'lua_modules/share/lua/' .. version .. '/?.lua;lua_modules/share/lua/' .. version .. '/?/init.lua;' .. package.path package.cpath = 'lua_modules/lib/lua/' .. version .. '/?.so;' .. package.cpath display = require("luahttp-display") } % \fetchJson{URL}[optional: "key1,key2,.."] \NewDocumentCommand{\fetchJson}{m o}{ \IfNoValueTF{#2} {\directlua{display.json("\luaescapestring{#1}")}} % without arg 2 {\directlua{display.json("\luaescapestring{#1}", "\luaescapestring{#2}")}} } % \fetchJsonUsingFile{JSON file}[optional: "key1,key2,.."] \NewDocumentCommand{\fetchJsonUsingFile}{m o}{ \IfNoValueTF{#2} {\directlua{display.json_using_file("\luaescapestring{#1}")}} % without arg 2 {\directlua{display.json_using_file("\luaescapestring{#1}", "\luaescapestring{#2}")}} } % \fetchJsonUsingQuery{URL}{"key1,key2,.."} [optional: "queryparameter1=value1"] .. [optional: "queryparameter5=value5"] \NewDocumentCommand{\fetchJsonUsingQuery}{m m o o o o o}{ \IfNoValueTF{#7} {\IfNoValueTF{#6} {\IfNoValueTF{#5} {\IfNoValueTF{#4} {\IfNoValueTF{#3} {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}")}} {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}")}} } {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}")}} } {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}")}} } {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}", "\luaescapestring{#6}")}} } {\directlua{display.json_using_query("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}", "\luaescapestring{#6}", "\luaescapestring{#7}")}} } % \fetchRss{URL}{limit}[optional: "feedinfokey1,feedinfokey2,.."][optional: "entrykey1,entrykey2,.."] \NewDocumentCommand{\fetchRss}{m m o o}{ \IfNoValueTF{#4} {\IfNoValueTF{#3} {\directlua{display.rss("\luaescapestring{#1}", #2)}} {\directlua{display.rss("\luaescapestring{#1}", #2, "\luaescapestring{#3}")}} } % without arg 4 {\directlua{display.rss("\luaescapestring{#1}", #2, "\luaescapestring{#3}", "\luaescapestring{#4}")} } } %\fetchImage{URL}[optional: width][optional: height] \NewDocumentCommand{\fetchImage}{m o o}{ \IfNoValueTF{#2} {\directlua{display.image("\luaescapestring{#1}")}} % whithout arg 2 {\IfNoValueTF{#3} {\directlua{display.image("\luaescapestring{#1}", "\luaescapestring{#2}")}} % without arg 3 {\directlua{display.image("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}")}} } } \else \PackageError{luatexhttp}{LuaTeX is required}\@ehd \expandafter\endinput % abort early \fi