daydream

A small matrix web client written in rust
git clone git://archive.git.mtrnord.blog/daydream-mx/daydream.git
Log | Files | Refs | README | LICENSE

matrix-fake-api.js (10625B)


      1 const fake_matrix_api_handler = (arg, fetch, win) => {
      2     if (typeof arg === "string") {
      3         console.log("REQUESTED: " + arg);
      4         if (arg.includes('daydream_bg.wasm') || arg.includes('worker_bg.wasm')) {
      5             console.log("doing fetch");
      6             return fetch(arg);
      7         }
      8     } else if (typeof arg === "object") {
      9         console.log("REQUESTED: ", arg);
     10         console.log("Special mode");
     11         if (arg["url"] === "http://localhost:8448/_matrix/client/r0/login") {
     12             console.log("handling login");
     13             return new Promise((resolve, reject) => {
     14                     const resp_data = {
     15                         "user_id": "@carl:example.com",
     16                         "access_token": "123456",
     17                         "device_id": "KCZFUCGSLZ"
     18                     };
     19                     const resp = new Blob([JSON.stringify(resp_data, null, 2)], {type: 'application/json'});
     20 
     21                     const init = {
     22                         "status": 200,
     23                         "statusText": "Ok",
     24                         headers: {'Content-type': 'application/json'}
     25                     };
     26                     const response = new win.Response(resp, init);
     27                     Object.defineProperty(response, "url", {value: arg["url"]});
     28                     resolve(response)
     29                 }
     30             )
     31         } else {
     32             // TODO handle different test states
     33             console.log("handling sync");
     34             return new Promise((resolve, reject) => {
     35                     const resp_data = {
     36                         "next_batch": "s72595_4483_1934",
     37                         "rooms": {
     38                             "join": {
     39                                 "!726s6s6q:example.com": {
     40                                     "unread_notifications": {
     41                                         "highlight_count": 0,
     42                                         "notification_count": 0,
     43                                     },
     44                                     "summary": {
     45                                         "m.heroes": [
     46                                             "@alice:example.com",
     47                                             "@bob:example.com"
     48                                         ],
     49                                         "m.joined_member_count": 2,
     50                                         "m.invited_member_count": 0
     51                                     },
     52                                     "state": {
     53                                         "events": [
     54                                             {
     55                                                 "content": {
     56                                                     "membership": "join",
     57                                                     "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF",
     58                                                     "displayname": "Alice Margatroid"
     59                                                 },
     60                                                 "type": "m.room.member",
     61                                                 "event_id": "$143273582443PhrSn:example.org",
     62                                                 "room_id": "!726s6s6q:example.com",
     63                                                 "sender": "@example:example.org",
     64                                                 "origin_server_ts": 1432735824653,
     65                                                 "unsigned": {
     66                                                     "age": 1234
     67                                                 },
     68                                                 "state_key": "@alice:example.org"
     69                                             }
     70                                         ]
     71                                     },
     72                                     "timeline": {
     73                                         "events": [
     74                                             {
     75                                                 "content": {
     76                                                     "membership": "join",
     77                                                     "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF",
     78                                                     "displayname": "Alice Margatroid"
     79                                                 },
     80                                                 "type": "m.room.member",
     81                                                 "event_id": "$143273582443PhrSn:example.org",
     82                                                 "room_id": "!726s6s6q:example.com",
     83                                                 "sender": "@example:example.org",
     84                                                 "origin_server_ts": 1432735824653,
     85                                                 "unsigned": {
     86                                                     "age": 1234
     87                                                 },
     88                                                 "state_key": "@alice:example.org"
     89                                             },
     90                                             {
     91                                                 "content": {
     92                                                     "body": "This is an example text message",
     93                                                     "msgtype": "m.text",
     94                                                     "format": "org.matrix.custom.html",
     95                                                     "formatted_body": "<b>This is an example text message</b>"
     96                                                 },
     97                                                 "type": "m.room.message",
     98                                                 "event_id": "$143273582443PhrSn:example.org",
     99                                                 "room_id": "!726s6s6q:example.com",
    100                                                 "sender": "@example:example.org",
    101                                                 "origin_server_ts": 1432735824653,
    102                                                 "unsigned": {
    103                                                     "age": 1234
    104                                                 }
    105                                             }
    106                                         ],
    107                                         "limited": true,
    108                                         "prev_batch": "t34-23535_0_0"
    109                                     },
    110                                     "ephemeral": {
    111                                         "events": [
    112                                             {
    113                                                 "content": {
    114                                                     "user_ids": [
    115                                                         "@alice:matrix.org",
    116                                                         "@bob:example.com"
    117                                                     ]
    118                                                 },
    119                                                 "type": "m.typing",
    120                                                 "room_id": "!jEsUZKDJdhlrceRyVU:example.org"
    121                                             }
    122                                         ]
    123                                     },
    124                                     "account_data": {
    125                                         "events": [
    126                                             {
    127                                                 "content": {
    128                                                     "tags": {
    129                                                         "u.work": {
    130                                                             "order": 0.9
    131                                                         }
    132                                                     }
    133                                                 },
    134                                                 "type": "m.tag"
    135                                             },
    136                                             {
    137                                                 "type": "org.example.custom.room.config",
    138                                                 "content": {
    139                                                     "custom_config_key": "custom_config_value"
    140                                                 }
    141                                             }
    142                                         ]
    143                                     }
    144                                 }
    145                             },
    146                             "invite": {
    147                                 "!696r7674:example.com": {
    148                                     "invite_state": {
    149                                         "events": [
    150                                             {
    151                                                 "sender": "@alice:example.com",
    152                                                 "type": "m.room.name",
    153                                                 "state_key": "",
    154                                                 "content": {
    155                                                     "name": "My Room Name"
    156                                                 }
    157                                             },
    158                                             {
    159                                                 "sender": "@alice:example.com",
    160                                                 "type": "m.room.member",
    161                                                 "state_key": "@bob:example.com",
    162                                                 "content": {
    163                                                     "membership": "invite"
    164                                                 }
    165                                             }
    166                                         ]
    167                                     }
    168                                 }
    169                             },
    170                             "leave": {}
    171                         }
    172                     };
    173                     const resp = new Blob([JSON.stringify(resp_data, null, 2)], {type: 'application/json'});
    174 
    175                     const init = {
    176                         "status": 200,
    177                         "statusText": "Ok",
    178                         headers: {'Content-type': 'application/json'}
    179                     };
    180                     const response = new win.Response(resp, init);
    181                     Object.defineProperty(response, "url", {value: arg["url"]});
    182                     // Lets wait 2 sec to get a chance to see a spinner
    183                     setTimeout(() => {
    184                         resolve(response)
    185                     }, 2000);
    186                 }
    187             )
    188         }
    189     }
    190 
    191 }
    192 export {fake_matrix_api_handler}
    193 export default fake_matrix_api_handler