Skip to content

Commit 3caefed

Browse files
author
rharlev
committed
basic version
1 parent ea1070b commit 3caefed

File tree

4 files changed

+156
-0
lines changed

4 files changed

+156
-0
lines changed

__init__.py

Whitespace-only changes.

jsonbin.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import json
2+
import requests
3+
4+
5+
6+
class JsonBin:
7+
RECORD_ID_KEY = "_id"
8+
9+
def __init__(self, service_host="https://jsonbox.io"):
10+
self.service_host = service_host
11+
12+
def _get_url(self, box_id, collection_or_record):
13+
if collection_or_record:
14+
url = "{0}/{1}/{2}".format(self.service_host, box_id, collection_or_record)
15+
else:
16+
url = "{0}/{1}".format(self.service_host, box_id)
17+
return url
18+
19+
def get_record_id(self, data):
20+
return data[self.RECORD_ID_KEY]
21+
22+
def read(self, box_id, collection_or_record=None):
23+
url = self._get_url(box_id, collection_or_record)
24+
25+
response = requests.get(url)
26+
if response.ok:
27+
json_data = response.json()
28+
return json_data
29+
else:
30+
return False
31+
32+
def write(self, data, box_id, collection=None):
33+
url = self._get_url(box_id, collection)
34+
35+
response = requests.post(url, json=data)
36+
if response.ok:
37+
json_data = response.json()
38+
return json_data
39+
else:
40+
return False
41+
42+
def update(self, data, box_id, record_id):
43+
url = self._get_url(box_id, record_id)
44+
45+
response = requests.put(url, json=data)
46+
if response.ok:
47+
json_data = response.json()
48+
return json_data
49+
else:
50+
return False
51+
52+
def delete(self, box_id, record_id):
53+
url = self._get_url(box_id, record_id)
54+
55+
response = requests.delete(url)
56+
if response.ok:
57+
json_data = response.json()
58+
return json_data
59+
else:
60+
return False

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
requests

tests/test_jsonbin.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import unittest
2+
from jsonbin import JsonBin
3+
4+
TEST_BOX_ID = "test_gywvcu8ew7t7gascbascbuwd"
5+
TEST_COLLECTION_ID = "collection_427453"
6+
TEST_RECORD_ID = "test_sjdgfygsf2347623564twfgyu"
7+
TEST_DATA_KEY_1 = "aaa"
8+
TEST_DATA_VALUE_1 = "bbb"
9+
TEST_DATA_KEY_2 = "ccc"
10+
TEST_DATA_VALUE_2 = "ddd"
11+
12+
13+
class MyTestCase(unittest.TestCase):
14+
def setUp(self):
15+
self.jb = JsonBin()
16+
17+
def test_read_record(self):
18+
json_data = self.jb.read(TEST_BOX_ID, "5d80031fca4f06001791fb28")
19+
self.assertIsNotNone(json_data)
20+
self.assertFalse(isinstance(json_data, list))
21+
print(json_data)
22+
23+
def test_read_box(self):
24+
json_data = self.jb.read(TEST_BOX_ID)
25+
self.assertIsNotNone(json_data)
26+
self.assertTrue(isinstance(json_data, list))
27+
28+
print(json_data)
29+
30+
def test_write_box(self):
31+
data = {
32+
TEST_DATA_KEY_1: TEST_DATA_VALUE_1
33+
}
34+
json_data = self.jb.write(data, TEST_BOX_ID)
35+
self.assertIsNotNone(json_data)
36+
self.assertEqual(json_data[TEST_DATA_KEY_1], TEST_DATA_VALUE_1)
37+
38+
print(json_data)
39+
40+
def test_write_box_collection(self):
41+
data = {
42+
TEST_DATA_KEY_1: TEST_DATA_VALUE_1
43+
}
44+
json_data = self.jb.write(data, TEST_BOX_ID, TEST_COLLECTION_ID)
45+
self.assertIsNotNone(json_data)
46+
self.assertEqual(json_data[TEST_DATA_KEY_1], TEST_DATA_VALUE_1)
47+
48+
print(json_data)
49+
50+
def test_update(self):
51+
data = {
52+
TEST_DATA_KEY_1: TEST_DATA_VALUE_1
53+
}
54+
json_data = self.jb.write(data, TEST_BOX_ID)
55+
self.assertIsNotNone(json_data)
56+
self.assertEqual(json_data[TEST_DATA_KEY_1], TEST_DATA_VALUE_1)
57+
58+
record_id = self.jb.get_record_id(json_data)
59+
60+
json_data = self.jb.read(TEST_BOX_ID, record_id)
61+
self.assertIsNotNone(json_data)
62+
self.assertEqual(json_data[TEST_DATA_KEY_1], TEST_DATA_VALUE_1)
63+
64+
data = {
65+
TEST_DATA_KEY_2: TEST_DATA_VALUE_2
66+
}
67+
self.jb.update(data, TEST_BOX_ID, record_id)
68+
69+
json_data = self.jb.read(TEST_BOX_ID, record_id)
70+
self.assertIsNotNone(json_data)
71+
self.assertEqual(json_data[TEST_DATA_KEY_2], TEST_DATA_VALUE_2)
72+
73+
print(json_data)
74+
75+
def test_delete(self):
76+
data = {
77+
TEST_DATA_KEY_1: TEST_DATA_VALUE_1
78+
}
79+
json_data = self.jb.write(data, TEST_BOX_ID)
80+
self.assertIsNotNone(json_data)
81+
self.assertEqual(json_data[TEST_DATA_KEY_1], TEST_DATA_VALUE_1)
82+
83+
record_id = self.jb.get_record_id(json_data)
84+
85+
json_data = self.jb.delete(TEST_BOX_ID, record_id)
86+
self.assertIsNotNone(json_data)
87+
88+
reuslt = self.jb.read(TEST_BOX_ID, record_id)
89+
self.assertFalse(reuslt)
90+
91+
print(json_data)
92+
93+
94+
if __name__ == '__main__':
95+
unittest.main()

0 commit comments

Comments
 (0)