summaryrefslogtreecommitdiffstats
path: root/comm/calendar/test/browser/data/calendars.sjs
blob: f1175f19031cff0fcfa5f75a37a4d1915d07f9e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, you can obtain one at http://mozilla.org/MPL/2.0/. */

Cu.importGlobalProperties(["TextEncoder"]);

function handleRequest(request, response) {
  if (!request.hasHeader("Authorization")) {
    response.setStatusLine("1.1", 401, "Unauthorized");
    response.setHeader("WWW-Authenticate", `Basic realm="test"`);
    return;
  }

  response.setStatusLine("1.1", 207, "Multi-Status");
  response.setHeader("Content-Type", "text/xml; charset=utf-8", false);

  // Request:
  // <propfind>
  //   <prop>
  //     <resourcetype/>
  //     <displayname/>
  //     <current-user-privilege-set/>
  //     <calendar-color/>
  //   </prop>
  // </propfind>

  let res = `<multistatus xmlns="DAV:"
                               xmlns:A="http://apple.com/ns/ical/"
                               xmlns:C="urn:ietf:params:xml:ns:caldav"
                               xmlns:CS="http://calendarserver.org/ns/">
    <response>
      <href>/browser/comm/calendar/test/browser/data/calendars.sjs</href>
      <propstat>
        <prop>
          <resourcetype>
            <collection/>
          </resourcetype>
          <displayname>Things found by DNS</displayname>
        </prop>
        <status>HTTP/1.1 200 OK</status>
      </propstat>
      <propstat>
        <prop>
          <current-user-privilege-set/>
          <A:calendar-color/>
        </prop>
        <status>HTTP/1.1 404 Not Found</status>
      </propstat>
    </response>
    <response>
      <href>/browser/comm/calendar/test/browser/data/calendar.sjs</href>
      <propstat>
        <prop>
          <resourcetype>
            <collection/>
            <C:calendar/>
            <CS:shared/>
          </resourcetype>
          <displayname>You found me!</displayname>
          <A:calendar-color>#008000</A:calendar-color>
        </prop>
        <status>HTTP/1.1 200 OK</status>
      </propstat>
      <propstat>
        <prop>
          <current-user-privilege-set/>
        </prop>
        <status>HTTP/1.1 404 Not Found</status>
      </propstat>
    </response>
    <response>
      <href>/browser/comm/calendar/test/browser/data/calendar2.sjs</href>
      <propstat>
        <prop>
          <resourcetype>
            <collection/>
            <C:calendar/>
            <CS:shared/>
          </resourcetype>
          <displayname>Röda dagar</displayname>
          <A:calendar-color>#ff0000</A:calendar-color>
          <current-user-privilege-set>
           <privilege>
            <read/>
           </privilege>
           <privilege>
            <C:read-free-busy/>
           </privilege>
           <privilege>
            <read-current-user-privilege-set/>
           </privilege>
           <privilege>
            <write/>
           </privilege>
           <privilege>
            <write-content/>
           </privilege>
           <privilege>
            <write-properties/>
           </privilege>
           <privilege>
            <bind/>
           </privilege>
           <privilege>
            <unbind/>
           </privilege>
          </current-user-privilege-set>
        </prop>
        <status>HTTP/1.1 200 OK</status>
      </propstat>
      <propstat>
        <prop>
          <current-user-privilege-set/>
        </prop>
        <status>HTTP/1.1 404 Not Found</status>
      </propstat>
    </response>
  </multistatus>`;

  let bytes = new TextEncoder().encode(res);
  let str = "";
  for (let i = 0; i < bytes.length; i += 65536) {
    str += String.fromCharCode.apply(null, bytes.subarray(i, i + 65536));
  }
  response.write(str);
}