Beispiel #1
0
        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\": \"ZB00000000000000000000000000000000\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"service_sid\": \"ZS00000000000000000000000000000000\",\"asset_versions\": [{\"sid\": \"ZN00000000000000000000000000000000\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"service_sid\": \"ZS00000000000000000000000000000000\",\"asset_sid\": \"ZH00000000000000000000000000000000\",\"date_created\": \"2018-11-10T20:00:00Z\",\"path\": \"/asset-path\",\"visibility\": \"PUBLIC\"}],\"function_versions\": [{\"sid\": \"ZN00000000000000000000000000000001\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"service_sid\": \"ZS00000000000000000000000000000000\",\"function_sid\": \"ZH00000000000000000000000000000001\",\"date_created\": \"2018-11-10T20:00:00Z\",\"path\": \"/function-path\",\"visibility\": \"PUBLIC\"}],\"dependencies\": [{\"name\": \"twilio\",\"version\": \"3.29.2\"},{\"name\": \"@twilio/runtime-handler\",\"version\": \"1.0.1\"}],\"runtime\": \"node10\",\"status\": \"building\",\"date_created\": \"2018-11-10T20:00:00Z\",\"date_updated\": \"2018-11-10T20:00:00Z\",\"url\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Builds/ZB00000000000000000000000000000000\",\"links\": {\"build_status\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Builds/ZB00000000000000000000000000000000/Status\"}}"
                         ));

            var response = BuildResource.Create("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
Beispiel #2
0
        public void TestCreateRequest()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();
            var request          = new Request(
                HttpMethod.Post,
                Twilio.Rest.Domain.Serverless,
                "/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Builds",
                ""
                );

            twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content"));

            try
            {
                BuildResource.Create("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 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}");
        }