public WebConfiguration(
     string serverUri = null,
     string basePath = null,
     WebOauth2RouteConfiguration oauth2Route = null,
     WebCookieConfiguration accessTokenCookie = null,
     WebCookieConfiguration refreshTokenCookie = null,
     IList<string> produces = null,
     WebRegisterRouteConfiguration registerRoute = null,
     WebVerifyEmailRouteConfiguration verifyRoute = null,
     WebLoginRouteConfiguration loginRoute = null,
     WebLogoutRouteConfiguration logoutRoute = null,
     WebForgotPasswordRouteConfiguration forgotPasswordRoute = null,
     WebChangePasswordRouteConfiguration changePasswordRoute = null,
     WebIdSiteConfiguration idSite = null,
     WebCallbackRouteConfiguration callbackRoute = null,
     IDictionary<string, WebSocialProviderConfiguration> social = null,
     WebMeRouteConfiguration meRoute = null)
 {
     this.ServerUri = serverUri ?? Default.Configuration.Web.ServerUri;
     this.BasePath = basePath ?? Default.Configuration.Web.BasePath;
     this.Oauth2 = new WebOauth2RouteConfiguration(oauth2Route ?? Default.Configuration.Web.Oauth2);
     this.AccessTokenCookie = new WebCookieConfiguration(accessTokenCookie ?? Default.Configuration.Web.AccessTokenCookie);
     this.RefreshTokenCookie = new WebCookieConfiguration(refreshTokenCookie ?? Default.Configuration.Web.RefreshTokenCookie);
     this.Produces = new List<string>(produces ?? Default.Configuration.Web.Produces.ToList());
     this.Register = new WebRegisterRouteConfiguration(registerRoute ?? Default.Configuration.Web.Register);
     this.VerifyEmail = new WebVerifyEmailRouteConfiguration(verifyRoute ?? Default.Configuration.Web.VerifyEmail);
     this.Login = new WebLoginRouteConfiguration(loginRoute ?? Default.Configuration.Web.Login);
     this.Logout = new WebLogoutRouteConfiguration(logoutRoute ?? Default.Configuration.Web.Logout);
     this.ForgotPassword = new WebForgotPasswordRouteConfiguration(forgotPasswordRoute ?? Default.Configuration.Web.ForgotPassword);
     this.ChangePassword = new WebChangePasswordRouteConfiguration(changePasswordRoute ?? Default.Configuration.Web.ChangePassword);
     this.IdSite = new WebIdSiteConfiguration(idSite ?? Default.Configuration.Web.IdSite);
     this.Callback = new WebCallbackRouteConfiguration(callbackRoute ?? Default.Configuration.Web.Callback);
     this.Social = new Dictionary<string, WebSocialProviderConfiguration>(social ?? Default.Configuration.Web.Social.ToDictionary(), StringComparer.OrdinalIgnoreCase);
     this.Me = new WebMeRouteConfiguration(meRoute ?? Default.Configuration.Web.Me);
 }
 public WebMeRouteConfiguration(WebMeRouteConfiguration existing)
     : this(expand: existing?.Expand.ToDictionary(),
           enabled: existing?.Enabled,
           uri: existing?.Uri)
 {
 }