Beispiel #1
0
def post_to_sale_server(uri, data=None):
    if not uri.startswith(settings.SALES_SERVER_API_URL):
        remote_uri = settings.SALES_SERVER_API_URL % {'api': uri}
    else:
        remote_uri = uri

    try:
        encrypt = re.search('/(private|protected)/', remote_uri)
        if encrypt and data:
            data = gen_encrypt_json_context(
                data, settings.SERVER_APIKEY_URI_MAP[SERVICES.ADM],
                settings.PRIVATE_KEY_PATH)

        req = urllib2.Request(remote_uri, data=data)
        remote_resp = urllib2.urlopen(req)

        if encrypt:
            content = decrypt_json_resp(
                remote_resp, settings.SERVER_APIKEY_URI_MAP[SERVICES.ADM],
                settings.PRIVATE_KEY_PATH)
        else:
            content = remote_resp.read()
        return content

    except Exception, e:
        logging.error('post_to_sale_server_error: %s', e, exc_info=True)
        raise
Beispiel #2
0
def _request_remote_server(uri,
                           method,
                           params,
                           headers,
                           encrypt=False,
                           pri_key_path=None,
                           usr_pub_key_uri=None):
    data = None
    headers = headers or {}

    if params:
        query_str = urllib.urlencode(params)
        if method == 'GET':
            uri = '?'.join([uri, query_str])
        else:
            data = query_str

    try:
        if encrypt and data:
            data = gen_encrypt_json_context(data, usr_pub_key_uri,
                                            pri_key_path)

        req = urllib2.Request(uri, data=data, headers=headers)
        return urllib2.urlopen(req)

    except urllib2.HTTPError, e:
        logging.error('_request_remote_server HTTPError: '
                      'error: %s, '
                      'with uri: %s, data :%s, headers: %s' %
                      (e, uri, data, headers),
                      exc_info=True)
        raise
Beispiel #3
0
 def gen_resp(self, resp, data_dict):
     resp.content_type = "application/json"
     resp.body = gen_encrypt_json_context(
         ujson.dumps(data_dict),
         settings.SERVER_APIKEY_URI_MAP[SERVICES.ADM],
         settings.PRIVATE_KEY_PATH)
     return resp
Beispiel #4
0
 def encrypt_resp(self, resp, content):
     resp.content_type = "application/json"
     resp.body = gen_encrypt_json_context(
         content,
         settings.SERVER_APIKEY_URI_MAP[self.service],
         settings.PRIVATE_KEY_PATH)
     return resp
Beispiel #5
0
def remote_payment_form(cookie, id_processor, id_trans, **kwargs):
    uri = "webservice/1.0/private/payment/form"
    query = {
        'cookie': cookie,
        'processor': id_processor,
    }
    param = {'id_trans': id_trans}

    id_processor = int(id_processor)
    if id_processor == PAYMENT_TYPES.PAYPAL:
        query.update({
            'url_notify': settings.PAYMENT_PAYPAL_GATEWAY % param,
            'url_return': settings.PAYMENT_PAYPAL_RETURN % param,
            'url_cancel': settings.PAYMENT_PAYPAL_CANCEL % param,
        })

    elif id_processor == PAYMENT_TYPES.PAYBOX:
        query.update({
            'url_success': settings.PAYMENT_PAYBOX_SUCCESS % param,
            'url_failure': settings.PAYMENT_PAYBOX_FAILURE % param,
            'url_cancel': settings.PAYMENT_PAYBOX_CANCEL % param,
            'url_waiting': settings.PAYMENT_PAYBOX_WAITING % param,
            'url_return': settings.PAYMENT_PAYBOX_GATEWAY % param,
            'user_email': kwargs.get('user_email', ''),
        })

    elif id_processor == PAYMENT_TYPES.STRIPE:
        query.update({
            'user_email': kwargs.get('user_email', ''),
            'url_process': settings.PAYMENT_STRIPE_PROCESS % param,
            'url_success': kwargs.get('url_success', ''),
            'url_failure': kwargs.get('url_failure', ''),
        })

    try:
        query = ujson.dumps(query)
        en_query = gen_encrypt_json_context(
            query, settings.SERVER_APIKEY_URI_MAP[SERVICES.FIN],
            settings.PRIVATE_KEY_PATH)

        resp = get_from_remote(os.path.join(settings.FIN_ROOT_URI, uri),
                               settings.SERVER_APIKEY_URI_MAP[SERVICES.FIN],
                               settings.PRIVATE_KEY_PATH,
                               data=en_query,
                               headers={'Content-Type': 'application/json'})
        return resp

    except Exception, e:
        logging.error('Failed to get payment form %s,'
                      'error: %s',
                      query,
                      e,
                      exc_info=True)
        raise ServerError('remote_payment_form_err: %s' % str(e))
Beispiel #6
0
 def _send_feedback(self, url, data):
     data = gen_encrypt_json_context(
         ujson.dumps(data),
         settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
         settings.PRIVATE_KEY_PATH)
     resp = get_from_remote(
         url,
         settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
         settings.PRIVATE_KEY_PATH,
         data=data,
         headers={'Content-Type': 'application/json'})
     return xmltodict.parse(resp)
