Skip to content

Commit fe08fb0

Browse files
authored
Merge pull request leancloud#229 from aisk/cloudfunc
refactor: remove leancloud/engine/cloudfunc.py to leancloud/cloudfunc.py
2 parents 5002a50 + a9730a3 commit fe08fb0

3 files changed

Lines changed: 118 additions & 98 deletions

File tree

leancloud/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717

1818
from . import client
1919
from . import push
20+
from . import cloudfunc
2021
from .acl import ACL
2122
from .client import init
2223
from .client import use_master_key
2324
from .client import use_production
2425
from .client import use_region
2526
from .engine import Engine
2627
from .engine import LeanEngineError
27-
from .engine import cloudfunc
2828
from .engine.https_redirect_middleware import HttpsRedirectMiddleware
2929
from .errors import LeanCloudError
3030
from .errors import LeanCloudWarning

leancloud/cloudfunc.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# coding: utf-8
2+
3+
from __future__ import absolute_import
4+
from __future__ import division
5+
from __future__ import print_function
6+
7+
import leancloud
8+
from leancloud import utils
9+
from leancloud._compat import string_types
10+
11+
12+
__author__ = 'asaka <lan@leancloud.rocks>'
13+
14+
15+
def run(_cloud_func_name, **params):
16+
"""
17+
调用 LeanEngine 上的远程代码
18+
19+
:param name: 需要调用的远程 Cloud Code 的名称
20+
:type name: string_types
21+
:param params: 调用参数
22+
:return: 调用结果
23+
"""
24+
response = leancloud.client.post('/functions/{0}'.format(_cloud_func_name), params=params)
25+
content = response.json()
26+
return utils.decode(None, content)['result']
27+
28+
29+
def _run_in_local(_cloud_func_name, **params):
30+
result = leancloud.engine.leanengine.dispatch_cloud_func(_cloud_func_name, False, params)
31+
return utils.decode(None, result)
32+
33+
34+
run.remote = run
35+
run.local = _run_in_local
36+
37+
38+
def rpc(_cloud_rpc_name, **params):
39+
"""
40+
调用 LeanEngine 上的远程代码
41+
与cloudfunc.run 类似,但是允许传入 leancloud.Object 作为参数,也允许传入 leancloud.Object 作为结果
42+
43+
:param name: 需要调用的远程 Cloud Code 的名称
44+
:type name: basestring
45+
:param params: 调用参数
46+
:return: 调用结果
47+
"""
48+
encoded_params = {}
49+
for key, value in params.items():
50+
if isinstance(params, leancloud.Object):
51+
encoded_params[key] = utils.encode(value._dump())
52+
else:
53+
encoded_params[key] = utils.encode(value)
54+
response = leancloud.client.post('/call/{}'.format(_cloud_rpc_name), params=encoded_params)
55+
content = response.json()
56+
return utils.decode(None, content['result'])
57+
58+
59+
def _rpc_in_local(_cloud_rpc_name, **params):
60+
result = leancloud.engine.leanengine.dispatch_cloud_func(_cloud_rpc_name, True, params)
61+
return utils.decode(None, result)
62+
63+
64+
rpc.remote = rpc
65+
rpc.local = _rpc_in_local
66+
67+
68+
def request_sms_code(phone_number, idd='+86', sms_type='sms', template=None, params=None):
69+
"""
70+
请求发送手机验证码
71+
72+
:param phone_number: 需要验证的手机号码
73+
:param idd: 号码的所在地国家代码,默认为中国(+86)
74+
:param sms_type: 验证码发送方式,'voice' 为语音,'sms' 为短信
75+
:return: None
76+
"""
77+
if not isinstance(phone_number, string_types):
78+
raise TypeError('phone_number must be a string')
79+
80+
data = {
81+
'mobilePhoneNumber': phone_number,
82+
'smsType': sms_type,
83+
'IDD': idd,
84+
}
85+
86+
if template is not None:
87+
params['template'] = template
88+
89+
if params is not None:
90+
data.update(params)
91+
92+
leancloud.client.post('/requestSmsCode', params=data)
93+
94+
95+
def verify_sms_code(phone_number, code):
96+
"""
97+
获取到手机验证码之后,验证验证码是否正确。如果验证失败,抛出异常。
98+
99+
:param phone_number: 需要验证的手机号码
100+
:param code: 接受到的验证码
101+
:return: None
102+
"""
103+
params = {
104+
'mobilePhoneNumber': phone_number,
105+
}
106+
leancloud.client.post('/verifySmsCode/{0}'.format(code), params=params)
107+
return True

leancloud/engine/cloudfunc.py

Lines changed: 10 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,16 @@
11
# coding: utf-8
22

3-
import leancloud
4-
from leancloud import utils
5-
from leancloud._compat import string_types
6-
7-
8-
__author__ = 'asaka <lan@leancloud.rocks>'
9-
10-
11-
def run(_cloud_func_name, **params):
12-
"""
13-
调用 LeanEngine 上的远程代码
14-
15-
:param name: 需要调用的远程 Cloud Code 的名称
16-
:type name: string_types
17-
:param params: 调用参数
18-
:return: 调用结果
19-
"""
20-
response = leancloud.client.post('/functions/{0}'.format(_cloud_func_name), params=params)
21-
content = response.json()
22-
return utils.decode(None, content)['result']
23-
24-
25-
def _run_in_local(_cloud_func_name, **params):
26-
result = leancloud.engine.leanengine.dispatch_cloud_func(_cloud_func_name, False, params)
27-
return utils.decode(None, result)
28-
29-
30-
run.remote = run
31-
run.local = _run_in_local
32-
33-
34-
def rpc(_cloud_rpc_name, **params):
35-
"""
36-
调用 LeanEngine 上的远程代码
37-
与cloudfunc.run 类似,但是允许传入 leancloud.Object 作为参数,也允许传入 leancloud.Object 作为结果
3+
from __future__ import absolute_import
4+
from __future__ import division
5+
from __future__ import print_function
386

39-
:param name: 需要调用的远程 Cloud Code 的名称
40-
:type name: basestring
41-
:param params: 调用参数
42-
:return: 调用结果
43-
"""
44-
encoded_params = {}
45-
for key, value in params.items():
46-
if isinstance(params, leancloud.Object):
47-
encoded_params[key] = utils.encode(value._dump())
48-
else:
49-
encoded_params[key] = utils.encode(value)
50-
response = leancloud.client.post('/call/{}'.format(_cloud_rpc_name), params=encoded_params)
51-
content = response.json()
52-
return utils.decode(None, content['result'])
53-
54-
55-
def _rpc_in_local(_cloud_rpc_name, **params):
56-
result = leancloud.engine.leanengine.dispatch_cloud_func(_cloud_rpc_name, True, params)
57-
return utils.decode(None, result)
58-
59-
60-
rpc.remote = rpc
61-
rpc.local = _rpc_in_local
62-
63-
64-
def request_sms_code(phone_number, idd='+86', sms_type='sms', template=None, params=None):
65-
"""
66-
请求发送手机验证码
67-
68-
:param phone_number: 需要验证的手机号码
69-
:param idd: 号码的所在地国家代码,默认为中国(+86)
70-
:param sms_type: 验证码发送方式,'voice' 为语音,'sms' 为短信
71-
:return: None
72-
"""
73-
if not isinstance(phone_number, string_types):
74-
raise TypeError('phone_number must be a string')
75-
76-
data = {
77-
'mobilePhoneNumber': phone_number,
78-
'smsType': sms_type,
79-
'IDD': idd,
80-
}
81-
82-
if template is not None:
83-
params['template'] = template
84-
85-
if params is not None:
86-
data.update(params)
87-
88-
leancloud.client.post('/requestSmsCode', params=data)
7+
import warnings
898

9+
import leancloud
9010

91-
def verify_sms_code(phone_number, code):
92-
"""
93-
获取到手机验证码之后,验证验证码是否正确。如果验证失败,抛出异常。
11+
warnings.warn('leancloud.engine.cloudfunc should not be used any more, please use leancloud.cloudfunc instead', leancloud.errors.LeanCloudWarning)
9412

95-
:param phone_number: 需要验证的手机号码
96-
:param code: 接受到的验证码
97-
:return: None
98-
"""
99-
params = {
100-
'mobilePhoneNumber': phone_number,
101-
}
102-
leancloud.client.post('/verifySmsCode/{0}'.format(code), params=params)
103-
return True
13+
run = leancloud.cloudfunc.run
14+
rpc = leancloud.cloudfunc.rpc
15+
request_sms_code = leancloud.cloudfunc.request_sms_code
16+
verify_sms_code = leancloud.cloudfunc.verify_sms_code

0 commit comments

Comments
 (0)