Skip to content

Commit

Permalink
feat(api): implement object::fullById rpc method
Browse files Browse the repository at this point in the history
Ref #1
  • Loading branch information
guillaumearm committed Nov 4, 2018
1 parent 79b0af9 commit a751019
Show file tree
Hide file tree
Showing 14 changed files with 195 additions and 31 deletions.
1 change: 1 addition & 0 deletions src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export const createJeedomApi = (jeedomRpc: RpcInterface): JeedomApi => ({
object: {
all: () => jeedomRpc('object::all'),
full: () => jeedomRpc('object::full'),
fullById: (params) => jeedomRpc('object::fullById', params),
},
})

Expand Down
3 changes: 3 additions & 0 deletions src/api/types/object.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ export type FullJeedomObject = JeedomObject & {
eqLogics: any
}

export type ObjectFullByIdParams = { id: number }

export type ObjectApi = {
object: {
all: () => Promise<JeedomObject[]>
full: () => Promise<FullJeedomObject[]>
fullById: (params: ObjectFullByIdParams) => Promise<FullJeedomObject>
}
}
38 changes: 38 additions & 0 deletions tests/__nock-fixtures__/jeedom-[error] object::fullById.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[
{
"scope": "http://192.168.1.60:80",
"method": "POST",
"path": "/core/api/jeeApi.php",
"body": {
"jsonrpc": "2.0",
"id": null,
"method": "object::fullById",
"params": {
"id": -1,
"apikey": "42"
}
},
"status": 200,
"response": [
"1f8b08000000000000030dc7b10d80201005d055c8afd18085c52de10c801703413007da1077d7d7bd81d46a912b80b0cc061a7107953b670d16a9021a087567d06aacc6c9adb9e31f369fb8ab58bad4fb713eb3223559bcef0777cce20153000000"
],
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
"*",
"Vary",
"Accept-Encoding",
"Content-Encoding",
"gzip",
"Content-Length",
"98",
"Connection",
"close",
"Content-Type",
"text/html; charset=UTF-8"
]
}
]
2 changes: 1 addition & 1 deletion tests/__nock-fixtures__/jeedom-config::byKey.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down
6 changes: 3 additions & 3 deletions tests/__nock-fixtures__/jeedom-config::save.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down Expand Up @@ -57,7 +57,7 @@
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down Expand Up @@ -93,7 +93,7 @@
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down
4 changes: 2 additions & 2 deletions tests/__nock-fixtures__/jeedom-datetime.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
"response": {
"jsonrpc": "2.0",
"id": null,
"result": 1541329049.7215
"result": 1541330668.0091
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:27 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down
8 changes: 4 additions & 4 deletions tests/__nock-fixtures__/jeedom-event::changes.json

Large diffs are not rendered by default.

5 changes: 2 additions & 3 deletions tests/__nock-fixtures__/jeedom-object::all.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,11 @@
},
"status": 200,
"response": [
"1f8b0800000000000003ed9c596fe33610c7bf8aa1bcdaad0e5f32b60b6c935e0fdb16e8a27d48828092288bbb14699062b2db20dfbd946c1d9145c56a8e36ebf14b64cd281ace24fae13f24756b7d949c894d68ad2cf71bdb1a5b24b2564c513ab604968a66d6eafcb63869399e363394627dfc4e653c4519912996fa6c8cb2048babfa5a22ff24920434f775b4c3864b9211ce4a7bc8594cd64aa0edc95b6b830466d9af2a0db0b056f6d8922a4d91f8b25aad290f105dad240e9520d917fd1bf338f7ec29dffeae6e6bc4b930d96e088bf88d349965a2b20c1bafa6649d6426235719c5466b86d30dd63950029b5c129592a867d454db599e5ca3c786dfec079f9008eba460f929e31b736e5b6edd296e397565bae56248783ba8eebcb7bc3ad3dff2e9ae42cba9a7182d4f534dda91194bd372eca950ca0342f143052abdfaea53fa98cb537af456a70aa8af38a5534f6d4a97bed2943e0f56a674ec2f4c15d5037529fd3aca923fa9ea529c5f8ead32e5f9f136b5f95195c2fc4b95aafccb2e25f96139f4fcf8de10f313f5508aab1a21e7df77a19d5fdee94bd1fa94d3a2a82776f1b18a931ff0e7ac32fc587cb4a1feefda8ea8e965e5c3d995b7c3aaef1511b9a1a84803098bbfb43764145224e57717c5995144aeb1901379bd762facb76f2ebe256fadfb31c6f1b23bc62a788959f481bfdb6c0a78dcdd8d77009ad5fc394d501ae85cdd434f419a4792c77985e471803c401e200f90e720f2dc5a98a1faf918a6f993f36439774ef2a727d38fef6d52ee5e21a274503a91bfb1332493802311dd4fe2d53511994274470bdf3f8c6929225a244d129e613a3550cdf62207cf0ea75aff30ebaba27224da8ffc8d0b0e574074e67b441cfda408a548a5cfc3c6ff4b2501ce00678033c0f938e0ec789eff7c74ee84a3ab9fec43e018e0c824f8fc60e607f30e4ec4c5e78950b82f0e473a5d24bb50b68d7d8021c01060083004187e05309c7a2f0e4367100cf5cdf50fe7bfe46163aeee5469ce31e89502818040402020d053c8b163eb95bab63b888061c11c820536407011d851c1ba97ec972e6b289e6d75e146df04b1b0bd88e558e9d869043a021d818e40c7a359c3f211e388a7933512688d275ce59837622c8e9dae603b3166371b96d31a463fe8ab419f0181804040202010106847207792f0145f095323318ee3701a9ae1d3808dd380cde7dd9c98205809103ed01604ec0076003b8f6e0b7af6b4dd161c777bbafede720e83a7671feae92ee707df7d2fce57c8d181edcbc561e065c5a02748652a354ee0d91abc0bbf635c71fc7cbd4bbf26f8cf88696dda02f7f2f1e07601dc006e003780fbc8c0edb8f3c5f111d13b8c8888911451ad4485c473db44c499461f362bd1761bf469967cba35127f61311769c135d88f0e9d5420239011c8089dd4e67e746313d510e283dbd11b3dd5f7c5aa17000f8007c003e001f00c9264e65595e3cae8395dbdd5cad8d524adc4ddaccff88cfbea5e50f81924de74e0fe7625b1e398dfdb6223bb67b6b1adf11aa0b46b52fece154584520cfd4b8025c0126009b00495563619c384849f303311c87134830e7ec74a93408d4ee11f48c36754ac80b147ef115bef910896c000898044402220d1bf9849eb125bdd9e5f87f21a34e5361ba4c722c2085b7b061806de6c6a0787c2f08916a134de37b6",
"e5e8191e7d8f487bceed58110a620e100a0805841eb7982bdf08a67920384f5d939c9be278c016f0a69c6b6c9dd3186a4fbc1d2b7d40c0017d803e409fc709b8bdd7409b049c73846b26e7830828798c4cf22d8ee733e4beb07c5bd4dcfceb14a009920da009d0046882642b8185c535094dafecb2dd853f4caf5ddefd03b5b608a6606e0000"
"1f8b0800000000000003ed9c596fe33610c7bf8aa1bcdaad0e5f32b60b6c935e0fdb16e8a27d48828092288bbb14699062b2db20dfbd946c1d9145c56a8e36ebf14b64cd281ace24fae13f24756b7d949c894d68ad2cf71bdb1a5b24b2564c513ab604968a66d6eafcb63869399e363394627dfc4e653c4519912996fa6c8cb2048babfa5a22ff24920434f775b4c3864b9211ce4a7bc8594cd64aa0edc95b6b830466d9af2a0db0b056f6d8922a4d91f8b25aad290f105dad240e9520d917fd1bf338f7ec29dffeae6e6bc4b930d96e088bf88d349965a2b20c1bafa6649d6426235719c5466b86d30dd63950029b5c129592a867d454db599e5ca3c786dfec079f9008eba460f929e31b736e5b6edd296e397565bae56248783ba8eebcb7bc3ad3dff2e9ae42cba9a7182d4f534dda91194bd372eca950ca0342f143052abdfaea53fa98cb537af456a70aa8af38a5534f6d4a97bed2943e0f56a674ec2f4c15d5037529fd3aca923fa9ea529c5f8ead32e5f9f136b5f95195c2fc4b95aafccb2e25f96139f4fcf8de10f313f5508aab1a21e7df77a19d5fdee94bd1fa94d3a2a82776f1b18a931ff0e7ac32fc587cb4a1feefda8ea8e965e5c3d995b7c3aaef1511b9a1a84803098bbfb43764145224e57717c5995144aeb1901379bd762facb76f2ebe256fadfb31c6f1b23bc62a788959f481bfdb6c0a78dcdd8d77009ad5fc394d501ae85cdd434f419a4792c77985e471803c401e200f90e720f2dc5a98a1faf918a6f993f36439774ef2a727d38fef6d52ee5e21a274503a91bfb1332493802311dd4fe2d53511994274470bdf3f8c6929225a244d129e613a3550cdf62207cf0ea75aff30ebaba27224da8ffc8d0b0e574074e67b441cfda408a548a5cfc3c6ff4b2501ce00678033c0f938e0ec789eff7c74ee84a3ab9fec43e018e0c824f8fc60e607f30e4ec4c5e78950b82f0e473a5d24bb50b68d7d8021c01060083004187e05309c7a2f0e4367100cf5cdf50fe7bfe46163aeee5469ce31e89502818040402020d053c8b163eb95bab63b888061c11c820536407011d851c1ba97ec972e6b289e6d75e146df04b1b0bd88e558e9d869043a021d818e40c7a359c3f211e388a7933512688d275ce59837622c8e9dae603b3166371b96d31a463fe8ab419f0181804040202010106847207792f0145f095323318ee3701a9ae1d3808dd380cde7dd9c98205809103ed01604ec0076003b8f6e0b7af6b4dd161c777bbafede720e83a7671feae92ee707df7d2fce57c8d181edcbc561e065c5a02748652a354ee0d91abc0bbf635c71fc7cbd4bbf26f8cf88696dda02f7f2f1e07601dc006e003780fbc8c0edb8f3c5f111d13b8c8888911451ad4485c473db44c499461f362bd1761bf469967cba35127f61311769c135d88f0e9d5420239011c8089dd4e67e746313d510e283dbd11b3dd5f7c5aa17000f8007c003e001f00c9264e65595e3cae8395dbdd5cad8d524adc4ddaccff88cfbea5e50f81924de74e0fe7625b1e398dfdb6223bb67b6b1adf11aa0b46b52fece154584520cfd4b8025c0126009b00495563619c384849f303311c87134830e7ec74a93408d4ee11f48c36754ac80b147ef115bef910896c000898044402220d1bf9849eb125bdd9e5f87f21a34e5361ba4c722c2085b7b061806de6c6a0787c2f08916a134de37b6e5e8191e7d8f487bceed58110a620e100a0805841eb7982bdf08a67920384f5d939c9be278c016f0a69c6b6c9dd3186a4fbc1d2b7d40c0017d803e409fc709b8bdd7409b049c73846b26e7830828798c4cf22d8ee733e4beb07c5bd4dcfceb14a009920da009d0046882642b8185c535094dafecb2dd853f4caf5ddefd03b5b608a6606e0000"
],
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down
23 changes: 11 additions & 12 deletions tests/__nock-fixtures__/jeedom-object::full.json

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions tests/__nock-fixtures__/jeedom-object::fullById.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[
{
"scope": "http://192.168.1.60:80",
"method": "POST",
"path": "/core/api/jeeApi.php",
"body": {
"jsonrpc": "2.0",
"id": null,
"method": "object::fullById",
"params": {
"id": 1,
"apikey": "42"
}
},
"status": 200,
"response": [
"1f8b0800000000000003ad575d6fdb3614fd2b01f3ea6c92937489d615d8860d1bd0b54016f425090c5aba96d8f14325a93859e0ffbecb0fc98a2c292956270f22efe1d5e539e6b9f413f96c94d4754e32b2fc2e210bc20a92c986f305d1601a6e49f6e4e7488a414905e0e35f94e12a1c6fa8ad40aff66b98f9c40c5b73880b6a659865888df15cc90d2b1b4dc3e413a9a906693f34620d9a64c982984608aa1fb3ace46a4d799619c81bcdec236674f51dc4850ab9c6a385527a2ab665b2505b33153655632d4caee6acacec54503596c364d482a8013968344c41aa46b06266d71ce3d2913b89a8d5f6b0f88a1580a480f9c7aa7a9adb016c9ce201688ce9016482f06151e3bc0f50a3f40f30e32a0c4033620c90539a0c2b9b9466009c5148a835e3f092402d6a4e9f16332d4f8b9855a72b684e9c1634a34d0b9993a6c5bca84c0b9c17a6abea055d5adc882ccea9f652dcdc2d484bb97b0ed4baa78e4237e8a8728348c9cd13c98573d3e3f4f4f4d8d9adbc071d78d82dbae0697a3617bc9c0ea6cbf3b9e0c14a2cad95c295f98c7237b1a7d6efa247a11b47aa6eee76b89496bf2aeebf64c789ff103f790d0fb60bfcee3f18d89ff6c0701f451cbdf1eb361a8db3ab7ba66d43b9ef3f64999ce15e49c14ccda9578ce5fe50bc654739a7c6fc74eb678e84ef5e27956a0ca4e9f296bc7b7bfb3d7b479e6f61b34968928f6ca1db9b01595cab9feb3ad24ce0cb7b55b2dc7899bb9abaae7975db24095c62f1e10123dce129ffd361e3a65cd72c418266f9ca3ed6d0764eb5fe0cb95d75ad18be5c637415734726fcfc15444a0e5bb26ff0e63749f71dfaa023e71aa805cb7cde65925e9c249727cb8ba3f432c3ffe40daea18d551a367841a882204d5d4cad599e67e79e1d17c5af5a7713c005a50a47abc2373259b667eeb9e7392eca76d077165785c08546c40981d7157c49c1689c286043fd1526e8d3fb6a984a6d3f7a463f20811fe53d832dc9d2c541a0988c882e5241acca55449c0b14b6da0ff195b86f74606aaab5a2ba40677302a0d3508da9d0238c271e2f42ee34b977d9473c924eea9a160552939dd60f3fba3db4c93a8ffcdf990ecb42b7c8b2f4878ba57372093ecfabd0b9428390afc4a75f953d1dcd3e6061aef069e8ebf38e953c0dedf222d94a175d4fc9951028507b108c45bbf5b2a149a1cd08d1483485d8d1fd614ad393e4ec284db2f337989bf4ce125e98b7544b7f78f0b9a0b2f4f7687c2556d27322b7d581e184b334ee36c15d9e194b749af7d802bc7f5d608b78beb19000dbcb4679935ec71cb211ee05a473c855cf1c99f98319b413f62f14310feedf4230964377a23c6f78086ac03e25ff46fee013e50d1ccc5e074372d6c0640f22e84337da85a6c7a9ed36df6f21be55fec2a4bf04041ba9ace02df43ea419fff143b96fb3d1ef1aed7ee9c4f72e5d576e854907c2b4d6fab5d25cd18da62caf981e1786e69ec5be34cafd7efb06c284d226890cc36f419c9bdbdde1dfee3f6d12eacfbb0e0000"
],
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 11:24:28 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
"*",
"Vary",
"Accept-Encoding",
"Content-Encoding",
"gzip",
"Content-Length",
"1095",
"Connection",
"close",
"Content-Type",
"text/html; charset=UTF-8"
]
}
]
2 changes: 1 addition & 1 deletion tests/__nock-fixtures__/jeedom-ping.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:27 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down
2 changes: 1 addition & 1 deletion tests/__nock-fixtures__/jeedom-version.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
},
"rawHeaders": [
"Date",
"Sun, 04 Nov 2018 10:57:29 GMT",
"Sun, 04 Nov 2018 11:24:27 GMT",
"Server",
"Apache",
"Access-Control-Allow-Origin",
Expand Down
78 changes: 74 additions & 4 deletions tests/__snapshots__/index.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ Array [
]
`;

exports[`jeedom-node api datetime 1`] = `1541329049.7215`;
exports[`jeedom-node api datetime 1`] = `1541330668.0091`;

exports[`jeedom-node api event event::changes 1`] = `
Object {
"datetime": 1541329049.4544,
"datetime": 1541330664.8321,
"result": Array [
Object {
"datetime": 1541328815.1576,
"datetime": 1541330426.8833,
"name": "eibd::monitor",
"option": "{\\"Mode\\":\\"Write\\",\\"AdresseGroupe\\":\\"4\\\\/3\\\\/1\\",\\"AdressePhysique\\":\\"1.1.27\\",\\"data\\":\\"0x 0\\",\\"valeur\\":0,\\"DataPointType\\":\\"1.xxx\\",\\"cmdJeedom\\":\\"La commande n'exites pas\\",\\"datetime\\":\\"04-11-2018 11:53:35\\"}",
"option": "{\\"Mode\\":\\"Write\\",\\"AdresseGroupe\\":\\"1\\\\/1\\\\/12\\",\\"AdressePhysique\\":\\"1.1.44\\",\\"data\\":\\"0x 8b 82\\",\\"valeur\\":[139,130],\\"DataPointType\\":\\"1.xxx\\",\\"cmdJeedom\\":\\"La commande n'exites pas\\",\\"datetime\\":\\"04-11-2018 12:20:26\\"}",
},
],
}
Expand Down Expand Up @@ -108,6 +108,76 @@ Array [
]
`;

exports[`jeedom-node api object object::fullById 1`] = `
Array [
Object {
"configuration": Object {},
"display": Object {},
"eqLogics": Array [
Object {
"category": Object {
"automatism": "0",
"default": "0",
"energy": "0",
"heating": "0",
"light": "0",
"multimedia": "0",
"security": "0",
},
"cmds": Array [
Object {
"alert": null,
"configuration": Object {},
"currentValue": 2,
"display": Object {},
"eqLogic_id": "204",
"eqType": "virtual",
"generic_type": null,
"html": null,
"id": "1782",
"isHistorized": "0",
"isVisible": "1",
"logicalId": "light",
"name": "Lumière",
"order": "0",
"subType": "numeric",
"template": null,
"type": "info",
"unite": "",
"value": null,
},
],
"comment": null,
"configuration": Object {},
"display": Object {},
"eqReal_id": null,
"eqType_name": "virtual",
"generic_type": null,
"id": "204",
"isEnable": "1",
"isVisible": "0",
"logicalId": "summary1",
"name": "Résumé",
"object_id": "1",
"order": "0",
"status": Object {
"danger": 0,
"lastCommunication": "2018-11-04 10:56:17",
"timeout": 0,
"warning": 0,
},
"timeout": null,
},
],
"father_id": null,
"id": "1",
"isVisible": "1",
"name": "Maison",
"position": null,
},
]
`;

exports[`jeedom-node api ping 1`] = `"pong"`;

exports[`jeedom-node api version 1`] = `"3.2.11"`;
16 changes: 16 additions & 0 deletions tests/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,22 @@ describe('jeedom-node', () => {

expect(prepareData(fullObjects)).toMatchSnapshot()
})

recordTest('object::fullById', async () => {
const fullObjects = [await api.object.fullById({ id: 1 })]

const prepareData = prepareGenericData(evolve({
eqLogics: prepareGenericData(evolve({
cmds: prepareGenericData(identity),
})),
}))

expect(prepareData(fullObjects)).toMatchSnapshot()
})

recordTest('[error] object::fullById', () => {
return expect(api.object.fullById({ id: -1 })).rejects.toThrow('Objet introuvable : -1')
})
})
})
})

0 comments on commit a751019

Please sign in to comment.