Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd53b945

Browse files
author
Vishal Rana
committed
Added store service
Signed-off-by: Vishal Rana <vishal.rana@verizon.com>
1 parent5a62159 commitd53b945

File tree

3 files changed

+94
-1
lines changed

3 files changed

+94
-1
lines changed

‎labstack/__init__.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
from .clientimportClient
2-
from .emailimportEmailMessage,EmailError
2+
from .emailimportEmailMessage,EmailError
3+
from .storeimportStoreError

‎labstack/client.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
importrequests
22
from .emailimport_Email
33
from .logimport_Log
4+
from .storeimport_Store
45

56
classClient():
67
def__init__(self,api_key):
@@ -16,6 +17,9 @@ def log(self):
1617
log.app_id=self.app_id
1718
log.app_name=self.app_name
1819
returnlog
20+
21+
defstore(self):
22+
return_Store(self.interceptor)
1923

2024
class_Interceptor(requests.auth.AuthBase):
2125
def__init__(self,api_key):

‎labstack/store.py‎

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
importos
2+
importrequests
3+
importjson
4+
from .commonimportAPI_URL
5+
6+
class_Store():
7+
def__init__(self,interceptor):
8+
self.path='/store'
9+
self.interceptor=interceptor
10+
11+
definsert(self,key,value):
12+
entry=StoreEntry(key,value)
13+
r=requests.post(API_URL+self.path,auth=self.interceptor,data=entry.to_json())
14+
data=r.json()
15+
ifnot200<=r.status_code<300:
16+
raiseStoreError(data['code'],data['message'])
17+
returnStoreEntry.from_json(data)
18+
19+
defget(self,key):
20+
r=requests.get(API_URL+self.path+'/'+key,auth=self.interceptor)
21+
data=r.json()
22+
ifnot200<=r.status_code<300:
23+
raiseStoreError(data['code'],data['message'])
24+
returnStoreEntry.from_json(data)
25+
26+
defquery(self,filters='',limit=None,offset=None):
27+
params= {
28+
'filters':filters,
29+
'limit':limit,
30+
'offset':offset
31+
}
32+
r=requests.get(API_URL+self.path,auth=self.interceptor,params=params)
33+
data=r.json()
34+
ifnot200<=r.status_code<300:
35+
raiseStoreError(data['code'],data['message'])
36+
returnStoreQueryResponse.from_json(data)
37+
38+
defupdate(self,key,value):
39+
entry=StoreEntry(key,value)
40+
r=requests.put(API_URL+self.path+'/'+key,auth=self.interceptor,data=entry.to_json())
41+
ifnot200<=r.status_code<300:
42+
raiseStoreError(data['code'],data['message'])
43+
44+
defdelete(self,key):
45+
r=requests.delete(API_URL+self.path+'/'+key,auth=self.interceptor)
46+
ifnot200<=r.status_code<300:
47+
raiseStoreError(data['code'],data['message'])
48+
49+
classStoreEntry():
50+
def__init__(self,key=None,value=None):
51+
self.key=key
52+
self.value=value
53+
self.created_at=None
54+
self.updated_at=None
55+
56+
defto_json(self):
57+
returnjson.dumps({
58+
'key':self.key,
59+
'value':self.value
60+
})
61+
62+
@classmethod
63+
deffrom_json(self,entry):
64+
se=StoreEntry(entry['key'],entry['value'])
65+
se.created_at=entry['created_at']
66+
se.updated_at=entry['updated_at']
67+
returnse
68+
69+
classStoreQueryResponse():
70+
def__init__(self):
71+
self.total=0
72+
self.entries= []
73+
74+
@classmethod
75+
deffrom_json(self,response):
76+
qr=StoreQueryResponse()
77+
qr.total=response['total']
78+
qr.entries=response['entries']
79+
returnqr
80+
81+
classStoreError(Exception):
82+
def__init__(self,code,message):
83+
self.code=code
84+
self.message=message
85+
86+
def__str__(self):
87+
return'store error, code={0}, message={1}'.format(self.code,self.message)
88+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp