Advertisement
Guest User

Untitled

a guest
Sep 10th, 2016
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.29 KB | None | 0 0
  1.  
  2. using System;
  3. using System.IO;
  4. using System.Xml;
  5. using System.Text;
  6. using System.Collections.Specialized;
  7. using Microsoft.MetadirectoryServices;
  8. using System.Collections.ObjectModel;
  9. using System.Collections.Generic;
  10. using Newtonsoft.Json;
  11. using Newtonsoft.Json.Linq;
  12. using System.Net;
  13.  
  14.  
  15.  
  16. namespace FimSync_Ezma
  17. {
  18. public class EzmaExtension :
  19. //IMAExtensible2CallExport,
  20. IMAExtensible2CallImport,
  21. //IMAExtensible2FileImport,
  22. //IMAExtensible2FileExport,
  23. //IMAExtensible2GetHierarchy,
  24. IMAExtensible2GetSchema,
  25. IMAExtensible2GetCapabilities,
  26. IMAExtensible2GetParameters
  27. //IMAExtensible2GetPartitions
  28. {
  29.  
  30. private int m_importDefaultPageSize = 1200;
  31. private int m_importMaxPageSize = 1500;
  32.  
  33. public string Password;
  34. public string Username;
  35. public string path;
  36. //
  37. // Constructor
  38. //
  39. public EzmaExtension()
  40. {
  41. //
  42. // TODO: Add constructor logic here
  43. //
  44. }
  45.  
  46. public MACapabilities Capabilities
  47. {
  48. get
  49. {
  50. MACapabilities myCapabilities = new MACapabilities();
  51.  
  52. myCapabilities.ConcurrentOperation = true;
  53. myCapabilities.ObjectRename = false;
  54. myCapabilities.DeleteAddAsReplace = true;
  55. myCapabilities.DeltaImport = true;
  56.  
  57. myCapabilities.DistinguishedNameStyle = MADistinguishedNameStyle.None;
  58. myCapabilities.ExportType = MAExportType.AttributeUpdate;
  59. myCapabilities.NoReferenceValuesInFirstExport = false;
  60. myCapabilities.Normalizations = MANormalizations.None;
  61.  
  62. return myCapabilities;
  63. }
  64. }
  65.  
  66. public int ImportDefaultPageSize
  67. {
  68. get
  69. {
  70. return m_importDefaultPageSize;
  71. }
  72. }
  73.  
  74. public int ImportMaxPageSize
  75. {
  76. get
  77. {
  78. return m_importMaxPageSize;
  79. }
  80. }
  81.  
  82. public CloseImportConnectionResults CloseImportConnection(CloseImportConnectionRunStep importRunStep)
  83. {
  84. return new CloseImportConnectionResults();
  85. }
  86.  
  87. public IList<ConfigParameterDefinition> GetConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page)
  88. {
  89. List<ConfigParameterDefinition> configParametersDefinitions = new List<ConfigParameterDefinition>();
  90. switch (page)
  91. {
  92. case ConfigParameterPage.Connectivity:
  93. configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("path", ""));
  94. configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Username", ""));
  95. configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Password", ""));
  96. break;
  97. //case ConfigParameterPage.Global:
  98. // break;
  99. //case ConfigParameterPage.Partition:
  100.  
  101. // break;
  102. //case ConfigParameterPage.RunStep:
  103. // break;
  104.  
  105. }
  106. return configParametersDefinitions;
  107. }
  108.  
  109. public GetImportEntriesResults GetImportEntries(GetImportEntriesRunStep importRunStep)
  110. {
  111.  
  112. List<CSEntryChange> csentries = new List<CSEntryChange>();
  113. GetImportEntriesResults importReturnInfo;
  114. WebClient c = new WebClient();
  115. c.UseDefaultCredentials = true;
  116. c.Credentials = new NetworkCredential(this.Username, this.Password);
  117. var data = c.DownloadString(this.path);
  118.  
  119. var jObject = Newtonsoft.Json.Linq.JObject.Parse(data);
  120. var listResult = jObject["result"];
  121.  
  122. string name1 = "", email1 = "";
  123.  
  124. foreach (var result in listResult)
  125. {
  126.  
  127. name1 = result["name"].ToString();
  128. email1 = result["email"].ToString();
  129.  
  130. CSEntryChange csentry1 = CSEntryChange.Create();
  131. csentry1.ObjectModificationType = ObjectModificationType.Add;
  132. csentry1.ObjectType = "Person";
  133. csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("name", name1));
  134. csentry1.AttributeChanges.Add(AttributeChange.CreateAttributeAdd("email", email1));
  135. csentries.Add(csentry1);
  136.  
  137. }
  138.  
  139. importReturnInfo = new GetImportEntriesResults();
  140. importReturnInfo.MoreToImport = false;
  141. importReturnInfo.CSEntries = csentries;
  142. return importReturnInfo;
  143.  
  144.  
  145. }
  146.  
  147. public Schema GetSchema(KeyedCollection<string, ConfigParameter> configParameters)
  148. {
  149. Microsoft.MetadirectoryServices.SchemaType personType = Microsoft.MetadirectoryServices.SchemaType.Create("Person", false);
  150.  
  151. //myname = configParameters["myname"].Value;
  152.  
  153. string myattribute = "name";
  154. string myattributes = "email";
  155. if (myattribute == "name")
  156. {
  157. personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute(myattribute, AttributeType.String));
  158. }
  159. if (myattributes == "email")
  160. {
  161. personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute(myattributes, AttributeType.String));
  162. }
  163.  
  164.  
  165. Schema schema = Schema.Create();
  166. schema.Types.Add(personType);
  167.  
  168. return schema;
  169. }
  170.  
  171. public OpenImportConnectionResults OpenImportConnection(KeyedCollection<string, ConfigParameter> configParameters, Schema types, OpenImportConnectionRunStep importRunStep)
  172. {
  173. this.path = configParameters["path"].Value;
  174. this.Username = configParameters["Username"].Value;
  175. this.Password = configParameters["Password"].Value;
  176. return new OpenImportConnectionResults();
  177. }
  178.  
  179. public ParameterValidationResult ValidateConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page)
  180. {
  181. ParameterValidationResult myResults = new ParameterValidationResult();
  182. return myResults;
  183. }
  184. };
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement