Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge remote branch 'craig/master'

  • Loading branch information...
commit 828ea90d94a5ce05a48c82f3a79153030d1b5914 2 parents 893fba8 + ab62f7e
@lanwin lanwin authored
Showing with 148 additions and 89 deletions.
  1. +1 −1  source/MongoDB.Tests/IntegrationTests/Linq/MongoQueryProviderTests.cs
  2. +8 −0 source/MongoDB.Tests/IntegrationTests/Linq/MongoQueryTests.cs
  3. +3 −0  source/MongoDB/Attributes/MongoAliasAttribute.cs
  4. +18 −1 source/MongoDB/Attributes/MongoDefaultAttribute.cs
  5. +17 −0 source/MongoDB/Attributes/MongoIdAttribute.cs
  6. +3 −3 source/MongoDB/Configuration/Builders/MemberOverridesBuilder.cs
  7. +3 −3 source/MongoDB/Configuration/Mapping/Auto/AutoMapper.cs
  8. +16 −3 source/MongoDB/Configuration/Mapping/Auto/AutoMappingProfile.cs
  9. +2 −2 source/MongoDB/Configuration/Mapping/Auto/IAutoMappingProfile.cs
  10. +3 −3 source/MongoDB/Configuration/Mapping/Auto/MemberOverrides.cs
  11. +3 −3 source/MongoDB/Configuration/Mapping/Auto/OverridableAutoMappingProfile.cs
  12. +3 −3 source/MongoDB/Configuration/Mapping/Model/CollectionMemberMap.cs
  13. +3 −3 source/MongoDB/Configuration/Mapping/Model/DictionaryMemberMap.cs
  14. +6 −8 source/MongoDB/Configuration/Mapping/Model/PersistentMemberMap.cs
  15. +2 −2 source/MongoDB/Linq/MongoQueryProvider.cs
  16. +1 −1  source/MongoDB/Linq/Translators/MongoQueryObjectBuilder.cs
  17. +22 −0 source/MongoDB/Linq/Translators/QueryBinder.cs
  18. +1 −0  source/MongoDB/MongoDB.csproj
  19. +7 −2 source/MongoDB/Serialization/Descriptors/ClassMapPropertyDescriptor.cs
  20. +13 −47 source/MongoDB/Serialization/Descriptors/ClassMapPropertyDescriptorBase.cs
  21. +4 −2 source/MongoDB/Serialization/Descriptors/DocumentClassMapPropertyDescriptor.cs
  22. +9 −2 source/MongoDB/Serialization/Descriptors/ExampleClassMapPropertyDescriptor.cs
View
2  source/MongoDB.Tests/IntegrationTests/Linq/MongoQueryProviderTests.cs
@@ -123,7 +123,7 @@ public void Enum()
Assert.AreEqual(0, queryObject.Fields.Count);
Assert.AreEqual(0, queryObject.NumberToLimit);
Assert.AreEqual(0, queryObject.NumberToSkip);
- Assert.AreEqual(new Document("PrimaryAddress.AddressType", AddressType.Company), queryObject.Query);
+ Assert.AreEqual(new Document("PrimaryAddress.AddressType", (int)AddressType.Company), queryObject.Query);
}
[Test]
View
8 source/MongoDB.Tests/IntegrationTests/Linq/MongoQueryTests.cs
@@ -64,6 +64,14 @@ public override void TestSetup()
}
[Test]
+ public void Any()
+ {
+ var anyone = Collection.Linq().Any(x => x.Age <= 21);
+
+ Assert.IsTrue(anyone);
+ }
+
+ [Test]
public void Boolean()
{
var people = Enumerable.ToList(Collection.Linq().Where(x => x.PrimaryAddress.IsInternational));
View
3  source/MongoDB/Attributes/MongoAliasAttribute.cs
@@ -21,6 +21,9 @@ public sealed class MongoAliasAttribute : Attribute
public MongoAliasAttribute(string name){
if(name == null)
throw new ArgumentNullException("name");
+ if (name == "_id")
+ throw new ArgumentException("_id is a reserved alias.");
+
Name = name;
}
}
View
19 source/MongoDB/Attributes/MongoDefaultAttribute.cs
@@ -8,15 +8,32 @@ namespace MongoDB.Attributes
[AttributeUsage(AttributeTargets.Property)]
public sealed class MongoDefaultAttribute : Attribute
{
+
/// <summary>
/// Initializes a new instance of the <see cref="MongoDefaultAttribute"/> class.
/// </summary>
/// <param name="value">The value.</param>
- public MongoDefaultAttribute(object value){
+ public MongoDefaultAttribute(object value)
+ : this(value, true)
+ { }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MongoDefaultAttribute"/> class.
+ /// </summary>
+ /// <param name="value">The value.</param>
+ public MongoDefaultAttribute(object value, bool persistDefaultValue)
+ {
Value = value;
+ PersistDefaultValue = persistDefaultValue;
}
/// <summary>
+ /// Gets or sets a value indicating whether the default value should be persisted.
+ /// </summary>
+ /// <value><c>true</c> if [persist default value]; otherwise, <c>false</c>.</value>
+ public bool PersistDefaultValue { get; private set; }
+
+ /// <summary>
/// Gets or sets the value.
/// </summary>
/// <value>The value.</value>
View
17 source/MongoDB/Attributes/MongoIdAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace MongoDB.Attributes
+{
+ /// <summary>
+ ///
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Property)]
+ public sealed class MongoIdAttribute : Attribute
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MongoIdAttribute"/> class.
+ /// </summary>
+ public MongoIdAttribute()
+ { }
+ }
+}
View
6 source/MongoDB/Configuration/Builders/MemberOverridesBuilder.cs
@@ -55,12 +55,12 @@ public MemberOverridesBuilder Ignore()
}
/// <summary>
- /// Persists the null.
+ /// Persists the default value.
/// </summary>
/// <returns></returns>
- public MemberOverridesBuilder PersistNull()
+ public MemberOverridesBuilder PersistDefaultValue()
{
- _overrides.PersistIfNull = true;
+ _overrides.PersistDefaultValue = true;
return this;
}
}
View
6 source/MongoDB/Configuration/Mapping/Auto/AutoMapper.cs
@@ -183,7 +183,7 @@ public AutoMapper(Func<Type, bool> filter)
MemberReflectionOptimizer.GetGetter(member),
MemberReflectionOptimizer.GetSetter(member),
_profile.GetAlias(classType, member),
- _profile.GetPersistNull(classType, member),
+ _profile.GetPersistDefaultValue(classType, member),
dictionaryAdapter);
var collectionType = _profile.GetCollectionAdapter(classType, member, memberReturnType);
@@ -194,7 +194,7 @@ public AutoMapper(Func<Type, bool> filter)
MemberReflectionOptimizer.GetGetter(member),
MemberReflectionOptimizer.GetSetter(member),
_profile.GetAlias(classType, member),
- _profile.GetPersistNull(classType, member),
+ _profile.GetPersistDefaultValue(classType, member),
collectionType,
_profile.GetCollectionElementType(classType, member, memberReturnType));
@@ -207,7 +207,7 @@ public AutoMapper(Func<Type, bool> filter)
MemberReflectionOptimizer.GetSetter(member),
_profile.GetDefaultValue(classType, member),
_profile.GetAlias(classType, member),
- _profile.GetPersistNull(classType, member));
+ _profile.GetPersistDefaultValue(classType, member));
}
}
}
View
19 source/MongoDB/Configuration/Mapping/Auto/AutoMappingProfile.cs
@@ -95,7 +95,16 @@ public MemberInfo FindExtendedPropertiesMember(Type classType)
/// <returns></returns>
public MemberInfo FindIdMember(Type classType)
{
- return _conventions.IdConvention.GetIdMember(classType);
+ var members = (from memberInfo in _memberFinder.FindMembers(classType)
+ let att = memberInfo.GetCustomAttribute<MongoIdAttribute>(true)
+ where att != null
+ select memberInfo).ToList();
+
+ if (members.Count > 1)
+ throw new InvalidOperationException("Cannot have more than 1 member marked with a MongoId Attribute.");
+ if(members.Count == 0)
+ return _conventions.IdConvention.GetIdMember(classType);
+ return members[0];
}
/// <summary>
@@ -238,9 +247,13 @@ public object GetIdUnsavedValue(Type classType, MemberInfo member)
/// <param name="classType">Type of the class.</param>
/// <param name="member">The member.</param>
/// <returns></returns>
- public bool GetPersistNull(Type classType, MemberInfo member)
+ public bool GetPersistDefaultValue(Type classType, MemberInfo member)
{
- return false;
+ var att = member.GetCustomAttribute<MongoDefaultAttribute>(true);
+ if (att != null)
+ return att.PersistDefaultValue;
+
+ return true;
}
/// <summary>
View
4 source/MongoDB/Configuration/Mapping/Auto/IAutoMappingProfile.cs
@@ -115,12 +115,12 @@ public interface IAutoMappingProfile
object GetIdUnsavedValue(Type classType, MemberInfo member);
/// <summary>
- /// Gets a value indicating whether the member should be persisted if it is null.
+ /// Gets a value indicating whether the member should be persisted if it is it's default value.
/// </summary>
/// <param name="classType">Type of the class.</param>
/// <param name="member">The member.</param>
/// <returns></returns>
- bool GetPersistNull(Type classType, MemberInfo member);
+ bool GetPersistDefaultValue(Type classType, MemberInfo member);
/// <summary>
/// Indicates whether the class type is a sub class.
View
6 source/MongoDB/Configuration/Mapping/Auto/MemberOverrides.cs
@@ -23,9 +23,9 @@ public class MemberOverrides
public bool? Ignore { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether.
+ /// Gets or sets a value indicating whether a member with the default value gets persisted.
/// </summary>
- /// <value><c>true</c> if [persist if null]; otherwise, <c>false</c>.</value>
- public bool? PersistIfNull { get; set; }
+ /// <value>The persist default value.</value>
+ public bool? PersistDefaultValue { get; set; }
}
}
View
6 source/MongoDB/Configuration/Mapping/Auto/OverridableAutoMappingProfile.cs
@@ -205,13 +205,13 @@ public object GetIdUnsavedValue(Type classType, MemberInfo member)
/// <param name = "classType">Type of the class.</param>
/// <param name = "member">The member.</param>
/// <returns></returns>
- public bool GetPersistNull(Type classType, MemberInfo member)
+ public bool GetPersistDefaultValue(Type classType, MemberInfo member)
{
return (bool)GetMemberOverrideValue(classType,
member,
- o => o.PersistIfNull,
+ o => o.PersistDefaultValue,
v => v.HasValue,
- _profile.GetPersistNull(classType, member));
+ _profile.GetPersistDefaultValue(classType, member));
}
/// <summary>
View
6 source/MongoDB/Configuration/Mapping/Model/CollectionMemberMap.cs
@@ -26,11 +26,11 @@ public class CollectionMemberMap : PersistentMemberMap
/// <param name="getter">The getter.</param>
/// <param name="setter">The setter.</param>
/// <param name="alias">The alias.</param>
- /// <param name="persistNull">if set to <c>true</c> [persist null].</param>
+ /// <param name="persistDefaultValue">if set to <c>true</c> [persist default value].</param>
/// <param name="collectionAdapter">Type of the collection.</param>
/// <param name="elementType">Type of the element.</param>
- public CollectionMemberMap(string memberName, Type memberReturnType, Func<object, object> getter, Action<object, object> setter, string alias, bool persistNull, ICollectionAdapter collectionAdapter, Type elementType)
- : base(memberName, memberReturnType, getter, setter, null, alias, persistNull)
+ public CollectionMemberMap(string memberName, Type memberReturnType, Func<object, object> getter, Action<object, object> setter, string alias, bool persistDefaultValue, ICollectionAdapter collectionAdapter, Type elementType)
+ : base(memberName, memberReturnType, getter, setter, null, alias, persistDefaultValue)
{
_collectionAdapter = collectionAdapter;
ElementType = elementType;
View
6 source/MongoDB/Configuration/Mapping/Model/DictionaryMemberMap.cs
@@ -36,10 +36,10 @@ public Type ValueType
/// <param name="getter">The getter.</param>
/// <param name="setter">The setter.</param>
/// <param name="alias">The alias.</param>
- /// <param name="persistNull">if set to <c>true</c> [persist null].</param>
+ /// <param name="persistDefaultValue">if set to <c>true</c> [persist default value].</param>
/// <param name="dictionaryAdapter">The dictionary adapter.</param>
- public DictionaryMemberMap(string memberName, Func<object, object> getter, Action<object, object> setter, string alias, bool persistNull, IDictionaryAdapter dictionaryAdapter)
- : base(memberName, typeof(Document), getter, setter, null, alias, persistNull)
+ public DictionaryMemberMap(string memberName, Func<object, object> getter, Action<object, object> setter, string alias, bool persistDefaultValue, IDictionaryAdapter dictionaryAdapter)
+ : base(memberName, typeof(Document), getter, setter, null, alias, persistDefaultValue)
{
_dictionaryAdapter = dictionaryAdapter;
}
View
14 source/MongoDB/Configuration/Mapping/Model/PersistentMemberMap.cs
@@ -20,12 +20,10 @@ public class PersistentMemberMap : MemberMapBase
public object DefaultValue { get; private set; }
/// <summary>
- /// Gets a value indicating whether or not null should be persisted to the database.
+ /// Gets or sets a value indicating whether the default value should be persisted.
/// </summary>
- /// <value>
- /// <c>true</c> if the null should be persisted; otherwise, <c>false</c>.
- /// </value>
- public bool PersistNull { get; private set; }
+ /// <value><c>true</c> if the default value should be persisted; otherwise, <c>false</c>.</value>
+ public bool PersistDefaultValue { get; private set; }
/// <summary>
/// Initializes a new instance of the <see cref="PersistentMemberMap"/> class.
@@ -36,13 +34,13 @@ public class PersistentMemberMap : MemberMapBase
/// <param name="setter">The setter.</param>
/// <param name="defaultValue">The default value.</param>
/// <param name="alias">The alias.</param>
- /// <param name="persistNull">if set to <c>true</c> [persist null].</param>
- public PersistentMemberMap(string memberName, Type memberReturnType, Func<object, object> getter, Action<object, object> setter, object defaultValue, string alias, bool persistNull)
+ /// <param name="persistDefaultValue">if set to <c>true</c> [persist default value].</param>
+ public PersistentMemberMap(string memberName, Type memberReturnType, Func<object, object> getter, Action<object, object> setter, object defaultValue, string alias, bool persistDefaultValue)
: base(memberName, memberReturnType, getter, setter)
{
Alias = alias;
DefaultValue = defaultValue;
- PersistNull = persistNull;
+ PersistDefaultValue = persistDefaultValue;
}
}
}
View
4 source/MongoDB/Linq/MongoQueryProvider.cs
@@ -160,7 +160,7 @@ private Expression BuildExecutionPlan(Expression expression)
return new ExecutionBuilder().Build(projection, provider);
}
- private ProjectionExpression Translate(Expression expression)
+ private Expression Translate(Expression expression)
{
var rootQueryable = new RootQueryableFinder().Find(expression);
var elementType = ((IQueryable)((ConstantExpression)rootQueryable).Value).ElementType;
@@ -177,7 +177,7 @@ private ProjectionExpression Translate(Expression expression)
expression = new RedundantFieldRemover().Remove(expression);
expression = new RedundantSubqueryRemover().Remove(expression);
- return (ProjectionExpression)expression;
+ return expression;
}
/// <summary>
View
2  source/MongoDB/Linq/Translators/MongoQueryObjectBuilder.cs
@@ -9,7 +9,7 @@ internal class MongoQueryObjectBuilder : MongoExpressionVisitor
private MongoQueryObject _queryObject;
private QueryAttributes _queryAttributes;
- internal MongoQueryObject Build(ProjectionExpression expression)
+ internal MongoQueryObject Build(Expression expression)
{
_queryObject = new MongoQueryObject();
_queryAttributes = new QueryAttributesGatherer().Gather(expression);
View
22 source/MongoDB/Linq/Translators/QueryBinder.cs
@@ -128,6 +128,11 @@ protected override Expression VisitMethodCall(MethodCallExpression m)
{
switch (m.Method.Name)
{
+ case "Any":
+ if (m.Arguments.Count == 1)
+ return BindAny(m.Arguments[0], null, m == _root);
+ else
+ return BindAny(m.Arguments[0], (LambdaExpression)StripQuotes(m.Arguments[1]), m == _root);
case "Where":
return BindWhere(m.Type, m.Arguments[0], (LambdaExpression)StripQuotes(m.Arguments[1]));
case "Select":
@@ -273,6 +278,23 @@ private Expression BindAggregate(Expression source, MethodInfo method, LambdaExp
return subquery;
}
+ private Expression BindAny(Expression source, LambdaExpression predicate, bool isRoot)
+ {
+ var projection = VisitSequence(source);
+ var sourceType = projection.Projector.Type;
+
+ MethodInfo method = typeof(Queryable)
+ .GetMethods(BindingFlags.Public | BindingFlags.Static)
+ .Where(m => m.Name == "Count")
+ .Single(m => m.GetParameters().Length == (predicate == null ? 1 : 2))
+ .GetGenericMethodDefinition().MakeGenericMethod(sourceType);
+
+ var expression = BindAggregate(source, method, predicate, isRoot);
+
+ return Expression.GreaterThan(
+ expression, Expression.Constant(0));
+ }
+
private Expression BindDistinct(Expression source)
{
var projection = VisitSequence(source);
View
1  source/MongoDB/MongoDB.csproj
@@ -102,6 +102,7 @@
<Compile Include="..\..\AssemblyInfoGlobal.cs">
<Link>AssemblyInfoGlobal.cs</Link>
</Compile>
+ <Compile Include="Attributes\MongoIdAttribute.cs" />
<Compile Include="BinarySubtype.cs" />
<Compile Include="Bson\BsonType.cs" />
<Compile Include="Bson\BsonInfo.cs" />
View
9 source/MongoDB/Serialization/Descriptors/ClassMapPropertyDescriptor.cs
@@ -41,7 +41,12 @@ public override IEnumerable<BsonProperty> GetProperties()
yield return CreateProperty(ClassMap.DiscriminatorAlias, ClassMap.Discriminator.GetType(), ClassMap.Discriminator, false);
foreach (var memberMap in ClassMap.MemberMaps)
- yield return CreateProperty(memberMap.Alias, GetValue(memberMap.MemberName));
+ {
+ var value = GetValue(memberMap.MemberName);
+ if (!memberMap.PersistDefaultValue && object.Equals(memberMap.DefaultValue, value))
+ continue;
+ yield return CreateProperty(memberMap.Alias, value);
+ }
if (_extendedProperties == null)
yield break;
@@ -62,7 +67,7 @@ private BsonPropertyValue GetValue(string name)
object value;
- var memberMap = GetMemberMapFromMemberName(name);
+ var memberMap = GetAliasFromMemberName(name).MemberMap;
if(memberMap != null)
value = memberMap.GetValue(_instance);
else if (_extendedProperties != null)
View
60 source/MongoDB/Serialization/Descriptors/ClassMapPropertyDescriptorBase.cs
@@ -68,47 +68,6 @@ protected BsonProperty CreateProperty(string alias, BsonPropertyValue value)
}
/// <summary>
- /// Gets the member map from the member name.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <returns></returns>
- protected PersistentMemberMap GetMemberMapFromMemberName(string name)
- {
- var memberMap = ClassMap.GetMemberMapFromMemberName(name);
- if (memberMap != null)
- return memberMap;
-
- if (!name.Contains("."))
- return null;
-
- var parts = name.Split('.');
- memberMap = ClassMap.GetMemberMapFromMemberName(parts[0]);
- if (memberMap == null)
- return null;
-
- var currentType = memberMap.MemberReturnType;
- for (var i = 1; i < parts.Length; i++)
- {
- var collectionMemberMap = memberMap as CollectionMemberMap;
- if (collectionMemberMap != null)
- {
- currentType = ((CollectionMemberMap)memberMap).ElementType;
- if (IsNumeric(parts[i])) //we are an array indexer
- continue;
- }
-
- var classMap = _mappingStore.GetClassMap(currentType);
- memberMap = classMap.GetMemberMapFromAlias(parts[i]);
- if (memberMap != null)
- currentType = memberMap.MemberReturnType;
- else
- break;
- }
-
- return memberMap;
- }
-
- /// <summary>
/// Shoulds the persist discriminator.
/// </summary>
/// <returns></returns>
@@ -122,21 +81,21 @@ protected bool ShouldPersistDiscriminator()
/// </summary>
/// <param name="name">The name.</param>
/// <returns></returns>
- protected string GetAliasFromMemberName(string name)
+ protected MemberMapAndAlias GetAliasFromMemberName(string name)
{
var memberMap = ClassMap.GetMemberMapFromMemberName(name);
if (memberMap != null)
- return memberMap.Alias;
+ return new MemberMapAndAlias() { MemberMap = memberMap, Alias = memberMap.Alias };
if (!name.Contains("."))
- return name;
+ return new MemberMapAndAlias() { Alias = name };
var sb = new StringBuilder();
var parts = name.Split('.');
memberMap = ClassMap.GetMemberMapFromMemberName(parts[0]);
if (memberMap == null)
- return name;
+ return new MemberMapAndAlias() { Alias = name };
sb.Append(memberMap.Alias);
var currentType = memberMap.MemberReturnType;
@@ -168,7 +127,7 @@ protected string GetAliasFromMemberName(string name)
}
}
- return sb.ToString();
+ return new MemberMapAndAlias() { MemberMap = memberMap, Alias = sb.ToString() };
}
protected string TranslateJavascript(string code)
@@ -181,8 +140,15 @@ private static bool IsNumeric(IEnumerable<char> str)
return str.All(t => char.IsDigit(t));
}
+ protected class MemberMapAndAlias
+ {
+ public string Alias { get; set; }
+
+ public PersistentMemberMap MemberMap { get; set; }
+ }
+
/// <summary>
- /// This is an extremely rudimentart lexer designed solely for efficiency.
+ /// This is an extremely rudimentary lexer designed solely for efficiency.
/// </summary>
private class JavascriptMemberNameReplacer
{
View
6 source/MongoDB/Serialization/Descriptors/DocumentClassMapPropertyDescriptor.cs
@@ -38,7 +38,9 @@ public override IEnumerable<BsonProperty> GetProperties()
{
var alias = GetAliasFromMemberName(key);
var valueAndType = GetValue(key);
- yield return CreateProperty(alias, valueAndType);
+ if (alias.MemberMap != null && !alias.MemberMap.PersistDefaultValue && object.Equals(alias.MemberMap.DefaultValue, valueAndType.Value))
+ continue;
+ yield return CreateProperty(alias.Alias, valueAndType);
}
}
@@ -60,7 +62,7 @@ private BsonPropertyValue GetValue(string name)
return new BsonPropertyValue(typeof(Code), code, false);
}
- var memberMap = GetMemberMapFromMemberName(name);
+ var memberMap = GetAliasFromMemberName(name).MemberMap;
var type = typeof(Document);
bool isDictionary = false;
View
11 source/MongoDB/Serialization/Descriptors/ExampleClassMapPropertyDescriptor.cs
@@ -38,7 +38,14 @@ public override IEnumerable<BsonProperty> GetProperties()
yield return CreateProperty(ClassMap.DiscriminatorAlias, ClassMap.Discriminator.GetType(), ClassMap.Discriminator, false);
foreach (PropertyInfo propertyInfo in _exampleType.GetProperties())
- yield return CreateProperty(GetAliasFromMemberName(propertyInfo.Name), GetValue(propertyInfo));
+ {
+ var alias = GetAliasFromMemberName(propertyInfo.Name);
+ var value = GetValue(propertyInfo);
+ if (alias.MemberMap != null && !alias.MemberMap.PersistDefaultValue && object.Equals(alias.MemberMap.DefaultValue, value))
+ continue;
+
+ yield return CreateProperty(alias.Alias, value);
+ }
}
/// <summary>
@@ -58,7 +65,7 @@ private BsonPropertyValue GetValue(PropertyInfo propertyInfo)
}
bool isDictionary = false;
- var memberMap = GetMemberMapFromMemberName(propertyInfo.Name);
+ var memberMap = GetAliasFromMemberName(propertyInfo.Name).MemberMap;
if (memberMap != null)
{
if (memberMap is CollectionMemberMap)
Please sign in to comment.
Something went wrong with that request. Please try again.