internal HttpPostDataCollection AppendCredentialsToPostDataCollection(HttpPostDataCollection postDataCollection, CloudFlareCredentials credentials)
        {
            postDataCollection.Add("tkn", credentials.ApiKey);
            postDataCollection.Add("email", credentials.EmailAddress);

            return(postDataCollection);
        }
Example #2
0
        /// <summary>
        /// rec_new
        /// </summary>
        /// <param name="domainName"></param>
        /// <param name="dnsRecordName"></param>
        /// <param name="dnsRecordType"></param>
        /// <param name="dnsRecordContent"></param>
        /// <param name="ttl"></param>
        /// <param name="enableCloudFront"></param>
        /// <returns></returns>
        public CloudFlareApiResponseBase AddDnsRecord(string domainName, string dnsRecordName, DnsRecordType dnsRecordType,
            string dnsRecordContent, int ttl = Constants.AutomaticTtl, bool enableCloudFront = true)
        {
            try
            {
                var postData = new HttpPostDataCollection()
                               	{
                               		{ApiParameter.DomainName, domainName},
                               		{ApiParameter.DnsRecordName, dnsRecordName},
                               		{ApiParameter.DnsRecordType, EnumerationUtility.GetStringValue(dnsRecordType)},
                               		{ApiParameter.DnsRecordContent, dnsRecordContent},
                               		{ApiParameter.Ttl, ttl.ToString()},
                               		{ApiParameter.ServiceMode, enableCloudFront ? "1" : "0"}
                               	};

                var request = CreatePostHttpWebRequest(credentials, ApiAction.AddDnsRecord, postData);

                var response = GetResponse<DnsRecordApiResponse>(request);

                return response;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw;
            }
        }
Example #3
0
        /// <summary>
        /// rec_edit
        /// </summary>
        /// <param name="dnsRecordId"></param>
        /// <param name="domainName"></param>
        /// <param name="dnsRecordName"></param>
        /// <param name="dnsRecordType"></param>
        /// <param name="dnsRecordContent"></param>
        /// <param name="ttl">1 = auto</param>
        /// <param name="enableCloudFront"></param>
        /// <returns></returns>
        public CloudFlareApiResponseBase EditDnsRecord(
            int?dnsRecordId, string domainName, string dnsRecordName, DnsRecordType dnsRecordType,
            string dnsRecordContent, int ttl = Constants.AutomaticTtl, bool enableCloudFront = true)
        {
            try
            {
                if (dnsRecordId == null)
                {
                    dnsRecordId = GetDnsRecordId(domainName, dnsRecordName, dnsRecordType);
                }

                var postData = new HttpPostDataCollection()
                {
                    { ApiParameter.DnsRecordId, dnsRecordId.Value.ToString() },
                    { ApiParameter.DomainName, domainName },
                    { ApiParameter.DnsRecordName, dnsRecordName },
                    { ApiParameter.DnsRecordType, EnumerationUtility.GetStringValue(dnsRecordType) },
                    { ApiParameter.DnsRecordContent, dnsRecordContent },
                    { ApiParameter.Ttl, ttl.ToString() },
                    { ApiParameter.ServiceMode, enableCloudFront ? "1" : "0" }
                };

                var request = CreatePostHttpWebRequest(credentials, ApiAction.EditDnsRecord, postData);

                var response = GetResponse <DnsRecordApiResponse>(request);

                return(response);
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw;
            }
        }
Example #4
0
        /// <summary>
        /// rec_load_all
        /// </summary>
        /// <param name="domainName"></param>
        /// <returns></returns>
        public DnsRecordsApiResponse RetrieveAllDnsRecords(string domainName)
        {
            try
            {
                var postData = new HttpPostDataCollection()
                {
                    { ApiParameter.DomainName, domainName }
                };

                var request = CreatePostHttpWebRequest(credentials, ApiAction.RetrieveDnsRecords, postData);

                var response = GetResponse <DnsRecordsApiResponse>(request);

                if (CachingEnabled && response != null && response.Response != null && response.Response.DnsRecords != null)
                {
                    Cache.DnsRecords = response.Response.DnsRecords.DnsRecordsObject;
                }

                return(response);
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw;
            }
        }
Example #5
0
        /// <summary>
        /// rec_delete
        /// </summary>
        /// <param name="dnsRecordId"></param>
        /// <param name="domainName"></param>
        /// <returns></returns>
        public CloudFlareApiResponseBase DeleteDnsRecord(int dnsRecordId, string domainName)
        {
            try
            {
                var postData = new HttpPostDataCollection()
                {
                    { ApiParameter.DnsRecordId, dnsRecordId.ToString() },
                    { ApiParameter.DomainName, domainName },
                };

                var request = CreatePostHttpWebRequest(credentials, ApiAction.DeleteDnsRecord, postData);

                var response = GetResponse <DnsRecordApiResponse>(request);

                return(response);
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw;
            }
        }
        internal HttpWebRequest CreatePostHttpWebRequest(CloudFlareCredentials credentials, ApiAction action, HttpPostDataCollection postDataCollection)
        {
            var request = (HttpWebRequest)HttpWebRequest.Create(cloudFlareApiUrl);

            request.ContentType = formUrlEndodedContentType;
            request.Method      = WebRequestMethods.Http.Post;

            if (postDataCollection != null && postDataCollection.Count > 0)
            {
                postDataCollection = AppendApiActionToPostDataCollection(postDataCollection, action);
                postDataCollection = AppendCredentialsToPostDataCollection(postDataCollection, credentials);

                var postData       = postDataCollection.ToString();
                var postDataStream = Encoding.UTF8.GetBytes(postData);

                request.ContentLength = postData.Length;

                using (var requestStream = request.GetRequestStream())
                {
                    requestStream.Write(postDataStream, 0, postDataStream.Length);
                }
            }

            return(request);
        }
 internal HttpPostDataCollection AppendApiActionToPostDataCollection(HttpPostDataCollection postDataCollection, ApiAction action)
 {
     postDataCollection.Add("a", EnumerationUtility.GetStringValue(action));
     return(postDataCollection);
 }
Example #8
0
        /// <summary>
        /// rec_delete
        /// </summary>
        /// <param name="dnsRecordId"></param>
        /// <param name="domainName"></param>
        /// <returns></returns>
        public CloudFlareApiResponseBase DeleteDnsRecord(int dnsRecordId, string domainName)
        {
            try
            {
                var postData = new HttpPostDataCollection()
                               	{
                               		{ApiParameter.DnsRecordId, dnsRecordId.ToString()},
                               		{ApiParameter.DomainName, domainName},
                               	};

                var request = CreatePostHttpWebRequest(credentials, ApiAction.DeleteDnsRecord, postData);

                var response = GetResponse<DnsRecordApiResponse>(request);

                return response;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw;
            }
        }
Example #9
0
        /// <summary>
        /// rec_load_all
        /// </summary>
        /// <param name="domainName"></param>
        /// <returns></returns>
        public DnsRecordsApiResponse RetrieveAllDnsRecords(string domainName)
        {
            try
            {
                var postData = new HttpPostDataCollection()
                               	{
                               		{ApiParameter.DomainName, domainName}
                               	};

                var request = CreatePostHttpWebRequest(credentials, ApiAction.RetrieveDnsRecords, postData);

                var response = GetResponse<DnsRecordsApiResponse>(request);

                if (CachingEnabled && response != null && response.Response != null && response.Response.DnsRecords != null)
                    Cache.DnsRecords = response.Response.DnsRecords.DnsRecordsObject;

                return response;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw;
            }
        }