ig3tool 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/bin/ig3tool +17 -21
  2. data/lib/actions/bib.rb +295 -0
  3. data/lib/actions/bitching.rb +19 -0
  4. data/lib/actions/cultuur.rb +3 -0
  5. data/lib/actions/interne.rb +98 -0
  6. data/lib/actions/kaching.rb +90 -0
  7. data/lib/actions/people.rb +178 -0
  8. data/lib/actions/printing.rb +125 -0
  9. data/lib/actions/product.rb +154 -0
  10. data/lib/bib.rb +94 -0
  11. data/lib/billing.rb +112 -0
  12. data/lib/bitching.rb +49 -0
  13. data/lib/config.rb +19 -0
  14. data/lib/glade/cola_light_small.png +0 -0
  15. data/lib/glade/cola_light_xsmall.png +0 -0
  16. data/lib/glade/cola_small.png +0 -0
  17. data/lib/glade/cola_xsmall.png +0 -0
  18. data/lib/glade/doos_small.png +0 -0
  19. data/lib/glade/doos_xsmall.png +0 -0
  20. data/lib/glade/icons/cola_light_small.png +0 -0
  21. data/lib/glade/icons/cola_light_xsmall.png +0 -0
  22. data/lib/glade/icons/cola_small.png +0 -0
  23. data/lib/glade/icons/cola_xsmall.png +0 -0
  24. data/lib/glade/icons/doos_small.png +0 -0
  25. data/lib/glade/icons/doos_xsmall.png +0 -0
  26. data/lib/glade/icons/piggy_small.png +0 -0
  27. data/lib/glade/icons/piggy_xsmall.png +0 -0
  28. data/lib/glade/money_small.png +0 -0
  29. data/lib/glade/money_xsmall.png +0 -0
  30. data/lib/glade/newinterne.glade +504 -0
  31. data/lib/glade/piggy_small.png +0 -0
  32. data/lib/glade/piggy_xsmall.png +0 -0
  33. data/lib/glade/sales.glade +89 -87
  34. data/lib/horrible_hack.rb +15 -0
  35. data/lib/interne.rb +111 -0
  36. data/lib/ldap.rb +104 -0
  37. data/lib/log.rb +25 -0
  38. data/lib/membership.rb +32 -0
  39. data/lib/mymd5.rb +95 -0
  40. data/lib/people.rb +143 -0
  41. data/lib/printing.rb +238 -0
  42. data/lib/request.rb +14 -0
  43. data/lib/sales.rb +158 -0
  44. data/lib/ui/automaatwindow.rb +2 -2
  45. data/lib/ui/bibliotheekwindow.rb +16 -17
  46. data/lib/ui/bibwindow.rb +15 -15
  47. data/lib/ui/gladehelper.rb +20 -6
  48. data/lib/ui/internewindow.rb +12 -9
  49. data/lib/ui/loginwindow.rb +2 -4
  50. data/lib/ui/memberswindow.rb +9 -9
  51. data/lib/ui/newinterne.rb +258 -0
  52. data/lib/ui/peoplewindow.rb +14 -16
  53. data/lib/ui/printenwindow.rb +11 -11
  54. data/lib/ui/printingwindow.rb +19 -20
  55. data/lib/ui/productswindow.rb +27 -15
  56. data/lib/ui/saleswindow.rb +21 -8
  57. data/lib/ui/toolwindow.rb +5 -3
  58. data/lib/utils.rb +106 -0
  59. data/lib/web.rb +98 -0
  60. metadata +48 -3
data/lib/web.rb ADDED
@@ -0,0 +1,98 @@
1
+ module Ig3tool
2
+
3
+ require 'mongrel'
4
+ require 'yaml'
5
+ require 'facets'
6
+
7
+ class WebHandler < Mongrel::HttpHandler
8
+ def decode_body(request)
9
+ if request.params[Mongrel::Const::REQUEST_METHOD] == "POST" then
10
+ type = request.params['CONTENT_TYPE'].sub(/;.*/,'')
11
+ res = case type
12
+ when "application/x-yaml","text/yaml", "text/x-yaml"
13
+ YAML.load request.body
14
+ when "application/x-www-form-urlencoded"
15
+ Mongrel::HttpRequest.query_parse request.body.read
16
+ else
17
+ warn "Warning: don't know how to handle Content-Type: #{type}"
18
+ {}
19
+ end
20
+ res.stringify_keys!
21
+ else
22
+ {}
23
+ end
24
+ end
25
+
26
+ def process(request, response)
27
+ path = request.params[Mongrel::Const::PATH_INFO]
28
+
29
+ # strip leading /, convert all remaining / to _
30
+ (path, params) = path.split('//')
31
+ params = (params || "").split("/")
32
+ command = path.tr('/', '_').sub(/_+$/,'').sub(/^_+/,"")
33
+
34
+ puts "Handling request for #{path}; params: #{params.inspect}"
35
+
36
+ begin
37
+
38
+ if command.empty? then
39
+ response.start(503) do |head,out|
40
+ messages = Ig3tool::Actions.public_methods.reject {|x| Object.respond_to? x or x.starts_with? "_" }
41
+ out << "Please enter a query. Possible commands: #{messages.sort.join(', ')}"
42
+ end
43
+ return
44
+ else
45
+ type = request.params[Mongrel::Const::REQUEST_METHOD]
46
+ extra = decode_body request
47
+ extra.update( :from_uri => params, :given_uri => params.size, :type => type)
48
+ puts "Extra params: #{extra.inspect}"
49
+
50
+ command = command + '!' if type == 'POST'
51
+
52
+ if command != "wannabe!" and command != "register!"
53
+ raise Token, "you need a key" if params.size < 1
54
+ token = params[0]
55
+ raise Token, "invalid key" if not Bitch.can_request?(params[0])
56
+ end
57
+
58
+ r = Ig3tool::Request.new
59
+ r.bitch = Bitch.bitch(token)
60
+ r.request = "REQ: " + command
61
+ r.request += " ; " + params.join(", ")
62
+ r.request += " ; " + extra.to_a.map{|e| e.join(" => ")}.join(", ")
63
+ r.save!
64
+
65
+ answer = Ig3tool::Actions.send(command, extra)
66
+ raised = false
67
+ end
68
+
69
+ rescue IG3Error, NoMethodError => boom
70
+ answer = { "type" => boom.class.to_s, "message" => boom.message }
71
+ raised = true
72
+ rescue Exception => boom
73
+ warn "==== EXCEPTION ===="
74
+ warn "ERROR OCCURED: #{boom.to_s}\n"
75
+ warn "Backtrace: \n"
76
+ warn boom.backtrace.collect {|x| "\t"+x}.join("\n")
77
+ warn "==== EXCEPTION ===="
78
+ answer = { "type" => "InternalError", "message" => boom.to_s, "backtrace" => boom.backtrace }
79
+ raised = true
80
+ end
81
+
82
+ code = raised ? 500 : 200
83
+ response.start(code) do |head,out|
84
+ case request.params['HTTP_ACCEPT']
85
+ when /text\/x-yaml/, /text\/yaml/, /application\/yaml/
86
+ head["Content-Type"] = "application/yaml"
87
+ out << answer.to_yaml
88
+
89
+ else # text dump
90
+ head["Content-Type"] = "text/plain"
91
+ out << answer.inspect
92
+ end
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ig3tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Pinte
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-05 00:00:00 +01:00
12
+ date: 2008-03-24 00:00:00 +01:00
13
13
  default_executable: ig3tool
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.1.0
22
+ version: 0.2.0
23
23
  version:
24
24
  description:
25
25
  email: igtool@infogroep.be
@@ -30,14 +30,51 @@ extensions: []
30
30
  extra_rdoc_files: []
31
31
 
32
32
  files:
33
+ - lib/actions
34
+ - lib/bib.rb
35
+ - lib/billing.rb
36
+ - lib/bitching.rb
37
+ - lib/config.rb
33
38
  - lib/glade
39
+ - lib/horrible_hack.rb
40
+ - lib/interne.rb
41
+ - lib/ldap.rb
34
42
  - lib/lib
43
+ - lib/log.rb
44
+ - lib/membership.rb
45
+ - lib/mymd5.rb
46
+ - lib/people.rb
47
+ - lib/printing.rb
48
+ - lib/request.rb
49
+ - lib/sales.rb
35
50
  - lib/ui
51
+ - lib/utils.rb
52
+ - lib/web.rb
36
53
  - bin/ig3tool
54
+ - lib/actions/bib.rb
55
+ - lib/actions/bitching.rb
56
+ - lib/actions/cultuur.rb
57
+ - lib/actions/interne.rb
58
+ - lib/actions/kaching.rb
59
+ - lib/actions/people.rb
60
+ - lib/actions/printing.rb
61
+ - lib/actions/product.rb
37
62
  - lib/glade/bib.glade
38
63
  - lib/glade/bibliotheek.glade
64
+ - lib/glade/cola_light_small.png
65
+ - lib/glade/cola_light_xsmall.png
66
+ - lib/glade/cola_small.png
67
+ - lib/glade/cola_xsmall.png
68
+ - lib/glade/doos_small.png
69
+ - lib/glade/doos_xsmall.png
39
70
  - lib/glade/icons
40
71
  - lib/glade/icons/cola.png
72
+ - lib/glade/icons/cola_light_small.png
73
+ - lib/glade/icons/cola_light_xsmall.png
74
+ - lib/glade/icons/cola_small.png
75
+ - lib/glade/icons/cola_xsmall.png
76
+ - lib/glade/icons/doos_small.png
77
+ - lib/glade/icons/doos_xsmall.png
41
78
  - lib/glade/icons/emblem-money.png
42
79
  - lib/glade/icons/emblem-package.png
43
80
  - lib/glade/icons/emblem-penning.xpm
@@ -47,6 +84,8 @@ files:
47
84
  - lib/glade/icons/members_klein.png
48
85
  - lib/glade/icons/members_xklein.png
49
86
  - lib/glade/icons/no.xpm
87
+ - lib/glade/icons/piggy_small.png
88
+ - lib/glade/icons/piggy_xsmall.png
50
89
  - lib/glade/icons/stock_book.svg
51
90
  - lib/glade/icons/stock_book_klein.png
52
91
  - lib/glade/icons/stock_book_xklein.png
@@ -63,8 +102,13 @@ files:
63
102
  - lib/glade/members.svg
64
103
  - lib/glade/members_klein.png
65
104
  - lib/glade/members_xklein.png
105
+ - lib/glade/money_small.png
106
+ - lib/glade/money_xsmall.png
107
+ - lib/glade/newinterne.glade
66
108
  - lib/glade/penningtool.glade
67
109
  - lib/glade/people.glade
110
+ - lib/glade/piggy_small.png
111
+ - lib/glade/piggy_xsmall.png
68
112
  - lib/glade/printen.glade
69
113
  - lib/glade/printer.png
70
114
  - lib/glade/printer_klein.png
@@ -90,6 +134,7 @@ files:
90
134
  - lib/ui/loginwindow.rb
91
135
  - lib/ui/memberswindow.rb
92
136
  - lib/ui/messagebox.rb
137
+ - lib/ui/newinterne.rb
93
138
  - lib/ui/peoplewindow.rb
94
139
  - lib/ui/printenwindow.rb
95
140
  - lib/ui/printingwindow.rb