Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #293: HTTP proxy support #355

Open
wants to merge 24 commits into
base: master
Choose a base branch
from
Open

Conversation

mwilck
Copy link

@mwilck mwilck commented Apr 29, 2016

Hi Vitaiy,

here is a patch for HTTP proxy support (issue #293), plus instructions how to make it work (it requires separate patches for thrift). Please review and apply at your leisure. I tested this through a company proxy, it worked nicely for me.

Regards
Martin

This patch adds support for a HTTP proxy to the geeknote oauth
authorization code. The proxy is read from system settings,
usually the environment variable https_proxy.
Basic proxy authorization is supported.

Note that for geeknote to work through a proxy, proxy support
for thrift needs to be enabled, too. See
https://issues.apache.org/jira/browse/THRIFT-3798
The previous code wouldn't see the changed sys.stdout in printLine().
This way it works better.
The conversion has been broken since be00692. That patch divided
the timestamp effectively by 1000 twice.
Take account of the fact that evernote measures time in milliseconds
since 1.1.1970. Together with the previous commit, this fixes the
test failure in test_print_date().
printList() and searchResult() use 18-character wide date fields.
outTest hasn't been adapted to this until now.
The output was wrong by one \n.
@mwilck mwilck mentioned this pull request May 2, 2016
mwilck added 14 commits May 3, 2016 14:36
thread.join has the advantage to return immediately when the
editor quit, while time.sleep will sleep unconditionally.
Avoid spoiing users's APP_DIR in developer mode. DEV_MODE is likely
to be used from a source directory, so use just TOPDIR/config.
The credentials are read from the APP_DIR/credentials, which shoul
have the following format (parsed with python's exec() function):

credentials="username:password:two-factor-auth-code"
This will be used by the unit tests instead of a real editor.
Its current behavior is to delete all lines containing the word
"delete", and leave all else untouched.
In sandbox mode (DEV_MODE=True), test_print_list_with_urls_success()
makes wrong assumptions about the URLs printed.
The storage "hack" would modify the Storage class and thus affect
other unit tests relying on working Storage(). Use a derived class
instead.
Create a real test case with AssertEqual statements for
test_editWithEditorInThread(). Also, use the pseudoedit editor
to avoid user interaction in the test cases.
A unit test that connects to the evernote sandbox server and
performs various tests. These tests will only be done in DEV_MODE
(sandbox server). It is recommended to put the sandbox server
credentials into $TOPDIR/config/credentials to avoid user interaction
during the test.

NOTE: the notebook deletion is forbidden by evernote by design.
This patch adds a proxy test. The sandbox test is repeated with
a squid proxy created with the proxyenv package
(https://pypi.python.org/pypi/proxyenv). This unit test covers
both proxy support for thrift ("normal" evernote requests) and
for oauth in geeknote (login/logout calls).

This change requires some changes in the setUpClass() procedure of
sandboxTest: geeknote needs to be forced to forget
the credentials for the login/logout test.

Note again that proxy support requires patches for both geeknote
and thrift. See https://issues.apache.org/jira/browse/THRIFT-3798.

Note also that this test, as the sandbox test in general, is only
active with config.DEV_MODE=True. Valid Evernote sandbox credentials
are expected in APP_DIR/credentials for this test to run without
user interaction.
ba47972 had mistakenly set DEV_MODE=True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant