Skip to content
This repository was archived by the owner on Jan 26, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions application.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,21 @@
if config.google_api_key == '':
stderr.write("WARNING: GCM disabled, please enter the google api key for gcm")
gcm_enabled = False
if not isinstance(config.google_gcm_sender_id, int):
stderr.write("WARNING: GCM disabled, sender id is not an integer")
if not isinstance(config.google_gcm_sender_id, int):
stderr.write("WARNING: GCM disabled, sender id is not an integer")
gcm_enabled = False
elif config.google_gcm_sender_id == 0:
stderr.write('WARNING: GCM disabled, invalid sender id found')
gcm_enabled = False
elif config.google_gcm_sender_id == 0:
stderr.write('WARNING: GCM disabled, invalid sender id found')
gcm_enabled = False


app = Flask(__name__)
app.debug = config.debug or int(getenv('FLASK_DEBUG', 0)) > 0
app.config['SQLALCHEMY_DATABASE_URI'] = config.database_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
with app.app_context():
db.engine.execute("SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'")
#db.engine.execute("SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'") #mysql
db.engine.execute("SET NAMES 'utf8'") #pgsql


@app.route('/')
Expand Down
4 changes: 3 additions & 1 deletion config.example.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Must be a mysql database!
# Must be a mysql or postgresql database!
database_uri = 'mysql://root@localhost/pushjet_api'
#database_uri = 'postgresql://user:password@localhost/pushjet_api'


# Are we debugging the server?
# Do not turn this on when in production!
Expand Down
7 changes: 3 additions & 4 deletions models/gcm.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

gcm_url = 'https://android.googleapis.com/gcm/send'


class Gcm(db.Model):
id = db.Column(INTEGER(unsigned=True), primary_key=True)
uuid = db.Column(db.VARCHAR(40), nullable=False)
Expand Down Expand Up @@ -42,8 +41,7 @@ def send_message(message):
gcm_devices = Gcm.query.filter(Gcm.uuid.in_([l.device for l in subscriptions])).all()

if len(gcm_devices) > 0:
data = dict(message=message.as_dict(), encrypted=False)
Gcm.gcm_send([r.gcmid for r in gcm_devices], data)
Gcm.gcm_send([r.gcmid for r in gcm_devices], message.as_notification())

if len(gcm_devices) > 0:
uuids = [g.uuid for g in gcm_devices]
Expand All @@ -59,9 +57,10 @@ def send_message(message):
def gcm_send(ids, data):
url = 'https://android.googleapis.com/gcm/send'
headers = dict(Authorization='key={}'.format(google_api_key))
data = dict(registration_ids=ids, data=data)
data = dict(registration_ids=ids, notification=data)

if current_app.config['TESTING'] is True:
current_app.config['TESTING_GCM'].append(data)
else:
requests.post(url, json=data, headers=headers)

6 changes: 6 additions & 0 deletions models/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,9 @@ def as_dict(self):
"level": self.level,
"timestamp": int((self.timestamp_created - datetime.utcfromtimestamp(0)).total_seconds())
}
def as_notification(self):
return {
"title" : self.title,
"body" : self.text,
"click_action" : self.link
}
File renamed without changes.
65 changes: 65 additions & 0 deletions pgsql-database.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
-- -----------------------------------------------------
-- Table "subscription"
-- -----------------------------------------------------
DROP TABLE IF EXISTS "subscription";
DROP SEQUENCE IF EXISTS "subscription_id_seq";

CREATE TABLE IF NOT EXISTS "subscription" (
"id" SERIAL,
"device" VARCHAR(40) NOT NULL,
"service_id" integer NOT NULL,
"last_read" integer NOT NULL DEFAULT 0,
"timestamp_created" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"timestamp_checked" TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY ("id")
);

-- -----------------------------------------------------
-- Table "message"
-- -----------------------------------------------------
DROP TABLE IF EXISTS "message";
DROP SEQUENCE IF EXISTS "message_id_seq";

CREATE TABLE IF NOT EXISTS "message" (
"id" SERIAL,
"service_id" integer NOT NULL,
"text" TEXT NOT NULL,
"title" VARCHAR(255) NULL DEFAULT NULL,
"level" SMALLINT NOT NULL DEFAULT 0,
"link" TEXT NULL,
"timestamp_created" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("id")
);

-- -----------------------------------------------------
-- Table "service"
-- -----------------------------------------------------
DROP TABLE IF EXISTS "service";
DROP SEQUENCE IF EXISTS "service_id_seq";

CREATE TABLE IF NOT EXISTS "service" (
"id" SERIAL,
"secret" VARCHAR(32) NOT NULL,
"public" VARCHAR(40) NOT NULL,
"name" VARCHAR(255) NOT NULL,
"icon" TEXT NULL,
"timestamp_created" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("id")
);

-- -----------------------------------------------------
-- Table "gcm"
-- -----------------------------------------------------
DROP TABLE IF EXISTS "gcm";
DROP SEQUENCE IF EXISTS "gcm_id_seq";

CREATE TABLE IF NOT EXISTS "gcm" (
"id" SERIAL,
"uuid" VARCHAR(40) NOT NULL,
"gcmid" TEXT NOT NULL,
"pubkey" TEXT DEFAULT NULL,
"timestamp_created" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"rsa_pub" BYTEA DEFAULT NULL,
PRIMARY KEY ("id")
);