Beispiel #7
0
def send_new_shipment(id_order,
                      id_shop,
                      id_brand,
                      shipping_fee,
                      handling_fee,
                      content,
                      shipping_carrier,
                      packing_status,
                      tracking_name,
                      shipping_service=None,
                      shipping_date=None,
                      tracking_num=None):
    if isinstance(content, list):
        content = ujson.dumps(content)

    try:
        data = {
            'action': 'create',
            'order': id_order,
            'shop': id_shop,
            'brand': id_brand,
            'handling_fee': handling_fee,
            'shipping_fee': shipping_fee,
            'content': content,
            'shipping_carrier': shipping_carrier,
            'packing_status': packing_status,
            'tracking_name': tracking_name,
            'shipping_service': shipping_service,
            'shipping_date': shipping_date,
            'tracking_num': tracking_num
        }

        data = ujson.dumps(data)
        data = gen_encrypt_json_context(
            data, settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
            settings.PRIVATE_KEY_PATH)
        rst = get_from_remote(settings.ORDER_SHIPMENT,
                              settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
                              settings.PRIVATE_KEY_PATH,
                              data=data,
                              headers={'Content-Type': 'application/json'})
        return rst
    except Exception, e:
        logging.error('Failed to create shipment %s,'
                      'error: %s', {
                          'id_order': id_order,
                          'id_shop': id_shop,
                          'content': content
                      },
                      e,
                      exc_info=True)
        raise UsersServerError
def remote_payment_init(data):
    uri = "webservice/1.0/private/payment/init"
    remote_uri = os.path.join(settings.FIN_SERVER, uri)
    try:
        data = gen_encrypt_json_context(
            data, settings.SERVER_APIKEY_URI_MAP[SERVICES.FIN],
            settings.PRIVATE_KEY_PATH)

        resp = get_from_remote(remote_uri,
                               settings.SERVER_APIKEY_URI_MAP[SERVICES.FIN],
                               settings.PRIVATE_KEY_PATH,
                               data=data,
                               headers={'Content-Type': 'application/json'})
        return resp
    except Exception, e:
        logging.error("Failed to init payment %s" % data, exc_info=True)
        raise
def send_cache_invalidation(method, item_name, item_id):
    try:
        invalidation = '%s/%s/%s' % (method, item_name, item_id)
        logging.info("Sending cache invalidation %s" % invalidation)

        data = gen_encrypt_json_context(
            invalidation, settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
            settings.PRIVATE_KEY_PATH)

        get_from_remote(settings.CACHE_INVALIDATION_URL,
                        settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
                        settings.PRIVATE_KEY_PATH,
                        data=data,
                        headers={'Content-Type': 'application/json'})
    except Exception, e:
        logging.error("Failed to send cache invalidation %s" % invalidation,
                      exc_info=True)
def upload(asset_name, content):
    remote_uri = os.path.join(
        settings.AST_SERVER,
        "webservice/1.0/private/upload?name=%s" % urllib2.quote(asset_name))
    try:
        data = gen_encrypt_json_context(
            content.read(), settings.SERVER_APIKEY_URI_MAP[SERVICES.AST],
            settings.PRIVATE_KEY_PATH)

        resp = get_from_remote(remote_uri,
                               settings.SERVER_APIKEY_URI_MAP[SERVICES.AST],
                               settings.PRIVATE_KEY_PATH,
                               data=data)
        return ujson.loads(resp)
    except Exception, e:
        logging.error("Failed to upload %s" % asset_name, exc_info=True)
        raise
Beispiel #11
0
def get_from_vessel_server(method, path, **query):
    remote_uri = os.path.join(settings.VSL_ROOT_URI, path)
    if query:
        query_str = urllib.urlencode(query)
        if method == 'GET':
            remote_uri = '?'.join([remote_uri, query_str])
            data = None
        else:
            data = gen_encrypt_json_context(
                query_str, settings.SERVER_APIKEY_URI_MAP['VSL'],
                settings.PRIVATE_KEY_PATH)

    try:
        content = get_from_remote(remote_uri,
                                  settings.SERVER_APIKEY_URI_MAP['VSL'],
                                  settings.PRIVATE_KEY_PATH,
                                  data=data)
    except Exception, e:
        logging.error('get_from_vessel_server: %s', e, exc_info=True)
        raise
