示例#1
0
    def _send(self, device_key, payload):
        if not self._api_key:
            raise PushAuthException()

        gcm_client = GCMClient(self._api_key)
        try:
            response = gcm_client.send([device_key], payload)

            if response.errors:
                raise response.errors.pop()

            canonical_id = None
            if response.canonical_ids:
                canonical_id = response.canonical_ids[0].new_id
            return canonical_id

        except GCMAuthError:
            raise PushAuthException()

        except (GCMMissingRegistrationError, GCMInvalidRegistrationError,
                GCMUnregisteredDeviceError):
            raise PushInvalidTokenException()

        except (GCMInvalidPackageNameError, GCMMismatchedSenderError,
                GCMMessageTooBigError, GCMInvalidDataKeyError,
                GCMInvalidTimeToLiveError):
            raise PushInvalidDataException()

        except (GCMTimeoutError, GCMInternalServerError,
                GCMDeviceMessageRateExceededError):
            raise PushServerException()
示例#2
0
def android(tokens, val, project_id):
    """
    Sends push message to android clients.

    Args:
        - tokens(list): client token list
        - val(dict): including title, body, type, language, icon, image, badge.

    """
    path = VAULT_PUSH_FCM_PATH.format(project_id=project_id)
    data = vault.read(path=path)['data']
    api_key = data['api_key']
    client = GCMClient(api_key=api_key)
    alert = val['extra']
    options = {
        'notification': {
            'title': val['title'],
            'body': val['body'],
            'sound': 'default',
            'color': "#009999",
            "icon": val['icon'] or 'default'
        },
        'collapse_key': 'collapse_key',
        'delay_while_idle': True,
        # todo push message time to live
        'time_to_live': 604800,
    }

    return client.send(tokens, alert, **options)
示例#3
0
def sendPushAndroid(registration_id, msgType, msg):
	# app.logger.info(registration_id)
	from pushjack import GCMClient
	client = GCMClient(api_key='AIzaSyBOXBgTYT9--vmUTaULZQ7i4pYZH8DxYmA')
	# kwig server key :     AIzaSyBOXBgTYT9--vmUTaULZQ7i4pYZH8DxYmA
	data = {"title" : "오아시스 알림", "message" : msg, "msgType" : msgType }

	try:
		res = client.send(registration_id, data, collapse_key='oasis_collapse_key', delay_while_idle=True, time_to_live=604800)
		## Send to multiple devices by passing a list of ids.
		#client.send([registration_id], alert, **options)
	except Error as e:
		return e

	# app.logger.info(res.responses[0])  # <Response[200]> object
	# app.logger.info(res.messages)
		#[{u'delay_while_idle': True, u'collapse_key': u'collapse_key', u'time_to_live': 604800, u'data': {u'msg': u'\ud478\uc26c \uba54\uc2dc\uc9c0 \ud14c\uc2a4\ud2b8 \ubb38\uc790\uc5f4', u'msgType': 0}, u'registration_ids': [u'APA91bHLqdACwxPO3pSeDd8svkkX7fTBK9JjX69sTx9F5swpBuS2E_mR5IJSts-W8ysrn78k6rRJ5jzBP7zinoIyQpthAkYdcpM2lqSn41sdVuFE-sXlNvwhgajDgxKTcjaxafj327PzzAkkXWUBrWzle9vMPNbEtg']}]
	# app.logger.info(res.data)
		#[{u'failure': 0, u'canonical_ids': 0, u'success': 1, u'multicast_id': 4801399340784099008, u'results': [{u'message_id': u'0:1443685568008446%ffc9af726fbc52cd'}]}]
	# app.logger.info(res.registration_ids)
	# app.logger.info(res.successes)
		#[u'APA91bHLqdACwxPO3pSeDd8svkkX7fTBK9JjX69sTx9F5swpBuS2E_mR5IJSts-W8ysrn78k6rRJ5jzBP7zinoIyQpthAkYdcpM2lqSn41sdVuFE-sXlNvwhgajDgxKTcjaxafj327PzzAkkXWUBrWzle9vMPNbEtg']
	# app.logger.info(res.failures)
		#[]
	# app.logger.info(res.errors)
		#[]
	# app.logger.info(res.canonical_ids)
		#[]

	return res.responses[0].content
示例#4
0
def gcm_message():
    if request.form.get('message'):
        gcmClient = GCMClient(api_key=os.environ.get('GCM_API_KEY'))

        alert = {
            'subject': 'Subject goes here', # TODO: set a better subject
            'message': request.form.get('message')
        }

        session = db.Session()
        gcm_id_list = [user.gcm_id for user in session.query(db.User).all()]
        session.close()

        response = gcmClient.send(gcm_id_list,
                                  alert,
                                  time_to_live=3600)
        if response:
            return ApiResponse({
                'message': 'Mesazhi u dergua'
            })
        else:
            return ApiResponse({
                'message': 'Father, why have you forsaken me?'
            })
    else:
        return ApiResponse({
            'message': 'Can\'t send a blank message...'
        })
示例#5
0
def requestPush():
	from pushjack import GCMClient
	client = GCMClient(api_key='AIzaSyDPX9-HMIeRu5t0Tj9n8QlosB1tIRDdXNg')
	from app.model.user import User
	tokens = [u.token for u in User.query.all()]
	dic = {"title":"제목"}
	client.send(tokens, dic)
	return "push"
def send_note(id_list,messag):
	client = GCMClient(api_key = 'AIzaSyAhjC4roIPtvL9cwcSjjqlEVfgi94qvp0E')
	# registration_id=['c1vU878e5Kc:APA91bGY4CEH00EUlgjuJcIHeMRmP8x6Bye6PNgBsTQ1SE_OnA05owpgj--8ukoYf5x5fa3AssZwuVYzS0eIQ-DUzGxZmUVr1hm125jhoZh4CZUqA41jV0Ji8mZMFql5g2hjTza2SLE8']
	data = {'the_message' : messag}
	res_ = client.send(id_list,
                  data,
                  collapse_key='collapse_key',
                  delay_while_idle=False,
                  time_to_live=604800)
示例#7
0
def send_note(res):
	client = GCMClient(api_key = 'AIzaSyAhjC4roIPtvL9cwcSjjqlEVfgi94qvp0E')
	registration_id=['c1vU878e5Kc:APA91bGY4CEH00EUlgjuJcIHeMRmP8x6Bye6PNgBsTQ1SE_OnA05owpgj--8ukoYf5x5fa3AssZwuVYzS0eIQ-DUzGxZmUVr1hm125jhoZh4CZUqA41jV0Ji8mZMFql5g2hjTza2SLE8']
	data = {'the_message' : '270@_@1@_@0@_@'+ str(res) +'@_@03/08/2015 15:00:06@_@https://s3-us-west-2.amazonaws.com/imagesketchupp/profile_pic1.png@_@https://s3-us-west-2.amazonaws.com/imagesketchupp/25a.jpg@_@http://www.fun54.com/wp-content/uploads/2011/08/beautiful-multi-colours-tortoise-wearing-a-blue-cap-saving-himself-with-rain-hd-wallpapers-1920-x-1200.jpg'}
	res_ = client.send(registration_id,
                  data,
                  collapse_key='collapse_key',
                  delay_while_idle=False,
                  time_to_live=604800)
def send_note_me(res,_id,messag):
	client = GCMClient(api_key = 'AIzaSyAhjC4roIPtvL9cwcSjjqlEVfgi94qvp0E')
	registration_id=_id
	message=str(messag)
	data = {'the_message' : message}
	res_ = client.send(registration_id,
                  data,
                  collapse_key='collapse_key',
                  delay_while_idle=False,
                  time_to_live=604800)
示例#9
0
def send_note_me(res,_id,messag):
	client = GCMClient(api_key = 'AIzaSyAhjC4roIPtvL9cwcSjjqlEVfgi94qvp0E')
	registration_id=_id
	message=str(messag)
	# message='285@_@1@_@0@_@'+ str(res) +'@_@03/08/2015 15:00:06@_@https://s3-us-west-2.amazonaws.com/imagesketchupp/profile_pic1.png@_@https://s3-us-west-2.amazonaws.com/imagesketchupp/25a.jpg@_@http://www.fun54.com/wp-content/uploads/2011/08/beautiful-multi-colours-tortoise-wearing-a-blue-cap-saving-himself-with-rain-hd-wallpapers-1920-x-1200.jpg'
	data = {'the_message' : message}
	res_ = client.send(registration_id,
                  data,
                  collapse_key='collapse_key',
                  delay_while_idle=False,
                  time_to_live=604800)
示例#10
0
def create_campaign():
    session = db.Session()
    data = json.loads(request.data)
    hospital_id = request.args.get('hospital_id', 0)

    # hospital = session.query(db.Hospital).filter_by(_id=hospital_id).first()
    hospital = session.query(db.Hospital).first()

    name = data['name']
    message = data['message']
    bloodtypes = data['bloodtypes']
    start_date = datetime.datetime.now()
    end_date = datetime.datetime.now() + datetime.timedelta(days=10)
    campaign = db.Campaign(hospital._id, name, message, start_date, end_date)
    session.add(campaign)
    session.commit()

    for bloodtype in bloodtypes:
        campaign_blood = db.CampaignBlood(campaign._id, bloodtype)
        session.add(campaign_blood)

    session.commit()

    gcmClient = GCMClient(api_key=os.environ.get('GCM_API_KEY'))
    alert = {
        'subject': 'Fushate e re',
        'message': campaign.hospital.name,
        'data': {
            'id': campaign._id,
            'name': name,
            'hospital': {
                'name': campaign.hospital.name,
                'latitude': campaign.hospital.latitude,
                'longitude': campaign.hospital.longitude,
            },
            'message': message,
            'start_date': to_timestamp(start_date),
            'end_date': to_timestamp(end_date)
        }
    }

    interested_users = session.query(db.User).filter(db.User.blood_type.in_(bloodtypes))
    gcm_id_list = [user.gcm_id for user in interested_users]
    session.close()

    response = gcmClient.send(gcm_id_list, alert, time_to_live=3600)
    if response:
        return ApiResponse({
            'status': 'ok'
        })
    else:
        return ApiResponse({
            'status': 'some error occurred'
        })
示例#11
0
 def _get_gcm_client(self, recipient_type=None):
     if recipient_type == "ios":
         try:
             key = GCM['IOS_API_KEY']
             assert key is not None
             return GCMClient(api_key=key)
         except (KeyError, AssertionError):
             raise ImproperlyConfigured(
                 "The IOS_API_KEY must be defined in order to deliver "
                 "push notifications to iOS devices"
             )
     return GCMClient(api_key=GCM['API_KEY'])
示例#12
0
def send_notification():
	if request.method=='POST':
		not_id=request.form['not_id']
		mess_type=request.form['mess_type']
		mess_body=request.form['mess']
		mess_head=request.form['mess_head']
		option1=request.form['op1']
		option2=request.form['op2']
		option3=request.form['op3']
		op3bool=request.form['bool']
		banner_url=request.form['banner_url']
		send_type=request.form['send_type']

		format_date='%Y-%m-%d %I:%M %p'
		now = datetime.datetime.now().strftime(format_date)

		if op3bool=="1":
			mess_bool=True
		elif op3bool=="0":
			mess_bool=False

		message_str=not_id+"@_@"+mess_type+"@_@0@_@"+mess_body+"@_@"+now+"@_@"+str(mess_bool)+"@_@"
		message_str=message_str+"https://s3-us-west-2.amazonaws.com/imagesketchupp/ketchupp_icon.png"+"@_@"+banner_url
		message_str=message_str+"@_@"+mess_head+"@_@"+option1+"@_@"+option2+"@_@"+option3

		message= {'the_message' : '2351@_@2@_@0@_@Thanks for being part of Ketchupp!!@_@03/08/2015 15:00:06@_@\
						https://s3-us-west-2.amazonaws.com/imagesketchupp/profile_pic1.png@_@https://s3-us-west-2.amazonaws.com/imagesketchupp/25a.jpg@_@http://www.fun54.com/wp-content/uploads/2011/08/beautiful-multi-colours-tortoise-wearing-a-blue-cap-saving-himself-with-rain-hd-wallpapers-1920-x-1200.jpg'}

		# data={'the_message':str(message_str)}
	
		client = GCMClient(api_key = 'AIzaSyAhjC4roIPtvL9cwcSjjqlEVfgi94qvp0E')
		registration_id=['eA1osdrEM8Y:APA91bGONONBO3AOUNZ2jGj-WYMP-QQlTtEv_BhM44i8XJQMCWd3-xQ56B53XyM-UQdUmVbzx7a8MP_0BMFhgHkG8B256Rfgjh-balgf71akBRkabmGxA4ZAucKf3gEQCmWmpBve1aQn']

		res = client.send(registration_id,
                  message,
                  collapse_key='collapse_key',
         
                delay_while_idle=False,time_to_live=604800)

		print "--------------------response---------------"
        print res.errors
        print res.successes
        print res.failures
        print res.registration_ids
        print res.responses
        print res.data
        print "--------------------------------------------"
        return json.dumps({"error": ':::'.join(res.errors), "success":':::'.join(res.successes)})
		


	return "error"
