Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Hiro
GetTor
Commits
b99a8291
Commit
b99a8291
authored
Oct 10, 2019
by
Hiro
🏄
Browse files
Finish twitter responder
parent
2082fa2b
Changes
5
Hide whitespace changes
Inline
Side-by-side
gettor.conf.json.example
View file @
b99a8291
...
...
@@ -5,6 +5,7 @@
"email_requests_limit": 30,
"twitter_requests_limit": 1,
"sendmail_interval": 10,
"twitter_interval": 10,
"sendmail_addr": "gettor@torproject.org",
"sendmail_host": "localhost",
"sendmail_port": 587,
...
...
gettor/main.py
View file @
b99a8291
...
...
@@ -28,6 +28,7 @@ def run(gettor, app):
settings
=
options
.
parse_settings
()
sendmail
=
Sendmail
(
settings
)
twitterdm
=
Twitterdm
(
settings
)
log
.
info
(
"Starting services."
)
sendmail_service
=
BaseService
(
...
...
gettor/parse/twitter.py
View file @
b99a8291
...
...
@@ -80,7 +80,7 @@ class TwitterParser(object):
platforms
=
self
.
settings
.
get
(
"platforms"
)
languages
=
[
*
strings
.
get_locales
().
keys
()]
hid
=
hashlib
.
sha256
(
twitter_id
.
encode
(
'utf-8'
))
hid
=
hashlib
.
sha256
(
str
(
twitter_id
)
.
encode
(
'utf-8'
))
log
.
msg
(
"Request from {}"
.
format
(
hid
.
hexdigest
()),
system
=
"twitter parser"
)
...
...
@@ -114,7 +114,7 @@ class TwitterParser(object):
dbname
=
self
.
settings
.
get
(
"dbname"
)
conn
=
SQLite3
(
dbname
)
hid
=
hashlib
.
sha256
(
request
[
'id'
].
encode
(
'utf-8'
))
hid
=
hashlib
.
sha256
(
str
(
request
[
'id'
]
)
.
encode
(
'utf-8'
))
# check limits first
num_requests
=
yield
conn
.
get_num_requests
(
id
=
hid
.
hexdigest
(),
service
=
request
[
'service'
]
...
...
@@ -129,7 +129,7 @@ class TwitterParser(object):
else
:
conn
.
new_request
(
id
=
request
[
'id'
],
id
=
str
(
request
[
'id'
]
)
,
command
=
request
[
'command'
],
platform
=
request
[
'platform'
],
language
=
request
[
'language'
],
...
...
gettor/services/twitter/twitterdm.py
View file @
b99a8291
...
...
@@ -14,7 +14,7 @@ from __future__ import absolute_import
import
gettext
import
hashlib
import
json
import
configparser
...
...
@@ -65,7 +65,7 @@ class Twitterdm(object):
Errback if we don't/can't send the message.
"""
log
.
debug
(
"Could not send message."
)
raise
Error
(
"{}"
.
format
(
error
))
raise
Runtime
Error
(
"{}"
.
format
(
error
))
def
twitterdm
(
self
,
twitter_id
,
message
):
...
...
@@ -80,9 +80,13 @@ class Twitterdm(object):
details.
"""
return
self
.
twitter
.
post_message
(
post_data
=
self
.
twitter
.
post_message
(
twitter_id
,
message
).
addCallback
(
self
.
twitterdm_callback
).
addErrback
(
self
.
twitterdm_errback
)
)
if
post_data
.
status_code
==
200
:
self
.
twitter_callback
else
:
self
.
twitter_errback
@
defer
.
inlineCallbacks
def
get_new
(
self
):
...
...
@@ -96,10 +100,10 @@ class Twitterdm(object):
for
e
in
data
[
'events'
]:
message_id
=
{
'
id
'
:
e
[
'id'
],
'
twitter_handle
'
:
e
[
'message_create'
][
'sender_id'
]
}
message_id
=
{
"
id
"
:
e
[
'id'
],
"
twitter_handle
"
:
e
[
'message_create'
][
'sender_id'
]
}
log
.
debug
(
"Parsing message"
)
tp
=
TwitterParser
(
settings
,
message_id
)
tp
=
TwitterParser
(
self
.
settings
,
message_id
)
yield
defer
.
maybeDeferred
(
tp
.
parse
,
e
[
'message_create'
][
'message_data'
][
'text'
],
message_id
).
addCallback
(
tp
.
parse_callback
).
addErrback
(
tp
.
parse_errback
)
...
...
@@ -119,7 +123,7 @@ class Twitterdm(object):
log
.
info
(
"Got new help request."
)
for
request
in
help_requests
:
ids
=
json
.
load
(
request
[
0
]
)
ids
=
json
.
load
s
(
"{}"
.
format
(
request
[
0
].
replace
(
"'"
,
'"'
))
)
message_id
=
ids
[
'id'
]
twitter_id
=
ids
[
'twitter_handle'
]
date
=
request
[
5
]
...
...
@@ -133,7 +137,7 @@ class Twitterdm(object):
yield
self
.
twitterdm
(
twitter_id
=
twitter_id
,
body
=
strings
.
_
(
"help_body"
)
message
=
strings
.
_
(
"help_body"
)
)
yield
self
.
conn
.
update_stats
(
...
...
@@ -146,7 +150,7 @@ class Twitterdm(object):
service
=
"twitter"
,
date
=
date
)
except
Error
as
e
:
except
Runtime
Error
as
e
:
log
.
info
(
"Error sending twitter message: {}."
.
format
(
e
))
elif
link_requests
:
...
...
@@ -219,7 +223,7 @@ class Twitterdm(object):
service
=
"twitter"
,
date
=
date
)
except
Error
as
e
:
except
Runtime
Error
as
e
:
log
.
info
(
"Error sending message: {}."
.
format
(
e
))
else
:
log
.
debug
(
"No pending twitter requests. Keep waiting."
)
gettor/utils/twitter.py
View file @
b99a8291
...
...
@@ -11,7 +11,6 @@
# :license: This is Free Software. See LICENSE for license information.
from
requests_oauthlib
import
OAuth1Session
import
json
class
Twitter
(
object
):
"""
...
...
@@ -58,4 +57,5 @@ class Twitter(object):
}
}
data
=
self
.
twitter_client
.
post
(
self
.
twitter_new_message_endpoint
,
message
)
data
=
self
.
twitter_client
.
post
(
twitter_new_message_endpoint
,
json
=
message
)
return
data
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment