public static IDictionary <string, SalesforceDataType> GetFieldsFromReport(QvxConnection connection, string reportID) { IDictionary <string, string> connectionParams = GetParamsFromConnection(connection); if (connectionParams == null) { return(new Dictionary <string, SalesforceDataType>()); } return(ValidateAccessTokenAndPerformRequest(connection, connectionParams, accessToken => { Uri hostUri = new Uri(connectionParams[QvxSalesforceConnectionInfo.CONNECTION_HOST]); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(hostUri, "/services/data/" + QvxSalesforceConnectionInfo.SALESFORCE_API_VERSION + "/analytics/reports/" + reportID + "/describe")); request.Method = "GET"; WebHeaderCollection headers = new WebHeaderCollection(); headers.Add("Authorization", "Bearer " + accessToken); request.Headers = headers; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); string responseString = reader.ReadToEnd(); JObject jsonResponse = JObject.Parse(responseString); JToken columnArray = jsonResponse["reportExtendedMetadata"]["detailColumnInfo"]; IDictionary <string, SalesforceDataType> columns = columnArray.ToDictionary(c => c.First["label"].Value <string>(), t => { SalesforceDataType columnType = SalesforceDataType.String; switch (t.First["dataType"].Value <string>()) { case "string": columnType = SalesforceDataType.String; break; case "int": columnType = SalesforceDataType.Integer; break; case "double": columnType = SalesforceDataType.Double; break; case "boolean": columnType = SalesforceDataType.Boolean; break; case "percent": columnType = SalesforceDataType.Percent; break; case "date": columnType = SalesforceDataType.Date; break; case "datetime": columnType = SalesforceDataType.DateTime; break; case "currency": columnType = SalesforceDataType.Currency; break; } return columnType; }); return columns; } } })); }
public void SetFieldValue(int index, QvxField field, SalesforceDataType attribType) { Fields[index] = field; FieldTypes[index] = attribType; }