Пример #1
1
        private static void AddCallOptions(CallOptions options, RestRequest request)
        {
            request.AddParameter("From", options.From);
            request.AddParameter("To", options.To);

            if (options.ApplicationSid.HasValue())
            {
                request.AddParameter("ApplicationSid", options.ApplicationSid);
            }
            else
            {
                request.AddParameter("Url", options.Url);
            }

            if (options.StatusCallback.HasValue()) request.AddParameter("StatusCallback", options.StatusCallback);
            if (options.StatusCallbackMethod.HasValue()) request.AddParameter("StatusCallbackMethod", options.StatusCallbackMethod);
            if (options.FallbackUrl.HasValue()) request.AddParameter("FallbackUrl", options.FallbackUrl);
            if (options.FallbackMethod.HasValue()) request.AddParameter("FallbackMethod", options.FallbackMethod);
            if (options.Method.HasValue()) request.AddParameter("Method", options.Method);
            if (options.SendDigits.HasValue()) request.AddParameter("SendDigits", options.SendDigits);
            if (options.IfMachine.HasValue()) request.AddParameter("IfMachine", options.IfMachine);
            if (options.Timeout.HasValue) request.AddParameter("Timeout", options.Timeout.Value);
            if (options.Record) request.AddParameter("Record", "true");
            if (options.SipAuthUsername.HasValue()) request.AddParameter("SipAuthUsername", options.SipAuthUsername);
            if (options.SipAuthPassword.HasValue()) request.AddParameter("SipAuthPassword", options.SipAuthPassword);
        }
Пример #2
0
        public virtual async Task<VoiceCountryResult> ListVoiceCountriesAsync()
        {
            var request = new RestRequest(Method.GET);
            request.Resource = "Voice/Countries";

            return await Execute<VoiceCountryResult>(request);
        }
Пример #3
0
        /// <summary>
        /// Create a new application
        /// </summary>
        /// <param name="friendlyName">The friendly name to name the application</param>
        /// <param name="options">Optional parameters to use when purchasing number</param>
        /// <param name="callback">Method to call upon successful completion</param>
        public virtual void AddApplication(string friendlyName, ApplicationOptions options, Action<Application> callback)
        {
            var request = new RestRequest(Method.POST);
            request.Resource = "Accounts/{AccountSid}/Applications.json";
            
            Require.Argument("FriendlyName", friendlyName);
            Validate.IsValidLength(friendlyName, 64);
            request.AddParameter("FriendlyName", friendlyName);

            // some check for null. in those cases an empty string is a valid value (to remove a URL assignment)
            if (options != null)
            {
                if (options.VoiceUrl != null) request.AddParameter("VoiceUrl", options.VoiceUrl);
                if (options.VoiceMethod.HasValue()) request.AddParameter("VoiceMethod", options.VoiceMethod.ToString());
                if (options.VoiceFallbackUrl != null) request.AddParameter("VoiceFallbackUrl", options.VoiceFallbackUrl);
                if (options.VoiceFallbackMethod.HasValue()) request.AddParameter("VoiceFallbackMethod", options.VoiceFallbackMethod.ToString());
                if (options.VoiceCallerIdLookup.HasValue) request.AddParameter("VoiceCallerIdLookup", options.VoiceCallerIdLookup.Value);
                if (options.StatusCallback.HasValue()) request.AddParameter("StatusCallback", options.StatusCallback);
                if (options.StatusCallbackMethod.HasValue()) request.AddParameter("StatusCallbackMethod", options.StatusCallbackMethod.ToString());
                if (options.SmsUrl != null) request.AddParameter("SmsUrl", options.SmsUrl);
                if (options.SmsMethod.HasValue()) request.AddParameter("SmsMethod", options.SmsMethod.ToString());
                if (options.SmsFallbackUrl != null) request.AddParameter("SmsFallbackUrl", options.SmsFallbackUrl);
                if (options.SmsFallbackMethod.HasValue()) request.AddParameter("SmsFallbackMethod", options.SmsFallbackMethod.ToString());
            }

            ExecuteAsync<Application>(request, (response) => { callback(response); });
        }
Пример #4
0
 /// <summary>
 /// Returns a filtered list of Messages. The list includes paging information.
 /// Makes a GET request to the Messages List resource.
 /// </summary>
 /// <param name="options">The list filters for the request</param>
 public virtual async Task<MessageResult> ListMessagesAsync(MessageListRequest options) 
 {
     var request = new RestRequest();
     request.Resource = "Accounts/{AccountSid}/Messages.json";
     AddMessageListOptions(options, request);
     return await Execute<MessageResult>(request);
 }
Пример #5
0
		/// <summary>
		/// Returns the Sandbox resource associated with the account identified by {YourAccountSid}. 
		/// Twilio accounts upgraded prior to February 2010 may not have a Sandbox resource, and in this case you will receive a 404 (Not Found) response.
		/// Makes a GET request to the Sandbox Instance resource.
		/// </summary>
        public virtual Sandbox GetSandbox()
		{
			var request = new RestRequest();
			request.Resource = "Accounts/{AccountSid}/Sandbox.json";

			return Execute<Sandbox>(request);
		}
Пример #6
0
		/// <summary>
		/// List all subaccounts created for the authenticated account. Makes a GET request to the Account List resource.
		/// </summary>
        public virtual AccountResult ListSubAccounts()
		{
			var request = new RestRequest();
			request.Resource = "Accounts.json";

			return Execute<AccountResult>(request);
		}
Пример #7
0
        public virtual void ListVoiceCountries(Action<VoiceCountryResult> callback)
        {
            var request = new RestRequest(Method.GET);
            request.Resource = "Voice/Countries";

            ExecuteAsync<VoiceCountryResult>(request, (response) => callback(response));
        }
Пример #8
0
 /// <summary>
 /// Retrieve the account details for the currently authenticated account. Makes a GET request to an Account Instance resource.
 /// </summary>
 public virtual async Task<Account> GetAccountAsync()
 {
     var request = new RestRequest();
     request.Resource = "Accounts/{AccountSid}.json";
     
     return await Execute<Account>(request);
 }
Пример #9
0
        public virtual PhoneNumberCountryResult ListPhoneNumberCountries()
        {
            var request = new RestRequest(Method.GET);
            request.Resource = "PhoneNumbers/Countries";

            return Execute<PhoneNumberCountryResult>(request);
        }
Пример #10
0
        public virtual async Task<PhoneNumberCountryResult> ListPhoneNumberCountriesAsync()
        {
            var request = new RestRequest(Method.GET);
            request.Resource = "PhoneNumbers/Countries";

            return await Execute<PhoneNumberCountryResult>(request);
        }
Пример #11
0
        /// <summary>
        /// Returns the Sandbox resource associated with the account identified by {YourAccountSid}. Twilio accounts upgraded prior to February 2010 may not have a Sandbox resource, and in this case you will receive a 404 (Not Found) response.
        /// </summary>
        /// <param name="callback">Method to call upon successful completion</param>
        public virtual void GetSandbox(Action<Sandbox> callback)
        {
            var request = new RestRequest();
            request.Resource = "Accounts/{AccountSid}/Sandbox.json";

            ExecuteAsync<Sandbox>(request, callback);
        }
Пример #12
0
        /// <summary>
        /// Return a list of all Queue resources
        /// </summary>
        /// <param name="callback">Method to call upon successful completion</param>
        /// <returns></returns>
        public virtual void ListQueues(Action<QueueResult> callback)
        {
            var request = new RestRequest();
            request.Resource = "Accounts/{AccountSid}/Queues.json";

            ExecuteAsync<QueueResult>(request, (response) => callback(response) );
        }
Пример #13
0
        /// <summary>
        /// Return a list of all Queue resources
        /// </summary>
        /// <returns></returns>
        public virtual QueueResult ListQueues()
        {
            var request = new RestRequest();
            request.Resource = "Accounts/{AccountSid}/Queues.json";

            return Execute<QueueResult>(request);
        }
Пример #14
0
        /// <summary>
        /// Returns the Sandbox resource associated with the account identified by {YourAccountSid}. 
        /// Twilio accounts upgraded prior to February 2010 may not have a Sandbox resource, and in this case you will receive a 404 (Not Found) response.
        /// Makes a GET request to the Sandbox Instance resource.
        /// </summary>
        public virtual async Task<Sandbox> GetSandboxAsync()
        {
            var request = new RestRequest();
            request.Resource = "Accounts/{AccountSid}/Sandbox.json";

            return await Execute<Sandbox>(request);
        }
Пример #15
0
 /// <summary>
 /// Retrieve the account details for the currently authenticated account
 /// </summary>
 /// <param name="callback">Method to call upon successful completion</param>
 public virtual void GetAccount(Action<Account> callback)
 {
     var request = new RestRequest();
     request.Resource = "Accounts/{AccountSid}.json";
     
     ExecuteAsync<Account>(request, (response) => { callback(response); });
 }
Пример #16
0
        /// <summary>
        /// Returns a paged list of phone calls made to and from the account.
        /// Makes a GET request to the Calls List resource.
        /// </summary>
        public virtual async Task<CallResult> ListCallsAsync()
        {
            var request = new RestRequest();
            request.Resource = "Accounts/{AccountSid}/Calls.json";

            return await Execute<CallResult>(request);
        }
Пример #17
0
        /// <summary>
        /// List all subaccounts created for the authenticated account
        /// </summary>
        /// <param name="callback">Method to call upon successful completion</param>
        public virtual void ListSubAccounts(Action<AccountResult> callback)
        {
            var request = new RestRequest();
            request.Resource = "Accounts.json";

            ExecuteAsync<AccountResult>(request, (response) => { callback(response); });
        }
Пример #18
0
        /// <summary>
        /// List all subaccounts created for the authenticated account. Makes a GET request to the Account List resource.
        /// </summary>
        public virtual async Task<AccountResult> ListSubAccountsAsync()
        {
            var request = new RestRequest();
            request.Resource = "Accounts.json";

            return await Execute<AccountResult>(request);
        }
Пример #19
0
        public void When_Request_Method_Is_POST_Then_Request_Body_Contains_Encoded_Parameters()
        {
            string body = "Foo=12345&Bar=abcde";
            var sourcebytes = Encoding.UTF8.GetBytes(body);

            client = new RestClient();
            client.BaseUrl = BASE_URL;

            var request = new RestRequest();
            request.Method = "POST";
            request.AddParameter("Foo", "12345");
            request.AddParameter("Bar", "abcde");

            var wrapper = new HttpWebRequestWrapper();
            wrapper.Request = new FakeHttpWebRequest();
            var webrequest = (FakeHttpWebRequest)wrapper.ConfigureRequest(client, request);

            var stream = webrequest.GetRequestStream();
            stream.Position = 0;
            byte[] actualbytes = stream.ReadAsBytes();

            Assert.AreEqual(sourcebytes.Length, webrequest.ContentLength);
            Assert.AreEqual(sourcebytes.Length, actualbytes.Length);
            CollectionAssert.AreEquivalent(sourcebytes, actualbytes);            
        }
Пример #20
0
		/// <summary>
		/// Retrieve the account details for the currently authenticated account. Makes a GET request to an Account Instance resource.
		/// </summary>
        public virtual Account GetAccount()
		{
			var request = new RestRequest();
			request.Resource = "Accounts/{AccountSid}.json";
			
			return Execute<Account>(request);
		}
Пример #21
0
		/// <summary>
		/// Returns a list of conferences within an account. 
		/// The list includes paging information.
		/// Makes a GET request to the Conferences List resource.
		/// </summary>
        public virtual ConferenceResult ListConferences()
		{
			var request = new RestRequest();
			request.Resource = "Accounts/{AccountSid}/Conferences.json";

			return Execute<ConferenceResult>(request);
		}
Пример #22
0
        /// <summary>
        /// Returns a paged list of phone calls made to and from the account.
        /// Makes a GET request to the Calls List resource.
        /// </summary>
        public virtual CallResult ListCalls()
        {
            var request = new RestRequest();
            request.Resource = "Accounts/{AccountSid}/Calls.json";

            return Execute<CallResult>(request);
        }
Пример #23
0
        /// <summary>
        /// Create a new Address.
        /// </summary>
        /// <param name="friendlyName">Friendly name (optional)</param>
        /// <param name="customerName">Customer name.</param>
        /// <param name="street">Street.</param>
        /// <param name="city">City.</param>
        /// <param name="region">Region.</param>
        /// <param name="postalCode">Postal code.</param>
        /// <param name="isoCountry">Iso country.</param>
        /// <param name="callback">Method to call upon successful completion.</param>
        public virtual void AddAddress(string friendlyName, string customerName, string street, string city, string region, string postalCode, string isoCountry, Action<Address> callback)
        {
            var request = new RestRequest(Method.POST);
            request.Resource = "Accounts/{AccountSid}/Addresses.json";

            Require.Argument("CustomerName", customerName);
            Require.Argument("Street", street);
            Require.Argument("City", city);
            Require.Argument("Region", region);
            Require.Argument("PostalCode", postalCode);
            Require.Argument("IsoCountry", isoCountry);

            if (friendlyName.HasValue())
            {
                Validate.IsValidLength(friendlyName, 64);
                request.AddParameter("FriendlyName", friendlyName);
            }

            request.AddParameter("CustomerName", customerName);
            request.AddParameter("Street", street);
            request.AddParameter("City", city);
            request.AddParameter("Region", region);
            request.AddParameter("PostalCode", postalCode);
            request.AddParameter("IsoCountry", isoCountry);

            ExecuteAsync<Address>(request, (response) =>
            {
                callback(response);
            });
        }
Пример #24
0
 private void AddEventListOptions(EventListRequest options, RestRequest request)
 {
     if (options.StartDate.HasValue) {
         request.AddParameter("StartDate", options.StartDate.Value.ToString("yyyy-MM-ddTHH:mm:ssK"));
     }
     if (options.EndDate.HasValue) {
         request.AddParameter("EndDate", options.EndDate.Value.ToString("yyyy-MM-ddTHH:mm:ssK"));
     }
     if (options.ActorSid.HasValue()) {
         request.AddParameter("ActorSid", options.ActorSid);
     }
     if (options.SourceIpAddress.HasValue()) {
         request.AddParameter("SourceIpAddress", options.SourceIpAddress);
     }
     if (options.ResourceSid.HasValue()) {
         request.AddParameter("ResourceSid", options.ResourceSid);
     }
     if (options.EventType.HasValue()) {
         request.AddParameter("EventType", options.EventType);
     }
     if (options.PageToken.HasValue()) {
         request.AddParameter("PageToken", options.PageToken);
     }
     if (options.Count.HasValue) {
         request.AddParameter("PageSize", options.Count.Value);
     }
 }
Пример #25
0
        /// <summary>
        /// Create a new Address.
        /// </summary>
        /// <returns>The address.</returns>
        /// <param name="friendlyName">Friendly name (optional)</param>
        /// <param name="customerName">Customer name</param>
        /// <param name="street">Number and street of the address</param>
        /// <param name="city">City name for the address</param>
        /// <param name="region">The state or region</param>
        /// <param name="postalCode">Postal code</param>
        /// <param name="isoCountry">ISO 3166-1 2-letter country code</param>
        public virtual async Task<Address> AddAddressAsync(string friendlyName, string customerName, string street, string city, string region, string postalCode, string isoCountry)
        {
            var request = new RestRequest(Method.POST);
            request.Resource = "Accounts/{AccountSid}/Addresses.json";

            Require.Argument("CustomerName", customerName);
            Require.Argument("Street", street);
            Require.Argument("City", city);
            Require.Argument("Region", region);
            Require.Argument("PostalCode", postalCode);
            Require.Argument("IsoCountry", isoCountry);

            if (friendlyName.HasValue())
            {
                Validate.IsValidLength(friendlyName, 64);
                request.AddParameter("FriendlyName", friendlyName);
            }

            request.AddParameter("CustomerName", customerName);
            request.AddParameter("Street", street);
            request.AddParameter("City", city);
            request.AddParameter("Region", region);
            request.AddParameter("PostalCode", postalCode);
            request.AddParameter("IsoCountry", isoCountry);

            return await Execute<Address>(request);
        }
Пример #26
0
        public virtual VoiceCountryResult ListVoiceCountries()
        {
            var request = new RestRequest("GET");
            request.Resource = "Voice/Countries";

            return Execute<VoiceCountryResult>(request);
        }
Пример #27
0
 /// <summary>
 /// Returns a filtered list of Messages. The list includes paging information.
 /// Makes a GET request to the Messages List resource.
 /// </summary>
 /// <param name="options">The list filters for the request</param>
 /// <param name="callback"></param>
 public virtual void ListMessages(MessageListRequest options, Action<MessageResult> callback)
 {
     var request = new RestRequest();
     request.Resource = "Accounts/{AccountSid}/Messages.json";
     AddMessageListOptions(options, request);
     ExecuteAsync<MessageResult>(request, (response) => callback(response));
 }
Пример #28
0
        /// <summary>
        /// Retrieve a list of countries where Twilio hosted Phone Numbers
        /// are available.
        /// </summary>
        /// <param name="callback">Callback to handle response.</param>
        public virtual void ListPhoneNumberCountries(Action<PhoneNumberCountryResult> callback)
        {
            var request = new RestRequest(Method.GET);
            request.Resource = "PhoneNumbers/Countries";

            ExecuteAsync<PhoneNumberCountryResult>(request, (response) => callback(response));
        }
Пример #29
0
 /// <summary>
 /// List all media for a particular message
 /// </summary>
 /// <param name="messageSid">The message sid to filter on</param>
 /// <param name="options"></param>
 /// <param name="callback"></param>
 public virtual void ListMessageMedia(string messageSid, MediaListRequest options, Action<MediaResult> callback)
 {
     var request = new RestRequest();
     request.Resource = "Accounts/{AccountSid}/Messages/{MessageSid}/Media.json";
     request.AddUrlSegment("MessageSid", messageSid);
     AddMediaListOptions(options, request);
     ExecuteAsync<MediaResult>(request, (response) => callback(response));
 }
Пример #30
0
 /// <summary>
 /// Get the details for a specific Media instance.
 /// </summary>
 public virtual void GetMessageMedia(string messageSid, string mediaSid, Action<Media> callback)
 {
     var request = new RestRequest();
     request.Resource = "Accounts/{AccountSid}/Messages/{MessageSid}/Media/{MediaSid}.json";
     request.AddUrlSegment("MediaSid", mediaSid);
     request.AddUrlSegment("MessageSid", messageSid);
     ExecuteAsync<Media>(request, (response) => callback(response));
 }