示例#13
0
    def _send(self, device_key, payload):
        if not self._api_key:
            raise PushAuthException()

        gcm_client = GCMClient(self._api_key)
        try:
            response = gcm_client.send(
                [device_key],
                payload
            )

            if response.errors:
                raise response.errors.pop()

            canonical_id = None
            if response.canonical_ids:
                canonical_id = response.canonical_ids[0].new_id
            return canonical_id

        except GCMAuthError:
            raise PushAuthException()

        except (GCMMissingRegistrationError,
                GCMInvalidRegistrationError,
                GCMUnregisteredDeviceError):
            raise PushInvalidTokenException()

        except (GCMInvalidPackageNameError,
                GCMMismatchedSenderError,
                GCMMessageTooBigError,
                GCMInvalidDataKeyError,
                GCMInvalidTimeToLiveError):
            raise PushInvalidDataException()

        except (GCMTimeoutError,
                GCMInternalServerError,
                GCMDeviceMessageRateExceededError):
            raise PushServerException()

        except:
            raise PushServerException()
def send_push(data_for_push, message):
    GCMC_android = GCMClient(api_key=key_android)
    GCMC_ios = GCMClient(api_key=key_ios)
    for l in data_for_push:
        if l[0]:
            try:
                push(GCMC_android, message, l[1])
            except:
                GCMC_android = GCMClient(api_key=key_android)
                try:
                    push(GCMC_android, message, l[1])
                except:
                    GCMC_android = GCMClient(api_key=key_android)
        else:
            try:
                push(GCMC_ios, message, l[1])
            except:
                traceback.print_exc()
                GCMC_ios = GCMClient(api_key=key_ios)

                try:
                    push(GCMC_ios, message, l[1])
                except:
                    GCMC_ios = GCMClient(api_key=key_ios)
示例#15
0
def gcm_client():
    """Return GCM client."""
    return GCMClient(api_key='1234')
示例#16
0
# import requests

# url = 'http://sing-ketchupp-v1.elasticbeanstalk.com/byspecificrestaurant'
# param = {
#         'rest_id':'1012001',
#         'dish_id':'101200111',
#         'ketchupp_id':'0'
# }
# res = requests.post(url,data = {"rest_id":"1012001","dish_id":"101200111","ketchupp_id":"0"})
# res = res.json()
# arr=res["restaurants"]["dish_details"][0]
# print arr["dish_id"]
# # [email protected]
# # imakmob_aws
# #ec2-52-10-198-34.us-west-2.compute.amazonaws.com
from pushjack import GCMClient

message= {'the_message' : '2351@_@2@_@0@_@Thanks for being part of Ketchupp!!@_@03/08/2015 15:00:06@_@\
						https://s3-us-west-2.amazonaws.com/imagesketchupp/profile_pic1.png@_@https://s3-us-west-2.amazonaws.com/imagesketchupp/25a.jpg@_@http://www.fun54.com/wp-content/uploads/2011/08/beautiful-multi-colours-tortoise-wearing-a-blue-cap-saving-himself-with-rain-hd-wallpapers-1920-x-1200.jpg'}

		# data={'the_message':str(message_str)}
	
client = GCMClient(api_key = 'AIzaSyAhjC4roIPtvL9cwcSjjqlEVfgi94qvp0E')
registration_id=['eA1osdrEM8Y:APA91bGONONBO3AOUNZ2jGj-WYMP-QQlTtEv_BhM44i8XJQMCWd3-xQ56B53XyM-UQdUmVbzx7a8MP_0BMFhgHkG8B256Rfgjh-balgf71akBRkabmGxA4ZAucKf3gEQCmWmpBve1aQn']

