Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
345c9bb
initial system
Sep 9, 2017
5936af8
delete ACCESS_TOKEN and SECRET
Sep 9, 2017
64831ab
fix read me
Sep 9, 2017
769ac64
delete requirements file
Sep 9, 2017
e05a6a9
fix read me2
Sep 9, 2017
e3571be
core-python V2
Sep 25, 2017
7273405
fix bug1
Sep 25, 2017
f27dc59
fix bug2
Sep 25, 2017
51c4a6f
fix bug3
Sep 25, 2017
6a822f7
fix bug
Sep 25, 2017
2bc9019
fix bug
Sep 25, 2017
7903084
inherit middleware class
Sep 25, 2017
a8653b2
fix bug
Sep 25, 2017
a344a20
fix bug
Sep 25, 2017
ab1de37
fix bug
Sep 25, 2017
e8cf9e3
fix bug
Sep 25, 2017
60b8e96
fix bug
Sep 25, 2017
39f2fd6
fix bug
Sep 25, 2017
4f88c01
fix bug
Sep 25, 2017
80aef79
fix bug
Sep 25, 2017
3e25164
fix bug
Sep 25, 2017
efef54e
fix bug
Sep 25, 2017
3c6abb9
fix content
Sep 25, 2017
0c6bc63
fix content
Sep 25, 2017
75418b1
Take out ImagemapMessage
Sep 25, 2017
2d35bb3
fix content
Sep 25, 2017
7314a45
core-python V2.1
Sep 27, 2017
4ebbf8c
fix bug
Sep 27, 2017
dd0198c
fix bug
Sep 27, 2017
9634a60
fix bug
Sep 27, 2017
f11a0ef
fix bug
Sep 27, 2017
be7b6a6
debug
Sep 27, 2017
45fd9b8
debug
Sep 27, 2017
0154cd7
fix bug
Sep 27, 2017
013e6f3
debug
Sep 27, 2017
0abc317
debug
Sep 27, 2017
13682f8
fix bug
Sep 27, 2017
7797bcb
debug
Sep 27, 2017
3f3ecc6
fix bug
Sep 27, 2017
a16fa57
fix bug
Sep 27, 2017
b6c5237
debug
Sep 27, 2017
1a7ec54
debug
Sep 27, 2017
2570ce1
debug
Sep 27, 2017
db631c5
debug
Sep 27, 2017
aab451f
debug
Sep 27, 2017
8b8d6ea
delete pycache
Sep 27, 2017
48c9195
debug
Sep 27, 2017
8e22cf1
fix bug debug
Sep 27, 2017
a5b8406
debug
Sep 27, 2017
cf7164f
debug
Sep 27, 2017
24594e1
debug
Sep 27, 2017
9c2cc6c
fix bug
Sep 27, 2017
dc66e95
remove test file
Sep 27, 2017
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
1 change: 1 addition & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: gunicorn app:app
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# core-python
LineMob Core in Python
Using Flask and Deploy on Heroku

run "pip freeze > requirments.txt" before deploy
47 changes: 47 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
from flask import Flask, request, abort

from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
from src.receiver import Receiver
app = Flask(__name__)


handler = WebhookHandler('cc19d3de5e1f7201cdbff7f0e8dfbf3e')


@app.route('/')
def index():
return "<h1>Hello I'm fine!</h1>"


@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']

# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'


@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
print('receiver here!')
receiver = Receiver(event)


if __name__ == "__main__":
app.run()
28 changes: 28 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
auth==0.5.3
blinker==1.4
click==6.7
Django==1.10.6
enum-compat==0.0.2
enum34==1.1.6
eventlet==0.20.1
falcon==1.1.0
Flask==0.12
future==0.16.0
greenlet==0.4.12
gunicorn==19.7.0
helper==2.4.2
imgurpython==1.1.7
itsdangerous==0.24
Jinja2==2.9.5
line-bot-sdk==1.3.0
MarkupSafe==1.0
mongoengine==0.11.0
psycopg2==2.7.1
pymongo==3.4.0
python-firebase==1.2
python-mimeparse==1.6.0
PyYAML==3.12
requests==2.13.0
six==1.10.0
virtualenv==15.1.0
Werkzeug==0.12.1
13 changes: 13 additions & 0 deletions src/Template/ImageMessage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from linebot.models import (
ImageSendMessage,
)


class ImageMessage():

def __init__(self, command):
self.original_content_url = command.get_message()['original_content_url']
self.preview_image_url = command.get_message()['preview_image_url']

def get(self):
return ImageSendMessage(self.original_content_url,self.preview_image_url)
15 changes: 15 additions & 0 deletions src/Template/LocationMessage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from linebot.models import (
LocationSendMessage,
)


class LocationMessage():