Beispiel #12
0
def remote_payment_init(id_order, id_user, amount, currency, iv_id, iv_numbers,
                        iv_data):
    uri = 'private/payment/init'
    remote_uri = settings.SALES_SERVER_API_URL % {'api': uri}
    if isinstance(iv_id, list):
        iv_id = ujson.dumps(iv_id)

    if isinstance(iv_numbers, list):
        iv_numbers = ujson.dumps(iv_numbers)

    query = {
        "order": id_order,
        "user": id_user,
        "amount": amount,
        "currency": currency,
        "invoices": iv_id,
        "invoices_num": iv_numbers,
        "invoicesData": iv_data
    }

    logging.info("remote_payment_init_query: %s", query)
    try:
        query = ujson.dumps(query)
        en_query = gen_encrypt_json_context(
            query, settings.SERVER_APIKEY_URI_MAP[SERVICES.ADM],
            settings.PRIVATE_KEY_PATH)

        resp = get_from_remote(remote_uri,
                               settings.SERVER_APIKEY_URI_MAP[SERVICES.ADM],
                               settings.PRIVATE_KEY_PATH,
                               data=en_query,
                               headers={'Content-Type': 'application/json'})
        logging.info("payment_init_response: %s", resp)
        return resp
    except Exception, e:
        logging.error('Failed to get payment init %s,'
                      'error: %s',
                      query,
                      e,
                      exc_info=True)
        raise ServerError('remote_payment_init_err: %s' % str(e))
Beispiel #13
0
def send_shipping_fee(id_shipment, id_postage, shipping_fee):
    try:
        data = {
            'id_shipment': id_shipment,
            'id_postage': id_postage,
            'shipping_fee': shipping_fee
        }
        data = ujson.dumps(data)
        logging.info("Send shipping fee %s" % data)

        data = gen_encrypt_json_context(
            data, settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
            settings.PRIVATE_KEY_PATH)

        rst = get_from_remote(settings.SHIPPING_FEE_URL,
                              settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
                              settings.PRIVATE_KEY_PATH,
                              data=data,
                              headers={'Content-Type': 'application/json'})
    except Exception, e:
        logging.error("Failed to send shipping fee %s" % data, exc_info=True)
Beispiel #14
0
def remote_delete_order(id_order, id_brand, id_shops):
    try:
        if isinstance(id_shops, list):
            id_shops = ujson.dumps(id_shops)

        data = {'order': id_order, 'brand': id_brand, 'shops': id_shops}
        data = gen_encrypt_json_context(
            ujson.dumps(data), settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
            settings.PRIVATE_KEY_PATH)
        rst = get_from_remote(settings.ORDER_DELETE,
                              settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
                              settings.PRIVATE_KEY_PATH,
                              data=data,
                              headers={'Content-Type': 'application/json'})
        return rst
    except Exception, e:
        logging.error('Failed to delete order %s,'
                      'error: %s', {'id_order': id_order},
                      e,
                      exc_info=True)
        raise UsersServerError
Beispiel #15
0
def send_delete_shipment(id_shipment, id_shop, id_brand):
    try:
        data = {
            'action': 'delete',
            'shipment': id_shipment,
            'shop': id_shop,
            'brand': id_brand
        }
        data = ujson.dumps(data)
        data = gen_encrypt_json_context(
            data, settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
            settings.PRIVATE_KEY_PATH)
        rst = get_from_remote(settings.ORDER_SHIPMENT,
                              settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
                              settings.PRIVATE_KEY_PATH,
                              data=data,
                              headers={'Content-Type': 'application/json'})
        return rst
    except Exception, e:
        logging.error('Failed to delete shipment %s,'
                      'error: %s', {'id_shipment': id_shipment},
                      e,
                      exc_info=True)
        raise UsersServerError
Beispiel #16
0
def send_update_shipment(id_shipment,
                         id_shop,
                         id_brand,
                         shipping_fee=None,
                         handling_fee=None,
                         status=None,
                         tracking_num=None,
                         content=None,
                         shipping_date=None,
                         tracking_name=None,
                         shipping_carrier=None):
    if isinstance(content, list):
        content = ujson.dumps(content)

    try:
        data = {}
        if shipping_fee:
            data['shipping_fee'] = shipping_fee
        if handling_fee:
            data['handling_fee'] = handling_fee
        if status:
            data['status'] = status
        if tracking_num:
            data['tracking'] = tracking_num
        if content:
            data['content'] = content
        if shipping_date:
            data['shipping_date'] = shipping_date
        if tracking_name:
            data['tracking_name'] = tracking_name
        if shipping_carrier:
            data['shipping_carrier'] = shipping_carrier

        if not data:
            return

        data['shipment'] = id_shipment
        data['shop'] = id_shop
        data['brand'] = id_brand
        data['action'] = 'modify'
        data = ujson.dumps(data)
        data = gen_encrypt_json_context(
            data, settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
            settings.PRIVATE_KEY_PATH)
        rst = get_from_remote(settings.ORDER_SHIPMENT,
                              settings.SERVER_APIKEY_URI_MAP[SERVICES.USR],
                              settings.PRIVATE_KEY_PATH,
                              data=data,
                              headers={'Content-Type': 'application/json'})
        return rst

    except Exception, e:
        logging.error(
            'Failed to update shipment %s,'
            'error: %s', {
                'id_shipment': id_shipment,
                'shipping_fee': shipping_fee,
                'handling_fee': handling_fee,
                'status': status,
                'tracking_num': tracking_num,
                'content': content
            },
            e,
            exc_info=True)
        raise UsersServerError