/// <summary> /// Creates a MwsCall and sends the request. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="type"></param> /// <param name="requestData"></param> /// <returns></returns> public T Call <T>( IMwsRequestType <T> type, IMwsObject requestData) where T : IMwsObject { try { var servicePath = type.ServicePath; var operationName = type.OperationName; var mc = NewCall(servicePath, operationName); requestData.WriteFragmentTo(mc); var responseReader = mc.Invoke(); var rhmd = mc.GetResponseMetadataHeader(); var response = MwsUtil.NewInstance <T>(); type.SetResponseHeaderMetadata(response, rhmd); response.ReadFragmentFrom(responseReader); return(response); } catch (Exception e) { throw type.WrapException(e); } }
private void PutValue(object value) { if (value == null) { return; } if (value is IMwsObject) { _parameterPrefix.Append('.'); (value as IMwsObject).WriteFragmentTo(this); return; } var name = _parameterPrefix.ToString(); if (value is DateTime) { _parameters.Add(name, MwsUtil.GetFormattedTimestamp((DateTime)value)); return; } var valueStr = value.ToString(); if (valueStr == null || valueStr.Length == 0) { return; } if (value is bool) { valueStr = valueStr.ToLower(); } _parameters.Add(name, valueStr); }