public void TestCreateResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.Created, "{\"sid\": \"ZH00000000000000000000000000000000\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"service_sid\": \"ZS00000000000000000000000000000000\",\"friendly_name\": \"asset-friendly\",\"date_created\": \"2018-11-10T20:00:00Z\",\"date_updated\": \"2018-11-10T20:00:00Z\",\"url\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000\",\"links\": {\"asset_versions\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000/Versions\"}}" )); var response = AssetResource.Create("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "friendlyName", client: twilioRestClient); Assert.NotNull(response); }
public void TestCreateRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Post, Twilio.Rest.Domain.Serverless, "/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets", "" ); request.AddPostParam("FriendlyName", Serialize("friendlyName")); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { AssetResource.Create("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "friendlyName", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
static void Main(string[] args) { // Your Account Sid and Auth Token from twilio.com/console string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID"); string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN"); // Setup Default Twilio Client TwilioClient.Init(accountSid, authToken); // Create string for Basic Auth using RestSharp string upload_auth = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(accountSid + ":" + authToken)); // Create Service // https://www.twilio.com/docs/runtime/functions-assets-api/api/service#create-a-service-resource var service = ServiceResource.Create( includeCredentials: true, uniqueName: "my-new-app", friendlyName: "My New App" ); // Create Environment // https://www.twilio.com/docs/runtime/functions-assets-api/api/environment#create-an-environment-resource var environment = EnvironmentResource.Create( domainSuffix: "stage", uniqueName: "staging", pathServiceSid: service.Sid ); // Create Asset // https://www.twilio.com/docs/runtime/functions-assets-api/api/asset#create-an-asset-resource var asset = AssetResource.Create( friendlyName: "friendly_name", pathServiceSid: service.Sid ); // Create Asset Verion const string remote_path = "/mypath"; const string remote_visibility = "Public"; const string asset_file = "hello.txt"; const string asset_type = "text/plain"; string asset_path = Path.Combine("assets", asset_file); string url = $"https://serverless-upload.twilio.com/v1/Services/{service.Sid}/Assets/{asset.Sid}/Versions"; var client = new RestClient(url); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Authorization", upload_auth); request.AddFile("Content", asset_path, asset_type); request.AddParameter("Path", remote_path); request.AddParameter("Visibility", remote_visibility); IRestResponse response = client.Execute(request); var obj = JsonConvert.DeserializeObject <dynamic>(response.Content); List <string> asset_versions = new List <string>() { obj.sid.ToString() }; // Create a Build // https://www.twilio.com/docs/runtime/functions-assets-api/api/build#create-a-build-resource var build = BuildResource.Create( assetVersions: asset_versions, pathServiceSid: service.Sid ); Console.WriteLine("Sleep for 10 seconds."); Thread.Sleep(10000); // Create a Deployment // https://www.twilio.com/docs/runtime/functions-assets-api/api/deployment var deployment = DeploymentResource.Create( buildSid: build.Sid, pathServiceSid: service.Sid, pathEnvironmentSid: environment.Sid ); // Show URL Console.Write($"http://{environment.DomainName}{remote_path}"); }