HTTPLite
Simple HTTP/HTTPS requests, with some JSON as a bonus.
mkxp-z includes minimal support for communicating with HTTP servers. Support for unencrypted HTTP is always present; HTTPS requires building with the use_https=true option, and OpenSSL installed onto the system.
JSON and HTTP support are built on top of json5pp and cpp-httplib respectively. All functions can raise MKXPErrorif something goes wrong.
JSON
HTTPLite::JSON.stringify(obj)takes one object as an argument, transforming it into a JSON string. AcceptsNil,Float,Integer,String,Array, andHash.HTTPLite::JSON.parse(str)takes one JSON string as an argument, transforming it back into its Ruby equivalent.
HTTP
The HTTP methods all return a hash as a response. This hash contains 3 members (at the moment):
:status (Int)contains the response status (e.g. 200, 404):body (String)contains the body portion of the server's response.:headers (String => String)contains a hash with all the headers contained in the server's response.
The HTTPLite module contains three functions. All return a hash formed in the way described above. They can all be optionally passed headers, as a hash with String values and String keys.
By default, these functions will attempt to follow redirect responses. This can be disabled by passing false to follow_redirects.
HTTPLite.get(url[, headers[, follow_redirects]])takes a url as a string, performing a GET request.HTTPLite.post(url, stringhash[, headers[, follow_redirects]])takes a url as a string, and post data contained as a hash of string keys and string values, performing a POST request.HTTPLite.post_body(url, bodycontent, contenttype[, headers[, follow_redirects]])takes a url as a string, the request's body as a string, and the body's MIME-type as a string, performing a POST request.
# Perform a GET request on any URL
response = HTTPLite.get("https://some.url")
if response[:status] == 200
p response[:body]
end
# Perform a POST request on any URL
postdata = {
"key1" => "value1",
"key2" => "value2"
}
response = HTTPLite.post("https://some.url", postdata)
# Perform a POST request on any URL (using a body as data)
postdata = HTTPLite::JSON.stringify(postdata)
response = HTTPLite.post_body("https://some.url", postdata, "application/json")Last updated