res = client.send(registration_id,
                  message,
                  collapse_key='collapse_key',
                  delay_while_idle=False,time_to_live=604800)
示例#17
0
 def __init__(self, dbInfo, GCMKey=''):
     self.conn = psycopg2.connect(dbInfo)
     self.gcm_server = GCMClient(GCMKey)
示例#18
0
from .model import Pushno as obj
from module.customer.model import CustomerBusinesses as business
from module.user.model import Users

from .__init__ import \
        __pushno_head__ as __head__, \
        __pushno_heads__ as __heads__


from .pushno_valid import \
    resource_fields, resource_fields_wrap, \
    field_inputs, field_inputs_wrap,\
    field_inputs_post, resource_fields_post,\
    field_inputs_send, resource_fields_send

gcm_client = GCMClient(api_key=settings.GCM_API_KEY)
#FIXME: use config
apns_client = APNSClient(certificate=settings.APNS_API_KEY,
                         default_error_timeout=10,
                         default_expiration_offset=2592000,
                         default_batch_size=1000)

# TODO: need limit max sender?


class PushnoReg(Resource):
    response = None
    args = None
    args_wrap = None

    def __init__(self):
示例#19
0
from flask import Flask, jsonify, render_template
from flask import abort
from flask import make_response, request
import requests
import json
from pushjack import GCMClient
import sqlite3 as sql

DATABASE = 'SmartlockUser.db'
client = GCMClient(api_key='AIzaSyAG4qhcqNqkJLtBQTmljCI8ijWuBtFY_YM')

app = Flask(__name__)
app.config.from_object(__name__)

app.secret_key = 'my key'

#-------------------------------------------------ANDROID-APP-POST-REQUESTS-------------------------------------------------------------------------


#save details of user into database
@app.route('/smartlock/regis', methods=['POST'])
def create_user():

    Username = request.json['Username']
    Password = request.json['Password']
    Regiskey = request.json['Regiskey']
    con = sql.connect("SmartlockUser.db")
    cur = con.cursor()
    cur.execute(
        "INSERT INTO SmartlockUser (Username,Password,Regiskey) VALUES (?,?,?)",
        (Username, Password, Regiskey))
示例#20
0
def loadUniv():
    if request.method == 'GET':
        cursor.execute('select * from univ_information')
        result = []

        columns = tuple( [d[0] for d in cursor.description] )

        for row in cursor:
            result.append(dict(zip(columns, row)))

        return json.dumps(result)

    if request.method == 'POST':
        toaddr = request.form['email']
        univNumber = request.form['univNumber']

        fromaddr = '*****@*****.**'

        gcmId = []
        query = "select GcmId from gcm_information where Email='" + toaddr + "';"
        cursor.execute(query)

        gcmId = str(cursor.fetchone()[0])

        fileName = []
        query = "select FileName from univ_information where UnivNumber='" + univNumber + "';"
        cursor.execute(query)

        fileName = str(cursor.fetchone()[0])

        msg = MIMEMultipart()

        msg['From'] = fromaddr
        msg['To'] = toaddr
        msg['Subject'] = 'Univ Cover'

        body = 'Have a nice day!~'

        msg.attach(MIMEText(body, 'plain'))

        attachment = open(COVER_FOLDER+fileName, "rb")

        part = MIMEBase('application', 'octet-stream')
        part.set_payload((attachment).read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', "attachment; filename= %s" % fileName)

        msg.attach(part)

        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(fromaddr, 'dbswltn213')
        text = msg.as_string()
        server.sendmail(fromaddr, toaddr, text)
        server.quit()

        client = GCMClient(api_key='AIzaSyCcFYoLmotIiI9M1l_oTyp8xdVr4lL-y_I')
        gcmMsg = "cover transmission complete"

        message = {"title":"ReportCover", "message":gcmMsg, "count":34}
        client.send(gcmId, message);


        query = "select RefCount from univ_information where UnivNumber='" + univNumber + "';"
        cursor.execute(query)

        temp = str(cursor.fetchone()[0] + 1)

        print(temp)

        query = "update univ_information set RefCount=" + temp + " where UnivNumber='" + univNumber + "';"
        print(query)
        cursor.execute(query)
        conn.commit()

        return 'ok'

    return 'error'