def __init__(self, command):
self.title = command.get_message()['title']
self.address = command.get_message()['address']
self.latitude = command.get_message()['latitude']
self.longitude = command.get_message()['longitude']

def get(self):
return LocationSendMessage(self.title, self.address, self.latitude, self.longitude)
24 changes: 24 additions & 0 deletions src/Template/MessageTemplateFactory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from .TextTemplate import TextTemplate
from .ImageMessage import ImageMessage
from .LocationMessage import LocationMessage
from .StickerMessage import StickerMessage
from .TemplateMessage import TemplateMessage


class MessageTemplateFactory():

def __init__(self, command):
self.command = command
if self.command.get_template() == 'TextMessage':
self.template = TextTemplate(self.command).get()
elif self.command.get_template() == 'ImageMessage':
self.template = ImageMessage(self.command).get()
elif self.command.get_template() == 'LocationMessage':
self.template = LocationMessage(self.command).get()
elif self.command.get_template() == 'StickerMessage':
self.template = StickerMessage(self.command).get()
elif self.command.get_template() == 'TemplateMessage':
self.template = TemplateMessage(self.command).get()

def get(self):
return self.template
13 changes: 13 additions & 0 deletions src/Template/StickerMessage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from linebot.models import (
StickerSendMessage,
)


class StickerMessage():

def __init__(self, command):
self.package_id = command.get_message()['package_id']
self.sticker_id = command.get_message()['sticker_id']

def get(self):
return StickerSendMessage(self.package_id, self.sticker_id)
13 changes: 13 additions & 0 deletions src/Template/TemplateMessage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from linebot.models import (
TemplateSendMessage,
)


class TemplateMessage():

def __init__(self, command):
self.alt_text = command.get_message()['alt_text']
self.template = command.get_message()['template']

def get(self):
return TemplateSendMessage(self.alt_text, self.template)
12 changes: 12 additions & 0 deletions src/Template/TextTemplate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from linebot.models import (
TextSendMessage,
)


class TextTemplate():

def __init__(self, command):
self.text = command.get_message()

def get(self):
return TextSendMessage(self.text)
Empty file added src/Template/__init__.py
Empty file.
Empty file added src/__init__.py
Empty file.
Empty file added src/command/__init__.py
Empty file.
34 changes: 34 additions & 0 deletions src/command/command.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class Command():

def __init__(self):
self.event = None
self.command = None
self.template = None
self.message = None

def set_event(self, event):
self.event = event

def get_event(self):
return self.event

def set_command(selt, command):
self.command = command

def get_command(self):
return self.command

def set_template(self, template):
self.template = template

def get_template(self):
return self.template

def set_message(self, message):
self.message = message

def get_message(self):
return self.message

def isValidCmd(self):
raise NotImplementedError("Please Implement this method")
13 changes: 13 additions & 0 deletions src/command/command1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command1(Command):

def __init__(self):
self.event = None
self.command = '1'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/command2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command2(Command):

def __init__(self):
self.event = None
self.command = '2'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/command3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command3(Command):

def __init__(self):
self.event = None
self.command = '3'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/command4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command4(Command):

def __init__(self):
self.event = None
self.command = '4'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/command5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command5(Command):

def __init__(self):
self.event = None
self.command = '5'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/command6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command6(Command):

def __init__(self):
self.event = None
self.command = '6'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/command7.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class Command7(Command):

def __init__(self):
self.event = None
self.command = '7'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
13 changes: 13 additions & 0 deletions src/command/commandDefault.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from .command import Command


class CommandDefault(Command):

def __init__(self):
self.event = None
self.command = 'commandDefault'
self.template = None
self.message = None

def isValidCmd(self):
return self.event.message.text == self.command
52 changes: 52 additions & 0 deletions src/command/command_registry.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from linebot.models import (
TextMessage, StickerMessage, LocationMessage, ImageMessage, VideoMessage, AudioMessage
)
from .command import Command
from .commandDefault import CommandDefault


class CommandRegistry():

def __init__(self, event):
self.event = event
self.command_list = list()

def add_command(self, command):
self.command_list.append(command)

def get_command(self):
if isinstance(self.event.message, TextMessage):
return self.get_text_message_command()
elif isinstance(self.event.message, StickerMessage):
pass
elif isinstance(self.event.message, LocationMessage):
pass
elif isinstance(self.event.message, ImageMessage):
pass
elif isinstance(self.event.message, VideoMessage):
pass
elif isinstance(self.event.message, AudioMessage):
pass

def get_text_message_command(self):
for command in self.command_list:
command.set_event(self.event)
if isinstance(command, CommandDefault):
return command
if command.isValidCmd():
return command

def get_sticker_message_command(self):
pass

def get_location_message_command(self):
pass

def get_image_message_command(self):
pass

def get_video_message_command(self):
pass

def get_audio_message_command(self):
pass
Loading