Skip to content

Commit 7b96d58

Browse files
committed
more docs,
more autodiscover related completeness fix some issues with specific settings.
1 parent 863039a commit 7b96d58

25 files changed

+2465
-1602
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ews-javascript-api",
3-
"version": "0.9.5",
3+
"version": "0.9.6-dev.1",
44
"description": "EWS Managed api in JavaScript",
55
"main": "js/ExchangeWebService.js",
66
"scripts": {
@@ -29,6 +29,7 @@
2929
"base64-js": "^1.3.0",
3030
"moment": "^2.24.0",
3131
"moment-timezone": "^0.5.26",
32+
"ts-node": "^8.3.0",
3233
"uuid": "^3.3.2",
3334
"xmldom": "^0.1.27"
3435
},
Lines changed: 101 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,106 @@
1-
//todo: fix this - import Xml = require("System.Xml");
2-
3-
import {EwsXmlReader} from "../Core/EwsXmlReader";
4-
import {XmlElementNames} from "../Core/XmlElementNames";
5-
import {XmlNamespace} from "../Enumerations/XmlNamespace";
1+
import { XmlElementNames } from "../Core/XmlElementNames";
62

3+
/**
4+
* Represents an alternate mailbox.
5+
* @sealed
6+
*/
77
export class AlternateMailbox {
8-
Type: string;
9-
DisplayName: string;
10-
LegacyDN: string;
11-
Server: string;
12-
SmtpAddress: string;
13-
OwnerSmtpAddress: string;
14-
//private type: string;
15-
//private displayName: string;
16-
//private legacyDN: string;
17-
//private server: string;
18-
//private smtpAddress: string;
19-
//private ownerSmtpAddress: string;
20-
/**@internal */
21-
LoadFromXml(reader: EwsXmlReader): AlternateMailbox {
22-
var altMailbox: AlternateMailbox = new AlternateMailbox();
23-
24-
do {
25-
reader.Read();
26-
if (reader.NodeType == 1){//todo: 1 = System.Xml.XmlNodeType.Element) {
27-
switch (reader.LocalName) {
28-
case XmlElementNames.Type:
29-
altMailbox.Type = reader.ReadElementValue();// reader.ReadElementValue<string>();
30-
break;
31-
case XmlElementNames.DisplayName:
32-
altMailbox.DisplayName = reader.ReadElementValue();//reader.ReadElementValue<string>();
33-
break;
34-
case XmlElementNames.LegacyDN:
35-
altMailbox.LegacyDN = reader.ReadElementValue();//reader.ReadElementValue<string>();
36-
break;
37-
case XmlElementNames.Server:
38-
altMailbox.Server = reader.ReadElementValue();//reader.ReadElementValue<string>();
39-
break;
40-
case XmlElementNames.SmtpAddress:
41-
altMailbox.SmtpAddress = reader.ReadElementValue();//reader.ReadElementValue<string>();
42-
break;
43-
case XmlElementNames.OwnerSmtpAddress:
44-
altMailbox.OwnerSmtpAddress = reader.ReadElementValue();//reader.ReadElementValue<string>();
45-
break;
46-
default:
47-
break;
48-
}
49-
}
50-
}
51-
while (!reader.IsElement(XmlNamespace.Autodiscover, XmlElementNames.AlternateMailbox));
52-
reader.SeekLast(); // to go back to last one, fix for xmlnode based reader.
53-
return altMailbox;
54-
}
55-
static LoadFromJson(obj: any): AlternateMailbox { throw new Error("this was skipped as not needed at dev time, fix this"); }
8+
private type: string;
9+
private displayName: string;
10+
private legacyDN: string;
11+
private server: string;
12+
private smtpAddress: string;
13+
private ownerSmtpAddress: string;
5614

57-
}
15+
/**
16+
* Gets the alternate mailbox type.
17+
*/
18+
get Type(): string {
19+
return this.type;
20+
}
21+
/** @internal set */
22+
set Type(value: string) {
23+
this.type = value;
24+
}
25+
26+
/**
27+
* Gets the alternate mailbox display name.
28+
*/
29+
get DisplayName(): string {
30+
return this.displayName;
31+
}
32+
/** @internal set */
33+
set DisplayName(value: string) {
34+
this.displayName = value;
35+
}
36+
37+
/**
38+
* Gets the alternate mailbox legacy DN.
39+
*/
40+
get LegacyDN(): string {
41+
return this.legacyDN;
42+
}
43+
/** @internal set */
44+
set LegacyDN(value: string) {
45+
this.legacyDN = value;
46+
}
47+
48+
/**
49+
* Gets the alernate mailbox server.
50+
*/
51+
get Server(): string {
52+
return this.server;
53+
}
54+
/** @internal set */
55+
set Server(value: string) {
56+
this.server = value;
57+
}
5858

59+
/**
60+
* Gets the alternate mailbox address.
61+
* It has value only when Server and LegacyDN is empty.
62+
*/
63+
get SmtpAddress(): string {
64+
return this.smtpAddress;
65+
}
66+
/** @internal set */
67+
set SmtpAddress(value: string) {
68+
this.smtpAddress = value;
69+
}
5970

71+
/**
72+
* Gets the alternate mailbox owner SmtpAddress.
73+
*/
74+
get OwnerSmtpAddress(): string {
75+
return this.ownerSmtpAddress;
76+
}
77+
/** @internal set */
78+
set OwnerSmtpAddress(value: string) {
79+
this.ownerSmtpAddress = value;
80+
}
81+
82+
/**
83+
* Initializes a new instance of the **AlternateMailbox** class.
84+
*/
85+
private constructor() {
86+
}
87+
88+
/**
89+
* @internal Loads AlternateMailbox instance.
90+
*
91+
* @param {any} jsObject Json Object converted from XML.
92+
* @returns {AlternateMailbox} AlternateMailbox.
93+
*/
94+
static LoadFromXmlJsObject(jsObject: any): AlternateMailbox {
95+
const altMailbox = new AlternateMailbox();
96+
97+
altMailbox.Type = jsObject[XmlElementNames.Type] || null;
98+
altMailbox.DisplayName = jsObject[XmlElementNames.DisplayName] || null;
99+
altMailbox.LegacyDN = jsObject[XmlElementNames.DisplayName] || null;
100+
altMailbox.Server = jsObject[XmlElementNames.DisplayName] || null;
101+
altMailbox.SmtpAddress = jsObject[XmlElementNames.DisplayName] || null;
102+
altMailbox.OwnerSmtpAddress = jsObject[XmlElementNames.DisplayName] || null;
103+
104+
return altMailbox;
105+
}
106+
}
Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,44 @@
1-
import {AlternateMailbox} from "./AlternateMailbox";
2-
import {EwsXmlReader} from "../Core/EwsXmlReader";
3-
import {XmlElementNames} from "../Core/XmlElementNames";
1+
import { AlternateMailbox } from "./AlternateMailbox";
2+
import { XmlElementNames } from "../Core/XmlElementNames";
43

4+
/**
5+
* Represents a user setting that is a collection of alternate mailboxes.
6+
* @sealed
7+
*/
58
export class AlternateMailboxCollection {
6-
Entries: AlternateMailbox[] = []; //System.Collections.Generic.List<AlternateMailbox>;
7-
/**@internal */
8-
static LoadFromXml(reader: EwsXmlReader): AlternateMailboxCollection { throw new Error("Not implemented. depricated use LoadFromJson"); }
9-
static LoadFromJson(obj: any): AlternateMailboxCollection {
10-
var instance = new AlternateMailboxCollection();
9+
entries: AlternateMailbox[] = [];
1110

12-
var element = XmlElementNames.AlternateMailbox;
13-
var responses = undefined;
14-
if (Object.prototype.toString.call(obj[element]) === "[object Array]")
15-
responses = obj[element];
16-
else
17-
responses = [obj[element]];
11+
/**
12+
* Gets the collection of alternate mailboxes.
13+
*/
14+
get Entries(): AlternateMailbox[] {
15+
return this.entries;
16+
}
17+
/** @private set */
18+
set Entries(value) {
19+
this.entries = value;
20+
}
1821

19-
for (var i = 0; i < responses.length; i++) {
20-
instance.Entries.push(responses[i]);
21-
//AlternateMailbox.LoadFromJson(responses[i]);
22-
//instance.Entries.push(responses);
23-
}
22+
/**
23+
* @internal Loads instance of AlternateMailboxCollection.
24+
*
25+
* @param {any} jsObject Json Object converted from XML.
26+
* @returns {AlternateMailboxCollection}
27+
*/
28+
static LoadFromXmlJsObject(obj: any): AlternateMailboxCollection {
29+
const instance = new AlternateMailboxCollection();
2430

25-
return instance;
26-
}
27-
}
31+
const element = XmlElementNames.AlternateMailbox;
32+
let responses = undefined;
33+
if (Array.isArray(obj[element]))
34+
responses = obj[element];
35+
else
36+
responses = [obj[element]];
2837

38+
for (let i = 0; i < responses.length; i++) {
39+
instance.Entries.push(AlternateMailbox.LoadFromXmlJsObject(responses[i]));
40+
}
2941

42+
return instance;
43+
}
44+
}
Lines changed: 70 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,72 @@
1-
import {EwsXmlReader} from "../Core/EwsXmlReader";
1+
import { XmlAttributeNames } from "../Core/XmlAttributeNames";
2+
import { XmlElementNames } from "../Core/XmlElementNames";
3+
4+
/**
5+
* Represents an error returned by the Autodiscover service.
6+
* @sealed
7+
*/
28
export class AutodiscoverError {
3-
Time: string;
4-
Id: string;
5-
ErrorCode: number;
6-
Message: string;
7-
DebugData: string;
8-
private time: string;
9-
private id: string;
10-
private errorCode: number;
11-
private message: string;
12-
private debugData: string;
13-
//Parse(reader: EwsXmlReader): AutodiscoverError { throw new Error("AutodiscoverError.ts - Parse : Not implemented."); }
9+
private time: string;
10+
private id: string;
11+
private errorCode: number;
12+
private message: string;
13+
private debugData: string;
14+
15+
/**
16+
* Gets the time when the error was returned.
17+
*/
18+
get Time(): string {
19+
return this.time;
20+
}
21+
22+
/**
23+
* Gets a hash of the name of the computer that is running Microsoft Exchange Server that has the Client Access server role installed.
24+
*/
25+
get Id(): string {
26+
return this.id;
27+
}
28+
29+
/**
30+
* Gets the error code.
31+
*/
32+
get ErrorCode(): number {
33+
return this.errorCode;
34+
}
35+
36+
/**
37+
* Gets the error message.
38+
*/
39+
get Message(): string {
40+
return this.message;
41+
}
42+
43+
/**
44+
* Gets the debug data.
45+
*/
46+
get DebugData(): string {
47+
return this.debugData;
48+
}
49+
50+
/**
51+
* Initializes a new instance of the **AutodiscoverError** class.
52+
*/
53+
private constructor() {
54+
}
55+
56+
/**
57+
* Parses the XML Js Object creates an Autodiscover error.
58+
*
59+
* @param {any} jsObject The object.
60+
* @return {AutodiscoverError} An Autodiscover error.
61+
*/
62+
Parse(jsObject: any): AutodiscoverError {
63+
const error = new AutodiscoverError();
64+
error.time = jsObject[XmlAttributeNames.Time] || null;
65+
error.id = jsObject[XmlAttributeNames.Id] || null;
66+
error.errorCode = parseInt(jsObject[XmlElementNames.ErrorCode]) || 0;
67+
error.message = jsObject[XmlElementNames.Message] || null;
68+
error.debugData = jsObject[XmlElementNames.DebugData] || null;
69+
70+
return error;
71+
}
1472
}

0 commit comments

Comments
 (0)