def update_record(domain, value, record_type="A"): """ 更新记录 """ info(">>>>>%s(%s)", domain, record_type) result = {} if not Config.TOKEN: # 此处使用 TOKEN 参数透传 POST 参数所用的 JSON method = "GET" URLObj = urlparse(Config.ID) path = URLObj.path query = dict(parse_qsl(URLObj.query)) params = replace_params(domain, record_type, value, query) else: method = "POST" URLObj = urlparse(Config.ID) path = URLObj.path params = replace_params(domain, record_type, value, jsondecode(Config.TOKEN)) res = request(method, path, params) if res: result = "Callback Request Success!\n" + res else: result = "Callback Request Fail!\n" return result
def request(action, param=None, **params): """ 发送请求数据 """ if param: params.update(param) params = signature(params) info("%s : params:%s", action, params) if PROXY: conn = HTTPSConnection(PROXY) conn.set_tunnel(API_SITE, 443) else: conn = HTTPSConnection(API_SITE) conn.request(API_METHOD, '/api/' + action + '/', urlencode(params), {"Content-type": "application/x-www-form-urlencoded"}) response = conn.getresponse() result = response.read() conn.close() if response.status < 200 or response.status >= 300: raise Exception(result) else: data = jsondecode(result.decode('utf8')) debug('%s : result:%s', action, data) if data.get('code') != 0: raise Exception("api error:", data.get('message')) data = data.get('data') if data is None: raise Exception('response data is none') return data
def request(param=None, **params): """ 发送请求数据 """ if param: params.update(param) params = dict((k, params[k]) for k in params if params[k] is not None) params = signature(params) info("%s: %s", API.SITE, params) if Config.PROXY: conn = HTTPSConnection(Config.PROXY) conn.set_tunnel(API.SITE, 443) else: conn = HTTPSConnection(API.SITE) conn.request(API.METHOD, '/', urlencode(params), {"Content-type": "application/x-www-form-urlencoded"}) response = conn.getresponse() data = response.read().decode('utf8') conn.close() if response.status < 200 or response.status >= 300: warning('%s : error[%d]: %s', params['Action'], response.status, data) raise Exception(data) else: data = jsondecode(data) debug('%s : result:%s', params['Action'], data) return data
def request(action, param=None, **params): """ 发送请求数据 """ if param: params.update(param) params.update({API.TOKEN_PARAM: '***', 'format': 'json'}) info("%s/%s : %s", API.SITE, action, params) params[API.TOKEN_PARAM] = "%s,%s" % (ID, TOKEN) if PROXY: conn = HTTPSConnection(PROXY) conn.set_tunnel(API.SITE, 443) else: conn = HTTPSConnection(API.SITE) conn.request(API.METHOD, '/' + action, urlencode(params), {"Content-type": "application/x-www-form-urlencoded"}) response = conn.getresponse() res = response.read() conn.close() if response.status < 200 or response.status >= 300: warning('%s : error:%s', action, res) raise Exception(res) else: data = jsondecode(res.decode('utf8')) debug('%s : result:%s', action, data) if not data: raise Exception("empty response") elif data.get("status", {}).get("code") == "1": return data else: raise Exception(data.get('status', {}))
def request(param=None, **params): """ 发送请求数据 """ if param: params.update(param) params = signature(params) debug("params:%s", params) if PROXY: conn = HTTPSConnection(PROXY) conn.set_tunnel(API_SITE, 443) else: conn = HTTPSConnection(API_SITE) conn.request(API_METHOD, '/', urlencode(params), {"Content-type": "application/x-www-form-urlencoded"}) response = conn.getresponse() data = response.read() conn.close() if response.status < 200 or response.status >= 300: warn('%s : error:%s', params['Action'], data) raise Exception(data) else: data = jsondecode(data.decode('utf8')) debug('%s : result:%s', params['Action'], data) return data
def handler(event, context): data = b64decode(event['awslogs']['data']) payload = jsondecode(gunzip(data)) instance_id = payload['logStream'] print('Terminating instance "{}"'.format(instance_id)) ec2.terminate_instances(InstanceIds=[instance_id], )
def request(method, action, param=None, **params): """ 发送请求数据 """ if param: params.update(param) params = dict((k, params[k]) for k in params if params[k] is not None) info("%s/%s : %s", API.SITE, action, params) if Config.PROXY: conn = HTTPSConnection(Config.PROXY) conn.set_tunnel(API.SITE, 443) else: conn = HTTPSConnection(API.SITE) if method in ['PUT', 'POST', 'PATCH']: # 从public_v(4,6)获取的IP是bytes类型,在json.dumps时会报TypeError params['content'] = str(params.get('content')) params = jsonencode(params) else: # (GET, DELETE) where DELETE doesn't require params in Cloudflare if params: action += '?' + urlencode(params) params = None if not Config.ID: headers = { "Content-type": "application/json", "Authorization": "Bearer " + Config.TOKEN } else: headers = { "Content-type": "application/json", "X-Auth-Email": Config.ID, "X-Auth-Key": Config.TOKEN } conn.request(method, '/client/v4/zones' + action, params, headers) response = conn.getresponse() res = response.read().decode('utf8') conn.close() if response.status < 200 or response.status >= 300: warning('%s : error[%d]:%s', action, response.status, res) raise Exception(res) else: data = jsondecode(res) debug('%s : result:%s', action, data) if not data: raise Exception("Empty Response") elif data.get('success'): return data.get('result', [{}]) else: raise Exception(data.get('errors', [{}]))
def request(method, action, param=None, **params): """ 发送请求数据 """ if param: params.update(param) info("$s %s : params:%s", action, params) if PROXY: conn = HTTPSConnection(PROXY) conn.set_tunnel(API_SITE, 443) else: conn = HTTPSConnection(API_SITE) if method in ['PUT', 'POST', 'PATCH']: # 从public_v(4,6)获取的IP是bytes类型,在json.dumps时会报TypeError params['content'] = str(params.get('content')) params = jsonencode(params) else: # (GET, DELETE) where DELETE doesn't require params in Cloudflare if params: action += '?' + urlencode(params) params = None conn.request( method, '/client/v4/zones' + action, params, { "Content-type": "application/json", "X-Auth-Email": ID, "X-Auth-Key": TOKEN }) response = conn.getresponse() res = response.read() conn.close() if response.status < 200 or response.status >= 300: raise Exception(res) else: data = jsondecode(res.decode('utf8')) debug('%s : result:%s', action, data) if not data: raise Exception("Empty Response") elif data.get('success'): return data.get('result', [{}]) else: raise Exception(data.get('errors', [{}]))
def request(action, param=None, **params): """ 发送请求数据 """ if param: params.update(param) params = dict((k, params[k]) for k in params if params[k] is not None) params.update({API.TOKEN_PARAM: '***', 'format': 'json'}) info("%s/%s : %s", API.SITE, action, params) params[API.TOKEN_PARAM] = "%s,%s" % (Config.ID, Config.TOKEN) params[API.LENGTH] = "3000" #添加参数 if Config.PROXY: conn = HTTPSConnection(Config.PROXY) conn.set_tunnel(API.SITE, 443) else: conn = HTTPSConnection(API.SITE) conn.request( API.METHOD, '/' + action, urlencode(params), { "Content-type": "application/x-www-form-urlencoded", "User-Agent": "DDNS/%s ([email protected])" % environ.get("DDNS_VERSION", "1.0.0") }) response = conn.getresponse() res = response.read().decode('utf8') conn.close() if response.status < 200 or response.status >= 300: warning('%s : error[%d]:%s', action, response.status, res) raise Exception(res) else: data = jsondecode(res) debug('%s : result:%s', action, data) if not data: raise Exception("empty response") elif data.get("status", {}).get("code") == "1": return data else: raise Exception(data.get('status', {}))
def request(action, param=None, **params): """ 发送请求数据 """ if param: params.update(param) params.update({'login_token': '***', 'format': 'json'}) info("%s : params:%s", action, params) params['user_token'] = "%s,%s" % (ID, TOKEN) if PROXY: conn = HTTPSConnection(PROXY) conn.set_tunnel(API_SITE, 443) else: conn = HTTPSConnection(API_SITE) conn.request( API_METHOD, '/' + action, urlencode(params), { "Content-type": "application/x-www-form-urlencoded", "User-Agent": "DDNS Client/1.0" }) response = conn.getresponse() res = response.read() conn.close() if response.status < 200 or response.status >= 300: raise Exception(res) else: data = jsondecode(res.decode('utf8')) debug('%s : result:%s', action, data) if not data: raise Exception("empty response") elif data.get("status", {}).get("code") == "1": return data else: raise Exception(data.get('status', {}))
from urllib.request import urlopen from urllib.parse import urlencode from json import loads as jsondecode from time import time EventSourceURL = 'http://tagpro.lol/stream/updates' DataDropURL = 'https://script.google.com/macros/s/AKfycbznkUUI6B9nPjgU9XCBSPFdYwBqNEv3fv6nQc79YrDGZOkdhfaP/exec' # Open the connection to the Event Source es = urlopen(EventSourceURL) while True: try: line = [_.strip() for _ in es.readline().decode('utf-8').split(':', 1)] if line[0] == 'data' and line[1] != '"connected"': datalist = jsondecode(line[1]) for data in datalist: params = urlencode(data) result = urlopen(DataDropURL + '?' + params) print('Data sent. id:', data['id']) except Exception as e: print('Error:', e)