Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Sidorakh/http.gml
A simple http wrapper for GameMaker Studio 2
https://github.com/Sidorakh/http.gml
gamemaker gamemaker-studio-2 gamemakerstudio2 http
Last synced: 10 days ago
JSON representation
A simple http wrapper for GameMaker Studio 2
- Host: GitHub
- URL: https://github.com/Sidorakh/http.gml
- Owner: Sidorakh
- License: mit
- Created: 2020-04-25T01:22:24.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-02-13T13:27:16.000Z (9 months ago)
- Last Synced: 2024-06-21T18:00:41.454Z (5 months ago)
- Topics: gamemaker, gamemaker-studio-2, gamemakerstudio2, http
- Language: Yacc
- Homepage:
- Size: 318 KB
- Stars: 13
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-gamemaker - HTTP GML - Recieve GET requests and upload files in GML. (Networking / Recommendations)
README
# http.gml v2.0
A complete rewrite of http.gml. It's much nicer now.# Documentation is now located at [docs.sidorakh.net/http.gml](https://docs.sidorakh.net/http.gml)
Trust me, it's better that wayThe old documentation is below for posterity
----
## http(url, method, body, options, callback, [error], [progress])
A wrapper for `http_request`, returns the HTTP request ID. The callbacks passed in are called at appropriate times.
| Parameter | Type | Description |
|--|--|--|
| url | String | A valid URL |
| method | String | A valid HTTP Request Method |
| body | String/FormData | An HTTP request body, either a string or FormData |
| options | Struct\ | A struct setting various options in the request (further docs below) |
| callback | function | A function to be called if the HTTP request succeeds |
| error | function | (Optional) A function to be called if the HTTP request fails |
| progress | function | (Optional) A function to be called when the HTTP request is still in progress |### options \
| Property | Type | Description |
|--|--|--|
| headers | Real (ds_map) | A ds_map index of headers to be sent with the HTTP reequest. If not provided, a map is created |
| keep_header_map | Boolean | Whether or not to keep the header map (useful if the headers are reused and don't need to change often) |
| get_file | Boolean | Whether or not to store the response in a `buffer`, which can be accessed in `options.buffer` in the progress callback, and `result` in the error and success callbacks) |
| filename | String | The file to output to when using `http_get_file` |
| keep_form_data | Boolean | Whether or not to clean up/destroy the FormData object included in a HTTP request. Ignored if no FormData object is passed in as body |
| buffer | Real (Buffer) | A buffer containing the HTTP response if the `get_file` flag is set |
| keep_buffer | Boolean | Whether or not to automatically delete the buffer generated by the `get_file` flag (default: `false`) |
| response_headers | Real (ds_map) | Response headers for the request, if available |### callback(http_status, result, [options])
A function to be called when the HTTP request is successful
| Parameter | Type | Description |
|--|--|--|
| http_status | Real | HTTP status code |
| result | String | Real | HTTP response body |
| options | Struct\ | The `options` object passed into the `http` function (optional) |### error(http_status, result, [options])
A function to be called when the HTTP request is unsuccessful
| Parameter | Type | Description |
|--|--|--|
| http_status | Real | HTTP status code |
| result | String | Real | HTTP response body |
| options | Struct\ | The `options` object passed into the `http` function (optional) |### progress(content_length, size_downloaded, [options])
A function that is called when an HTTP request is still in progress (and has not completed or failed)
| Parameter | Type | Description |
|--|--|--|
| content_length | Real | Total response size |
| size_dwnloaded | String | Data downloaded |
| options | Struct\ | The `options` object passed into the `http` function (optional) |## FormData
A struct that implements FormData as best I can to the spec set out in [rfc2045](https://datatracker.ietf.org/doc/html/rfc2045).### add_file(name, file, options)
Adds a file field to the FormData object
| Parameter| Type | Description |
|--|--|--|
| name | String | Field name |
| file | String | Path to file to load into FormData |
| options | Struct\ | Options related to file |### add_data(name, data)
Adds a data field to the FormData object
| Parameter | Type | Description |
|--|--|--|
| name | String | Field name |
| data | String | Field Data |### form_body
Returns the `multipart/form-data` encoded body and the boundary, ready for use in the `HTTP` function
Returns: [Buffer, String]### cleanup
Cleans up any buffers created and stored in the FormData object that were not flagged with `keep_buffer`, except the results of the `form_body` function### options\
| Property | Type | Description |
|--|--|--|
| file_is_buffer | Boolean | Whether or not the File passed in to `add_file` is a Buffer instead of a file/path |
| keep_buffer | Boolean | When using `file_is_buffer`, this controls whether or not the buffer is kept after the FormData object runs its `cleanup()` function |
| filename | String | Filename to use for the uploaded file (in the form field). If blank, will use the filename in the `file` argument, or the string `"unknown"` if a buffer was specified |
| mimetype | String | The mimetype to mark the file as. This is sniffed from the filename if there's a [filetype registered with the IANA](https://www.iana.org/assignments/media-types/media-types.xhtml) in the `get_mime_from_extension()` function |## Example Usage
### Basic GET request
```js
// Using the amazing yes/no API - https://yesno.wtf
http("https://yesno.wtf/api","GET","",{},function(status,result){
result = json_parse(result);
show_message(result.answer);
})
```
### Uploading a file (multipart/form-data)```js
var form = new FormData();
form.add_file("file","codes.json");
form.add_data("foo","bar");
var headers = ds_map_create();
headers[? "X-App-Id"] = "ABC123"
http("https://enn3xyub5vujm.x.pipedream.net/", "POST", form, {headers:headers}, function(http_status,result){
show_message(result);
},function(http_status,result){
show_message("Error - " + result);
});
```### Downloading a photo of a cat
```js
http("https://i.imgur.com/R42xZ1p.jpg","GET","",{get_file:true},
function(status,result){
buffer_save(result,"out.jpg");
// We have a cat, maaaaan!
}
);```