About
cURLParser is a tool to help translate cURL commands into Best HTTP/2 code. Link to the Unity Asset Store page: https://assetstore.unity.com/packages/tools/network/best-http-2-curl-parser-addon-187305
Setup Guide
This addon doesn’t require any installation steps, but it’s recommended to import after the Best HTTP/2 package. After importing both packages the cURLParser window can be opened through the Window/Best HTTP/Addons/cURL Parser/Parser Window menu item or with the Ctrl+Alt+R keyboard shortcut.
The cURL Parser Window
-
**cURL Command**: Paste your cURL command here.
-
**Request Usage**: How and where you want to use the generated code. It can generate code to call a callback upon finishing the request, generate a coroutine or an awaitable async function.
-
**Parse Button**: Press this button to parse the command and generate the plugin code.
-
**Generated Code**: This is where the generated code shows up. Note that the generated code is just a snippet, it wouldn't compile pasting it into an empty file and you still have to make edits on the code.
-
**Copy to Clipboard Button**: Clicking on this going to copy the generated code to the clipboard.
Not all cURL features are parsed and implemented. One example is the file content operator (@) that cURL uses to read a field or other content from a file instead of treating it as a plain textual data.
Example
The picture above uses a cURL command copied from the OneSignal REST API documentation:
curl –include
–request POST
–header “Content-Type: application/json; charset=utf-8”
–header “Authorization: Basic YOUR_REST_API_KEY”
–data-binary “{"app_id": "YOUR_APP_ID", "contents": {"en": "English Message"}, "headings": {"en": "English Title"}, "included_segments": ["Subscribed Users"]}”
https://onesignal.com/api/v1/notifications
And the addon generates the following code:
async Task SendRequest_onesignalcom_api_v1_notifications()
{
var request = new HTTPRequest(new Uri("https://onesignal.com/api/v1/notifications"), HTTPMethods.Post);
request.AddHeader("Content-Type", "application/json; charset=utf-8");
request.AddHeader("Authorization", "Basic YOUR_REST_API_KEY");
string data = @"{""app_id"": ""YOUR_APP_ID"",
""contents"": {""en"": ""English Message""},
""headings"": {""en"": ""English Title""},
""included_segments"": [""Subscribed Users""]}";
request.RawData = System.Text.Encoding.UTF8.GetBytes(data);
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
try
{
var response = await request.GetHTTPResponseAsync(cancellationTokenSource.Token);
}
catch (AsyncHTTPException ex)
{
Debug.Log("Status Code: " + ex.StatusCode);
Debug.Log("Message: " + ex.Message);
Debug.Log("Content: " + ex.Content);
}
catch (TaskCanceledException)
{
Debug.LogWarning("Request Canceled!");
}
catch (Exception ex)
{
Debug.LogException(ex);
}
finally
{
cancellationTokenSource.Dispose();
}
}