Created
June 9, 2015 15:19
-
-
Save joshmarlow/3b3d49b698c7a47889d8 to your computer and use it in GitHub Desktop.
Ambition API - C# Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* upload_to_ambition.cs | |
* Simple program demonstrating how to upload data to the Ambition Data API | |
* | |
* This code needs to be linked to the System.Web.Extensions assembly. | |
* | |
* For mono, use 'gmcs ambition_api_c#_example.cs -r:System.Web.Extensions' | |
*/ | |
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Net; | |
using System.Web.Script.Serialization; | |
namespace Pusher | |
{ | |
class MainClass | |
{ | |
public static void Main (string[] args) | |
{ | |
if (args.Length < 1) { | |
Console.WriteLine("usage: upload_to_ambition.exe <FILENAME>"); | |
return; | |
} | |
string filename = args [0]; | |
if (! File.Exists(filename)) { | |
Console.WriteLine("File '{0}' cannot be found", filename); | |
} | |
string authToken = <AUTH-TOKEN>; | |
string endpoint = "https://<SUBDOMAIN>.ambition.com/public-api/integration/v1/data/new/"; | |
Dictionary<String, Object> uploadPayload = buildUploadPayload(filename); | |
try { | |
Console.WriteLine(UploadData(endpoint, uploadPayload, authToken)); | |
} catch (Exception e) { | |
Console.WriteLine("Failed to upload"); | |
Console.WriteLine(e); | |
} | |
} | |
public static string UploadData (string endpoint, Dictionary<String, Object> payload, string authToken) | |
{ | |
// Prepare web request... | |
var jsonSerializer = new JavaScriptSerializer(); | |
String data = jsonSerializer.Serialize(payload); | |
using (WebClient client = new WebClient()) { | |
client.Headers.Add("Authorization", String.Format("Token {0}", authToken)); | |
client.Headers.Add("Content-Type", "application/json"); | |
Console.WriteLine(String.Format("Uploading data '{0}'", data)); | |
return client.UploadString(endpoint, "POST", data); | |
} | |
} | |
public static Dictionary<String, Object> buildUploadPayload(string filename) | |
{ | |
Dictionary<String, Object> payload = new Dictionary<String, Object>(); | |
string fileContent = File.ReadAllText(filename); | |
payload.Add("depot", "custom_depot"); | |
payload.Add("data", fileContent); | |
return payload; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment