def put_request(path, data): settings = get_shopify_settings() s = get_request_session() url = get_shopify_url(path, settings) r = s.put(url, data=json.dumps(data), headers=get_header(settings)) r.raise_for_status() return r.json()
def get_request(path): settings = get_shopify_settings() s = get_request_session() url = 'https://{}:{}@{}/{}'.format(settings['api_key'], settings['password'], settings['shopify_url'], path) r = s.get(url) r.raise_for_status() return r.json()
def get_api_response(params): s = get_request_session() response = s.post(get_api_url(), data=params) response = urlparse.parse_qs(response.text) if response.get("ACK")[0]=="Success": return response else: raise PaypalException(response)
def post_request(path, data): settings = get_shopify_settings() s = get_request_session() url = get_shopify_url(path, settings) r = s.post(url, data=json.dumps(data), headers=get_header(settings)) check_api_call_limit(r) r.raise_for_status() return r.json()
def get_request(path, settings=None): if not settings: settings = get_shopify_settings() s = get_request_session() url = get_shopify_url(path, settings) r = s.get(url, headers=get_header(settings)) r.raise_for_status() return r.json()
def delete_request(path): s = get_request_session() wcapi = API(url=settings['woocommerce_url'], consumer_key=settings['api_key'], consumer_secret=settings['api_secret'], verify_ssl=settings['verify_ssl'], wp_api=True, version="wc/v3", timeout=1000) r = wcapi.post(path) r.raise_for_status()
def post_request(url, data, auth=None): res = None if not auth: return try: s = get_request_session() res = s.post(url, data=data, auth=(auth.api_key, auth.api_secret)) res.raise_for_status() return res.json() except Exception, exc: raise_exception(res, exc)
def sync_item_from_shopify(shopify_settings, item): url = get_shopify_url( "/admin/products/{0}.json".format(item.get("product_id")), shopify_settings) session = get_request_session() try: res = session.get(url, headers=get_header(shopify_settings)) res.raise_for_status() shopify_item = res.json()["product"] make_item(shopify_settings.warehouse, shopify_item) except Exception as e: raise e
def get_request(path, settings=None): if not settings: settings = get_woocommerce_settings() s = get_request_session() url = get_woocommerce_url(path, settings) r = s.get(url, headers=get_header(settings)) wcapi = API(url=settings['woocommerce_url'], consumer_key=settings['api_key'], consumer_secret=settings['password'], verify_ssl=False) r = wcapi.get(path) """check_api_call_limit(r)""" r.raise_for_status() return r.json()
def get_request(self, url, auth=None, data=None): if not auth: auth = '' if not data: data = {} try: s = get_request_session() frappe.flags.integration_request = s.get(url, data={}, auth=auth) frappe.flags.integration_request.raise_for_status() return frappe.flags.integration_request.json() except Exception, exc: frappe.log_error(frappe.get_traceback()) raise exc
def unregister_webhooks(self): session = get_request_session() deleted_webhooks = [] for d in self.webhooks: url = get_shopify_url('admin/api/2019-04/webhooks.json'.format(d.webhook_id), self) try: res = session.delete(url, headers=get_header(self)) res.raise_for_status() deleted_webhooks.append(d) except Exception as e: frappe.log_error(message=frappe.get_traceback(), title=e) for d in deleted_webhooks: self.remove(d)
def send_notification_data_ios(user, title, body, data, badge=0): s = get_request_session() auth_key = get_auth_key() if auth_key == "": frappe.throw("Server key has been not set") else: frappe_userid = _get_topic(user) if frappe_userid != "": header = { "Authorization": "key={}".format(auth_key), "Content-Type": "application/json" } topic = "/topics/{}_ios".format(frappe_userid) content = { "to": topic, "notification": { "body": body, "title": title, "badge": badge, "mutable_content": True, "sound": "default" }, "priority": "high" } content['notification'].update(data) res = s.post(url=url, headers=header, data=json.dumps(content)) #logging response_code = res.status_code if response_code == 200: res_json = res.json() message_id = res_json["message_id"] log_notification_success(response_code, message_id, user, topic, title, body, json.dumps(content), json.dumps(data), badge) frappe.msgprint("iOS Success notified") else: error = res.text log_notification_failed(response_code, user, topic, title, body, error) frappe.throw(error) else: frappe.throw("User not found")
def post_request(self, url, auth=None, data=None): if not auth: auth = '' if not data: data = {} try: s = get_request_session() res = s.post(url, data=data, auth=auth) res.raise_for_status() if res.headers.get("content-type") == "text/plain; charset=utf-8": return urlparse.parse_qs(res.text) return res.json() except Exception, exc: frappe.log_error() raise exc
def make_get_request(url, auth=None, headers=None, data=None): if not auth: auth = '' if not data: data = {} if not headers: headers = {} try: s = get_request_session() frappe.flags.integration_request = s.get(url, data={}, auth=auth, headers=headers) frappe.flags.integration_request.raise_for_status() return frappe.flags.integration_request.json() except Exception as exc: frappe.log_error(frappe.get_traceback()) raise exc
def send_notification_gilang(auth_key,data): try: s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" # user = frappe.get_doc("User",user) # frappe_userid = user.social_logins[0].userid + "_android" frappe_userid = "767f244ce59f92203916b735a442a643b9a6df0"+"_android" header = {"Authorization": "key={}".format(auth_key),"Content-Type": "application/json"} content = { "to":"/topics/{}".format(frappe_userid), "data":data } res = s.post(url=url,headers=header,data=json.dumps(content)) return res except: return "Error"
def register_webhooks(self): webhooks = ["orders/create", "orders/paid", "orders/fulfilled"] # url = get_shopify_url('admin/webhooks.json', self) created_webhooks = [d.method for d in self.webhooks] url = get_shopify_url('admin/api/2019-04/webhooks.json', self) for method in webhooks: session = get_request_session() try: d = session.post(url, data=json.dumps({ "webhook": { "topic": method, "address": get_webhook_address(connector_name='shopify_connection', method='store_request_data'), "format": "json" } }), headers=get_header(self)) d.raise_for_status() self.update_webhook_table(method, d.json()) except Exception as e: make_shopify_log(status="Warning", message=e, exception=False)
def gps_update(self, method): data = frappe.db.sql( """select vendor from `tabDriver` where name='{}' """.format( self.driver), as_list=1) s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" if (len(data) > 0): users = data[0] #vendor header = { "Authorization": "key=AAAA7ndto_Q:APA91bHVikGANVsFaK2UEKLVXQEA1cleaeM7DlLLuaA87jEVhBGNTe4t8fi0h5Ttc7jRkoiEkZYlrw7Idsn9S9ZfDFtl1S3H3j21Xs8VXtANCDjycLLkMAyLLdHKaBfi3NYc3Z8VIxo8", "Content-Type": "application/json" } content = { "to": "/topics/{}".format(users[0].replace(" ", "_").replace( "-", "_").replace("(", "").replace(")", "").replace( ".", "_").replace("@", "_").replace("-", "_").replace( "(", "").replace(")", "").replace(".", "_").replace("@", "_")), "data": { "subject": "{}".format(users[0].replace(" ", "_").replace( "-", "_").replace("(", "").replace(")", "").replace( ".", "_").replace("@", "_")), #notification "title": "Perubahan GPS dari {}".format(self.driver), #data "driver": "{}".format(self.driver), "action": "GPS_UPDATE" } } s.post(url=url, headers=header, data=json.dumps(content))
def test_notify(): s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" header = { "Authorization": "key=AAAA7ndto_Q:APA91bHVikGANVsFaK2UEKLVXQEA1cleaeM7DlLLuaA87jEVhBGNTe4t8fi0h5Ttc7jRkoiEkZYlrw7Idsn9S9ZfDFtl1S3H3j21Xs8VXtANCDjycLLkMAyLLdHKaBfi3NYc3Z8VIxo8", "Content-Type": "application/json" } content = { "to": "/topics/PT_CocaCola_Amatil_Indonesia", "notification": { "title": "title", "body": "body" }, "data": { "job_order": "JO-20171000037" } } gg = s.post(url=url, headers=header, data=json.dumps(content)) print gg.content
def make_post_request(url, auth=None, headers=None, data=None): if not auth: auth = '' if not data: data = {} if not headers: headers = {} try: s = get_request_session() frappe.flags.integration_request = s.post(url, data=data, auth=auth, headers=headers) frappe.flags.integration_request.raise_for_status() if frappe.flags.integration_request.headers.get("content-type") == "text/plain; charset=utf-8": return urlparse.parse_qs(frappe.flags.integration_request.text) return frappe.flags.integration_request.json() except Exception as exc: frappe.log_error() raise exc
def send_notification_android(user,auth_key,data): try: s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" user = frappe.get_doc("User",user) if (len(user.social_logins) > 0): frappe_userid = user.social_logins[0].userid + "_android" header = {"Authorization": "key={}".format(auth_key),"Content-Type": "application/json"} content = { "to":"/topics/{}".format(frappe_userid), "data":data } res = s.post(url=url,headers=header,data=json.dumps(content)) print(res) return res except: return "Error"
def unregister_webhooks(self): session = get_request_session() deleted_webhooks = [] for d in self.webhooks: url = get_shopify_url('admin/api/2021-04/webhooks/{0}.json'.format(d.webhook_id), self) try: res = session.delete(url, headers=get_header(self)) res.raise_for_status() deleted_webhooks.append(d) except HTTPError as e: error_message = res.json().get('errors', e) make_shopify_log(status="Warning", exception=error_message, rollback=True) except Exception as e: frappe.log_error(message=e, title='Shopify Webhooks Issue') for d in deleted_webhooks: self.remove(d)
def send_notification_android(user, title, body): s = get_request_session() auth_key = get_auth_key() if auth_key == "": frappe.throw("Server key has been not set") else: frappe_userid = _get_topic(user) if frappe_userid != "": header = { "Authorization": "key={}".format(auth_key), "Content-Type": "application/json" } topic = "/topics/{}_android".format(frappe_userid) content = { "to": topic, "notification": { "body": body, "title": title } } res = s.post(url=url, headers=header, data=json.dumps(content)) #logging response_code = res.status_code if response_code == 200: res_json = res.json() message_id = res_json["message_id"] log_notification_success(response_code, message_id, user, topic, title, body, json.dumps(content)) frappe.msgprint("Android Success notified") else: error = res.text log_notification_failed(response_code, user, topic, title, body, error) frappe.throw(error) else: frappe.throw("User not found")
def notify(): list_to = frappe.db.sql( """select HOUR(TIMEDIFF(NOW(),j.modified)) as "lama" ,j.principle , j.name , j.reference , j.modified , j.vendor , j.owner ,v.email from `tabJob Order` j left join `tabVendor` v on j.vendor = v.name where HOUR(TIMEDIFF(NOW(),j.modified)) IN (4,9) and j.status="Menunggu Persetujuan Vendor" order by j.modified """, as_dict=1) s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" header = { "Authorization": "key=AAAA7ndto_Q:APA91bHVikGANVsFaK2UEKLVXQEA1cleaeM7DlLLuaA87jEVhBGNTe4t8fi0h5Ttc7jRkoiEkZYlrw7Idsn9S9ZfDFtl1S3H3j21Xs8VXtANCDjycLLkMAyLLdHKaBfi3NYc3Z8VIxo8", "Content-Type": "application/json" } for row in list_to: email = row['email'] if email == "Administrator": continue subject = "" if row['lama'] == "4": subject = "Job Order belum di terima lebih dari 4 jam" msg = "{} <{}> belum di terima lebih dari 4 jam".format( row['name'], row['reference']) else: subject = "Job Order belum di terima lebih dari 9 jam" msg = "{} <{}> belum di terima lebih dari 9 jam".format( row['name'], row['reference']) content = { "to": "/topics/{}".format(row['vendor'].replace(" ", "_")), "data": { "subject": "{}".format(row['vendor'].replace(" ", "_")), #notification "title": row["name"], "body": msg, #data "job_order": row["name"], "value": row["lama"], "ACTION": "RTO_JO" } } s.post(url=url, headers=header, data=json.dumps(content))
def make_request(method, url, auth=None, headers=None, data=None): auth = auth or "" data = data or {} headers = headers or {} try: s = get_request_session() frappe.flags.integration_request = s.request(method, url, data=data, auth=auth, headers=headers) frappe.flags.integration_request.raise_for_status() if frappe.flags.integration_request.headers.get( "content-type") == "text/plain; charset=utf-8": return parse_qs(frappe.flags.integration_request.text) return frappe.flags.integration_request.json() except Exception as exc: frappe.log_error() raise exc
def register_webhooks(self): webhooks = ["orders/create", "orders/paid", "orders/fulfilled"] # url = get_shopify_url('admin/webhooks.json', self) created_webhooks = [d.method for d in self.webhooks] url = get_shopify_url('admin/api/2021-04/webhooks.json', self) for method in webhooks: session = get_request_session() try: res = session.post(url, data=json.dumps({ "webhook": { "topic": method, "address": get_webhook_address(connector_name='shopify_connection', method='store_request_data', force_https=True), "format": "json" } }), headers=get_header(self)) res.raise_for_status() self.update_webhook_table(method, res.json()) except HTTPError as e: error_message = res.json().get('errors', e) make_shopify_log(status="Warning", exception=error_message, rollback=True) except Exception as e: make_shopify_log(status="Warning", exception=e, rollback=True)
def leave_application_confirmation(self, method): site_name = get_site_name(frappe.local.request.host) s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" employee_user = frappe.db.sql("SELECT frappe_userid FROM `tabUser` WHERE email=(SELECT user_id FROM `tabEmployee` WHERE name='{}')".format(self.employee),as_dict=True) if len(employee_user) > 0: employee_user_id = employee_user[0]['frappe_userid'] token = normalize_firebase_string(str(site_name) + "_" + employee_user_id) header = {"Authorization": "key=AAAAF7fHjjc:APA91bG80Es5LdTCs0fqtfktsyFHDR_r7q1QkQ3tObsgQqMbEngOhMJ1f6dJcP7mA0N0QIkBJuGIv9qGY_OFz7yC5NLChxu6Ci3ubYtB-yC6WBqbgD3iCB-1a89i9cEXHZ6hO0_EP0IZyTOp99a2uiDa6L1a433DCg","Content-Type": "application/json"} content = { "to":"/topics/{}".format(token), "data": { "subject":"{}".format(employee_user_id), "app":"next_ess", #notification "title_id":"leave_application_approval_received", "body":"", #data "action":"leave_application_confirmation", "name":self.name, "leave_approver_name":self.leave_approver_name, "status":self.status } } res = s.post(url=url,headers=header,data=json.dumps(content)) leave_approver_user = employee_user = frappe.db.sql("SELECT frappe_userid FROM `tabUser` WHERE email='{}'".format(self.leave_approver),as_dict=True) if len(leave_approver_user) > 0: leave_approver_user_id = leave_approver_user[0]['frappe_userid'] token = normalize_firebase_string(str(site_name) + "_" + leave_approver_user_id) header = {"Authorization": "key=AAAAF7fHjjc:APA91bG80Es5LdTCs0fqtfktsyFHDR_r7q1QkQ3tObsgQqMbEngOhMJ1f6dJcP7mA0N0QIkBJuGIv9qGY_OFz7yC5NLChxu6Ci3ubYtB-yC6WBqbgD3iCB-1a89i9cEXHZ6hO0_EP0IZyTOp99a2uiDa6L1a433DCg","Content-Type": "application/json"} content = { "to":"/topics/{}".format(token), "data": { "subject":"{}".format(leave_approver_user_id), "app":"next_ess", #notification "title_id":"leave_application_has_been_update", "body":"", #data "action":"leave_application_confirmation", "name":self.name, "leave_approver_name":self.leave_approver_name, "status":self.status } } res = s.post(url=url,headers=header,data=json.dumps(content)) return "success"
def delete_request(path): s = get_request_session() url = get_woocommerce_url(path) r = s.delete(url) r.raise_for_status()
def chat(self, method): if self.reference_doctype != "Job Order": return if self.comment_type != "Comment": return data = frappe.db.sql( """select principle, vendor, driver from `tabJob Order` where name='{}' """ .format(self.reference_name), as_list=1) if (len(data) > 0): users = data[0] #principle # s = get_request_session() # url = "https://fcm.googleapis.com/fcm/send" # header = {"Authorization": "key=AAAA66ppyJE:APA91bFDQd8klnCXe-PTgLUkUD7x4p9UAxW91NbqeTN9nbX7-GmJMlsnQ2adDd84-rl6LqKnD7KLSeM9xBmADnPuRh0YadoQKux7IrZ27tsjVzvzlFDoXuOnZRP7eXrf0k51QGGifLGw","Content-Type": "application/json"} # content = { # "to":"/topics/{}".format(users[0].replace(" ","_")), # "data": # { # #notification # "title":"{} - Pesan dari {}".format(self.reference_name,self.sender_full_name), # "body":"{}".format(self.content), # #data # "job_order":"{}".format(self.reference_name), # "sender":"{}".format(self.sender_full_name), # "action":"CHAT JOB ORDER" # } # } # s.post(url=url,headers=header,data=json.dumps(content)) #vendor s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" header = { "Authorization": "key=AAAA7ndto_Q:APA91bHVikGANVsFaK2UEKLVXQEA1cleaeM7DlLLuaA87jEVhBGNTe4t8fi0h5Ttc7jRkoiEkZYlrw7Idsn9S9ZfDFtl1S3H3j21Xs8VXtANCDjycLLkMAyLLdHKaBfi3NYc3Z8VIxo8", "Content-Type": "application/json" } content = { "to": "/topics/{}".format(users[1].replace(" ", "_")), "data": { "subject": "{}".format(users[1].replace(" ", "_")), #notification "title": "{} - Pesan dari {}".format(self.reference_name, self.sender_full_name), "body": "{}".format(self.content), #data "job_order": "{}".format(self.reference_name), "sender": "{}".format(self.sender_full_name), "action": "CHAT JOB ORDER" } } s.post(url=url, headers=header, data=json.dumps(content)) #driver fetchDriver = frappe.db.sql( """SELECT nama FROM `tabDriver` WHERE name='{}'""".format( users[2]), as_list=1) dataDriver = fetchDriver[0] driverName = dataDriver[0] s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" header = { "Authorization": "key=AAAAnuCvOxY:APA91bGdCn20mHlHrWEpGiNsiSmb36HEG0QmZ-L7U_iG8eOjm9btCFUgYn8klNStKetvEA1eFdiEmaopdScVk-jv_HNvnLwq4m1VI8LdrIueh9NFI6p5hVjdxs73THqvcRFQ8tZjtv61", "Content-Type": "application/json" } content = { "to": "/topics/{}".format(users[2].replace(" ", "_").replace( "-", "_").replace("(", "").replace(")", "").replace(".", "_").replace("@", "_")), "data": { "subject": "{}".format(users[2].replace(" ", "_").replace( "-", "_").replace("(", "").replace(")", "").replace( ".", "_").replace("@", "_")), #notification "title": "{} - Pesan dari {}".format(self.reference_name, driverName), "body": "{}".format(self.content), #data "job_order": "{}".format(self.reference_name), "sender": "{}".format(self.sender_full_name), "action": "CHAT JOB ORDER" } } s.post(url=url, headers=header, data=json.dumps(content))
def post(self, action, data, raise_on_empty=False): if not isinstance(data, dict): raise BioTrackClientError("data must be instance of dict") log = {} data["action"] = action action_data = data.copy() data.update({ "license_number": self.license_number, "username": self.username, "password": self.password, "training": self.is_training, "API": self.__API__, }) if action != 'login': data["nosession"] = 1 log["request"] = action_data print_log(data, " - Request Data") service = get_integration_controller("BioTrack") integration_req = service.create_request(log) integration_req.action = action integration_req.integration_type = "Remote" request = get_request_session() # catch network errors try: response = request.post( self.__API_URL__, data=json.dumps(data), headers={'Content-Type': 'application/json'}) except Exception as e: raise BioTrackClientError(e.message) response.raise_for_status() result = response.json() if not action.startswith("sync_"): log["response"] = result print_log(result, " - Response") else: log["response"] = {"success": result.get('success')} integration_req.data = json.dumps(log) if not result.get('success'): integration_req.status = 'Failed' integration_req.save() raise BioTrackClientError(encode(result.get('error'))) if raise_on_empty and len(result) == 1: integration_req.status = 'Failed' integration_req.save() raise BioTrackEmptyDataError( 'BioTrackTHC request was response with empty data: {}'.format( json.dumps(action_data))) integration_req.status = 'Completed' integration_req.save() return result
def on_update_after_submit(self): #frappe.msgprint(self.driver) if self.driver: data = frappe.db.sql( """select driver from `tabJob Order` where docstatus=1 and driver="{}" and status = "Dalam Proses" """ .format(self.driver), as_list=1) found = "Tersedia" for row in data: found = "Tidak Tersedia" frappe.db.sql( """update `tabDriver` set status="{}" where name="{}" """. format(found, self.driver), as_list=1) if self.status == "Dalam Proses": s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" header = { "Authorization": "key=AAAAnuCvOxY:APA91bGdCn20mHlHrWEpGiNsiSmb36HEG0QmZ-L7U_iG8eOjm9btCFUgYn8klNStKetvEA1eFdiEmaopdScVk-jv_HNvnLwq4m1VI8LdrIueh9NFI6p5hVjdxs73THqvcRFQ8tZjtv61", "Content-Type": "application/json" } content = { "to": "/topics/{}".format( self.driver.replace(" ", "_").replace( "-", "_").replace("(", "").replace(")", "").replace( ".", "_").replace("@", "_")), "data": { "subject": "{}".format( self.driver.replace(" ", "_").replace( "-", "_").replace("(", "").replace(")", "").replace( ".", "_").replace("@", "_")), #notification "title": "{} <{}>".format(self.name, self.reference), "body": "Job Order {} di tugaskan".format(self.vendor), #data "job_order": self.name, "action": "NEW_ASSIGNED_JO" } } s.post(url=url, headers=header, data=json.dumps(content)) if self.status == "Di Tolak": s = get_request_session() url = "https://fcm.googleapis.com/fcm/send" header = { "Authorization": "key=AAAA66ppyJE:APA91bFDQd8klnCXe-PTgLUkUD7x4p9UAxW91NbqeTN9nbX7-GmJMlsnQ2adDd84-rl6LqKnD7KLSeM9xBmADnPuRh0YadoQKux7IrZ27tsjVzvzlFDoXuOnZRP7eXrf0k51QGGifLGw", "Content-Type": "application/json" } content = { "to": "/topics/{}".format( self.principle.replace(" ", "_").replace("@", "")), "data": { "subject": "{}".format( self.principle.replace(" ", "_").replace("@", "")), #notification "title": "{} <{}>".format(self.name, self.reference), "body": "Job Order {} di tolak oleh {}".format( self.name, self.vendor), #data "job_order": self.name, "action": "REJECTED" } } s.post(url=url, headers=header, data=json.dumps(content))
def delete_request(path): s = get_request_session() url = get_shopify_url(path) r = s.delete(url) r.raise_for_status()
def get_api_response(params, api_url=None): s = get_request_session() response = s.post(api_url or get_api_url(), data=params) response = parse_qs(response.text) response["success"] = response.get("ACK")[0] == "Success" return response