|
|
|
using System; |
|
using System.IO; |
|
using System.Xml; |
|
using System.Text; |
|
using System.Collections.Specialized; |
|
using Microsoft.MetadirectoryServices; |
|
using System.Collections.ObjectModel; |
|
using System.Collections.Generic; |
|
using Newtonsoft.Json; |
|
using Newtonsoft.Json.Linq; |
|
using System.Net; |
|
|
|
|
|
|
|
namespace FimSync_Ezma |
|
{ |
|
public class EzmaExtension : |
|
//IMAExtensible2CallExport, |
|
IMAExtensible2CallImport, |
|
//IMAExtensible2FileImport, |
|
//IMAExtensible2FileExport, |
|
//IMAExtensible2GetHierarchy, |
|
IMAExtensible2GetSchema, |
|
IMAExtensible2GetCapabilities, |
|
IMAExtensible2GetParameters |
|
//IMAExtensible2GetPartitions |
|
{ |
|
|
|
private int m_importDefaultPageSize = 1200; |
|
private int m_importMaxPageSize = 1500; |
|
|
|
public string Password; |
|
public string Username; |
|
public string path; |
|
// |
|
// Constructor |
|
// |
|
public EzmaExtension() |
|
{ |
|
// |
|
// TODO: Add constructor logic here |
|
// |
|
} |
|
|
|
public MACapabilities Capabilities |
|
{ |
|
get |
|
{ |
|
MACapabilities myCapabilities = new MACapabilities(); |
|
|
|
myCapabilities.ConcurrentOperation = true; |
|
myCapabilities.ObjectRename = false; |
|
myCapabilities.DeleteAddAsReplace = true; |
|
myCapabilities.DeltaImport = true; |
|
|
|
myCapabilities.DistinguishedNameStyle = MADistinguishedNameStyle.None; |
|
myCapabilities.ExportType = MAExportType.AttributeUpdate; |
|
myCapabilities.NoReferenceValuesInFirstExport = false; |
|
myCapabilities.Normalizations = MANormalizations.None; |
|
|
|
return myCapabilities; |
|
} |
|
} |
|
|
|
public int ImportDefaultPageSize |
|
{ |
|
get |
|
{ |
|
return m_importDefaultPageSize; |
|
} |
|
} |
|
|
|
public int ImportMaxPageSize |
|
{ |
|
get |
|
{ |
|
return m_importMaxPageSize; |
|
} |
|
} |
|
|
|
public CloseImportConnectionResults CloseImportConnection(CloseImportConnectionRunStep importRunStep) |
|
{ |
|
return new CloseImportConnectionResults(); |
|
} |
|
|
|
public IList<ConfigParameterDefinition> GetConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page) |
|
{ |
|
List<ConfigParameterDefinition> configParametersDefinitions = new List<ConfigParameterDefinition>(); |
|
switch (page) |
|
{ |
|
case ConfigParameterPage.Connectivity: |
|
configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("path", "")); |
|
configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Username", "")); |
|
configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Password", "")); |
|
break; |
|
//case ConfigParameterPage.Global: |
|
// break; |
|
//case ConfigParameterPage.Partition: |
|
|
|
// break; |
|
//case ConfigParameterPage.RunStep: |
|
// break; |
|
|
|
} |
|
return configParametersDefinitions; |
|
} |
|
|
|
public GetImportEntriesResults GetImportEntries(GetImportEntriesRunStep importRunStep) |
|
{ |
|
|
|
List<CSEntryChange> csentries = new List<CSEntryChange>(); |
|
GetImportEntriesResults importReturnInfo; |
|
WebClient c = new WebClient(); |
|
c.UseDefaultCredentials = true; |
|
c.Credentials = new NetworkCredential(this.Username, this.Password); |
|
var data = c.DownloadString(this.path); |
|
|
|
var jObject = Newtonsoft.Json.Linq.JObject.Parse(data); |
|
var listResult = jObject["result"]; |
|
|
|
string name1 = "", email1 = ""; |
|
|
|
foreach (var result in listResult) |
|
{ |
|
|
|
name1 = result["name"].ToString(); |
|
email1 = result["email"].ToString(); |
|
|
|
CSEntryChange csentry1 = CSEntryChange.Create(); |
|
csentry1.ObjectModificationType = ObjectModificationType.Add; |
|
csentry1.ObjectType = "Person"; |
|
csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("name", name1)); |
|
csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("email", email1)); |
|
csentries.Add(csentry1); |
|
|
|
} |
|
|
|
importReturnInfo = new GetImportEntriesResults(); |
|
importReturnInfo.MoreToImport = false; |
|
importReturnInfo.CSEntries = csentries; |
|
return importReturnInfo; |
|
|
|
|
|
} |
|
|
|
public Schema GetSchema(KeyedCollection<string, ConfigParameter> configParameters) |
|
{ |
|
Microsoft.MetadirectoryServices.SchemaType personType = Microsoft.MetadirectoryServices.SchemaType.Create("Person", false); |
|
|
|
//myname = configParameters["myname"].Value; |
|
|
|
string myattribute = "name"; |
|
string myattributes = "email"; |
|
if (myattribute == "name") |
|
{ |
|
personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute(myattribute, AttributeType.String)); |
|
} |
|
if (myattributes == "email") |
|
{ |
|
personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute(myattributes, AttributeType.String)); |
|
} |
|
|
|
|
|
Schema schema = Schema.Create(); |
|
schema.Types.Add(personType); |
|
|
|
return schema; |
|
} |
|
|
|
public OpenImportConnectionResults OpenImportConnection(KeyedCollection<string, ConfigParameter> configParameters, Schema types, OpenImportConnectionRunStep importRunStep) |
|
{ |
|
this.path = configParameters["path"].Value; |
|
this.Username = configParameters["Username"].Value; |
|
this.Password = configParameters["Password"].Value; |
|
return new OpenImportConnectionResults(); |
|
} |
|
|
|
public ParameterValidationResult ValidateConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page) |
|
{ |
|
ParameterValidationResult myResults = new ParameterValidationResult(); |
|
return myResults; |
|
} |
|
}; |
|
} |