internal HttpPostDataCollection AppendCredentialsToPostDataCollection(HttpPostDataCollection postDataCollection, CloudFlareCredentials credentials) { postDataCollection.Add("tkn", credentials.ApiKey); postDataCollection.Add("email", credentials.EmailAddress); return(postDataCollection); }
/// <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; } }
/// <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; } }
/// <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; } }
/// <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); }
/// <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; } }
/// <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; } }