1
0
Fork 0
Commit graph

82 commits

Author SHA1 Message Date
Florent Rougon
af021cc1ef terrasync.py: add function removeDirectoryTree() and exception UserError
The goal of removeDirectoryTree() is to provide a safety net around
recursive directory removal with shutil.rmtree(), in order to prevent
user or bug-caused catastrophic events such as /, /home /home/joeuser or
C:\ being recursively erased.
2018-02-03 11:22:56 +01:00
Florent Rougon
2c6f93aa46 terrasync.py: improve retry logic and error handling
- Add method assembleUrl() to HTTPGetter.

- Raise a NetworkError exception with the particular URL and number of
  retries when it has been exhausted.

- Number of retries is now trivial to expose as a parameter, and set to
  5 in HTTPGetter.

- Sleep for one second between self.httpConnection.close() and
  self.httpConnection.connect() when retrying a failed HTTP request.

- Apply DRY principle.
2018-02-03 11:22:56 +01:00
Florent Rougon
c27ae92c73 terrasync.py: improve error handling
- New generic exception class TerraSyncPyException.

- Add subclass NetworkError of TerraSyncPyException.

- Raise a NetworkError exception when the HTTP return code is not 200.

- hash_of_file() does not silently ignore errors anymore; exceptions
  should be dealt with wherever appropriate by the callers.

  Whenever hash_of_file() returns, its return value is now the SHA-1
  hash of the specified file. This is less error-prone IMHO than
  returning None. Otherwise, calling code could erroneously conclude
  that there is a matching hash when the file to check is actually
  missing. For a concrete example, see the 'dirIndexHash' parameter of
  TerraSync.updateDirectory(), which so far is used precisely with the
  value None to express that "we are just starting the recursion and
  have no hash from the server to compare to".
2018-02-03 11:22:56 +01:00
Florent Rougon
19209a71f0 terrasync.py: improve the HTTPGetter and HTTPGetCallback APIs
When called, the callback passed to HTTPGetter.get() is now explicitly
passed the URL and the http.client.HTTPResponse instance.

Remove the HTTPGetCallback.result attribute (not needed anymore, leaves
more freedom when implementating HTTPGetCallback subclasses...).
2018-02-03 11:22:56 +01:00
Florent Rougon
de4291b851 terrasync.py: make HTTPGetter.get() return the HTTPGetCallback.callback ret value
This way, the caller can get access to interesting things from the
callback, such as the HTTPResponse object (wrapper for the socket).
2018-02-03 11:22:56 +01:00
Florent Rougon
b7fc63d896 terrasync.py: remove methods TerraSync.isReady() and TerraSync.update()
These methods don't work, because HTTPGetter objects have no isReady()
and update() methods either.
2018-02-03 11:22:56 +01:00
Florent Rougon
417d81d4c3 terrasync.py: minor changes
These changes should not alter the behavior of terrasync.py.
2018-02-03 11:22:56 +01:00
Torsten Dreyer
a27ea4dfe6 remove orphan directories with --remove-orphan 2017-09-01 10:33:35 +02:00
Saikrishna Arcot
bb0869599b
Switch to using argparse in terrasync.py, which is actually maintained, and fix a couple of errors. 2016-12-28 08:32:55 -06:00
Saikrishna Arcot
eb4738cb02
Switch to using optparse module, and allow settings bounds from command line. 2016-12-27 22:41:59 -06:00
Saikrishna Arcot
e67ea4e0cb
Add in the ability to download scenery only for a specific section. 2016-12-27 21:17:46 -06:00
Saikrishna Arcot
2c5429c589
Improve error handling.
If the response to the HTTP request isn't 200 (success), then don't save
the response, and don't call the callback.

Additionally, only retry in the case of HTTPException. This allows using
Ctrl-C to work correctly (and easily).
2016-12-27 20:46:59 -06:00
Torsten Dreyer
b9cba13e32 Fix the root cause for terrasync.py timeouts
Thanks to Andre Coetzee for spotting.

Also, don't hardcode port 80, intead use the port given in the url
2016-06-06 12:17:12 +02:00
Torsten Dreyer
a93dd29c85 First attempt to handle the nasty socket timeout
Retry once if a http get fails
2016-05-25 16:19:36 +02:00
Torsten Dreyer
489be2ce16 Add user-agent request header 2016-05-18 15:14:59 +02:00
Torsten Dreyer
6921c98933 Much better terrasync.py
- tortellini instead of spaghetti code (use oop)
- reuse connection
2016-05-18 12:51:29 +02:00
Torsten Dreyer
e2afbb4678 terrasync.py: cleanup and add some more power
- add option --quick
  check sha1sum of .dirindex files and skip directory if hash matches
- add option --remove-orphan
  remove orphan files (files exist locally but not on server)
- be less verbose
- write .dirindex files locally
2016-05-11 23:04:24 +02:00
Torsten Dreyer
0c5e99504d Move terrasync.py to /scripts/python 2016-05-11 14:59:36 +02:00
ThorstenB
924468169d Ignore empty lines in html output. 2012-03-25 10:34:50 +02:00
ThorstenB
8b46ee6648 Adapt script to changed name. 2012-03-04 19:49:28 +01:00
ThorstenB
7d2f2f2b6f Rename to "nasal_api_doc.py". 2012-03-04 19:49:02 +01:00
ThorstenB
8ce0c041ae Ignore .pyc files
(compiled python binaries)
2012-03-04 19:40:19 +01:00
adrian
3c233131f2 updated API script 2012-03-04 19:36:07 +01:00
adrian
39e399d8ec python script which generates $FGROOT/Nasal API documentation 2012-03-04 19:36:07 +01:00
James Turner
70b4f38ebc Goodbye automake. 2011-11-01 11:15:53 +00:00
Christian Schmitt
0a5e86f4e6 remove old .cvsignore files 2010-11-11 01:16:29 +01:00
mfranz
1d15a9272b George PATTERSON:
"Flightgear.py
- Added the procedures view_next and view_prev

demo.py
- altered the wait five seconds to the new property path and allowed for
the script to be started after five seconds of simulation file
(/sim/time/elapsed-sec).
- the section of code was changed to a pythonism as python does not
support do-while loops, instead you break out of a continuous loop.
- Commented out the fg.wait_for_prop_eq() method as I haven't rewritten
that part of the code yet. Not sure of the best way to do that. Those
lines may not be necessary any more."


mf: removed trailing spaces; I updated the pyc, too, but I really think
    it shouldn't be in CVS at all.(?)
2006-10-29 12:34:26 +00:00
curt
9c49534907 Attempt #1 to sort out confusion between left / right / parking brake
controls in the cockpit vs. which wheels they apply to.  FlightGear now
sets /controls/gear/brake-left, /controls/gear/brake-right, and
/controls/gear/brake-parking.  It should be up to the FDM to sort out
which wheels under which circumstances are affected by these controls
and ultimately what happens to the physical motion of the aircraft.
2004-01-12 17:39:41 +00:00
curt
f8c24745b6 Initial revision 2002-09-10 01:13:59 +00:00
curt
6ac85b8625 Fixed a bug in FlightGear.py. Splitting name,value,type using whitespace
failed on /sim/time/gmt-string because the raw value contains an embedded
space.  Now I use a regex instead of a plain split().  I also removed the
view_next and view_prev functions.  These will have to be replaced with
command properties.

I've also added a FGFSDemo.py script which is a python version of David's java program.
2002-07-22 23:25:28 +00:00
david
3754126976 .cvsignore files for new directories. 2002-05-17 18:48:40 +00:00
curt
f69a1c8f66 Added a scripts subdirectory with support for running external python
scripts that communicate with FlightGear via it's "telnet" interface.
2002-05-15 21:45:39 +00:00