/// <summary> /// Initializes a new instance of the <see cref="T:FuelSDK.GetReturn"/> class. /// </summary> /// <param name="objs">Objects.</param> /// <param name="continueRequest">If set to <c>true</c> continue request.</param> /// <param name="overrideObjectType">Override object type.</param> public GetReturn(APIObject objs, bool continueRequest, string overrideObjectType) { if (objs == null) { throw new ArgumentNullException("objs"); } var response = ExecuteAPI(x => { var rr = new RetrieveRequest(); // Handle RetrieveAllSinceLastBatch if (x.GetType().GetProperty("GetSinceLastBatch") != null) { rr.RetrieveAllSinceLastBatch = (bool)x.GetType().GetProperty("GetSinceLastBatch").GetValue(x, null); } if (continueRequest) { if (x.LastRequestID == null) { throw new Exception("Unable to call GetMoreResults without first making successful Get() request"); } rr.ContinueRequest = x.LastRequestID; } else { if (x.SearchFilter != null) { rr.Filter = x.SearchFilter; } // Use the name from the object passed in unless an override is passed (Used for DataExtensionObject) if (string.IsNullOrEmpty(overrideObjectType)) { if (x.GetType().ToString().Contains("ET_")) { rr.ObjectType = TranslateObject2(x).GetType().ToString().Replace("FuelSDK.", string.Empty); } else { rr.ObjectType = TranslateObject(x).GetType().ToString().Replace("FuelSDK.", string.Empty); } } else { rr.ObjectType = overrideObjectType; } // If they didn't specify Props then we look them up using Info() if (x.Props == null && x.GetType().GetMethod("Info") != null) { var ir = new InfoReturn(x); if (!ir.Status) { throw new Exception("Unable to find properties for object in order to perform Get() request"); } rr.Properties = ir.Results.Where(y => y.IsRetrievable).Select(y => y.Name).ToArray(); } else { rr.Properties = x.Props; } } return(rr); }, (client, o) => { var retrieveRequest = new RetrieveRequest1(o[0]); var retrieveResponse = client.SoapClient.RetrieveAsync(retrieveRequest).Result; return(new ExecuteAPIResponse <APIObject>(retrieveResponse.Results, retrieveResponse.RequestID, retrieveResponse.OverallStatus) { OverallStatusMessage = retrieveResponse.OverallStatus }); }, objs); if (response != null) { if (response.Length > 0) { if (objs.GetType().ToString().Contains("ET_")) { Results = response.Select(TranslateObject2).ToArray(); } else { Results = response.Select(TranslateObject).ToArray(); } } else { Results = new APIObject[0]; } } }
public GetReturn(APIObject theObject, Boolean Continue, String OverrideObjectType) { string OverallStatus = string.Empty, RequestID = string.Empty; APIObject[] objectResults = new APIObject[0]; theObject.AuthStub.refreshToken(); this.Results = new APIObject[0]; using (var scope = new OperationContextScope(theObject.AuthStub.soapclient.InnerChannel)) { //Add oAuth token to SOAP header. XNamespace ns = "http://exacttarget.com"; var oauthElement = new XElement(ns + "oAuthToken", theObject.AuthStub.internalAuthToken); var xmlHeader = MessageHeader.CreateHeader("oAuth", "http://exacttarget.com", oauthElement); OperationContext.Current.OutgoingMessageHeaders.Add(xmlHeader); var httpRequest = new System.ServiceModel.Channels.HttpRequestMessageProperty(); OperationContext.Current.OutgoingMessageProperties.Add(System.ServiceModel.Channels.HttpRequestMessageProperty.Name, httpRequest); httpRequest.Headers.Add(HttpRequestHeader.UserAgent, theObject.AuthStub.SDKVersion); RetrieveRequest rr = new RetrieveRequest(); if (Continue) { if (theObject.LastRequestID == null) { throw new Exception("Unable to call GetMoreResults without first making successful Get() request"); } rr.ContinueRequest = theObject.LastRequestID; } else { if (theObject.SearchFilter != null) { rr.Filter = theObject.SearchFilter; } // Use the name from the object passed in unless an override is passed (Used for DataExtensionObject) if (OverrideObjectType == null) rr.ObjectType = this.TranslateObject(theObject).GetType().ToString().Replace("FuelSDK.", ""); else rr.ObjectType = OverrideObjectType; //If they didn't specify Props then we look them up using Info() if (theObject.Props == null && theObject.GetType().GetMethod("Info") != null) { InfoReturn ir = new InfoReturn(theObject); List<string> lProps = new List<string>(); if (ir.Status) { foreach (ET_PropertyDefinition pd in ir.Results) { if (pd.IsRetrievable) lProps.Add(pd.Name); } } else { throw new Exception("Unable to find properties for object in order to perform Get() request"); } rr.Properties = lProps.ToArray(); } else rr.Properties = theObject.Props; } OverallStatus = theObject.AuthStub.soapclient.Retrieve(rr, out RequestID, out objectResults); this.RequestID = RequestID; if (objectResults.Length > 0) { List<APIObject> cleanedObjectResults = new List<APIObject>(); foreach (APIObject obj in objectResults) { cleanedObjectResults.Add(this.TranslateObject(obj)); } this.Results = cleanedObjectResults.ToArray(); } this.Status = true; this.Code = 200; this.MoreResults = false; this.Message = ""; if (OverallStatus != "OK" && OverallStatus != "MoreDataAvailable") { this.Status = false; this.Message = OverallStatus; } else if (OverallStatus == "MoreDataAvailable") { this.MoreResults = true; } } }