rubyment 0.6.25510166 → 0.6.25520442

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubyment.rb +437 -63
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 086bfae4056987bcb9407aef1bfe78b96aced53d
4
- data.tar.gz: 6230971e4d613af63253a9d2e78c6f1614914ddb
3
+ metadata.gz: cce36ba8078584171153cda12ca7047f3d200432
4
+ data.tar.gz: d5a3ac0260a86b0777233502f000f2fa346a5538
5
5
  SHA512:
6
- metadata.gz: 35f4f45bddc27547ec7fd80372fa69fa452c9592308bf86d4a77debfb3eda56e0b761aaaa21fa07a4203f5f4c868ab531e54ad6cf3723b8781a347a2707e1797
7
- data.tar.gz: 15d9d7b9f0608ea360a8c1ef743b4b6f0a8b90fed75978d25117dc7a48ce539a050a8c40290ae93c1d2f991bf2eabedfa388346b5565e96aafed33c67828f20c
6
+ metadata.gz: 2ad63e004ceb35092d1bb56df6a7b4d832c94e6f164f759b4b8955ac345c43cdc4e59c644a7e6230c27618ae75f3e9dd6d460db0864380d440307d3fca013994
7
+ data.tar.gz: 483f0e5096aa5bbe5044e9e3968110e9f4472f6becc35aa036bd92f6b67782390a07938f948c782103839e89415969fc033ad0d11b56a670a510aa9f5cae0ad4
@@ -140,21 +140,46 @@ class Rubyment
140
140
  # @param [splat] +args+, an splat whose elements are expected to be +blea_args+ and +blocks_args+:
141
141
  # +blea_args+:: [Array] args to be used internally, which are expected to be:
142
142
  # +exception_admitted+:: [Boolean]
143
- # +output_exception+:: [Boolean]
143
+ # +output_exception+:: [Boolean] note that this only makes sense if exception is admitted -- otherwise an exception will be normally thrown.
144
+ # +ret_nil_on_exception+:: [Boolean] enforces that +nil+ will be returned on exception
144
145
  # +blocks_args+:: [splat] args to be forwarded to the block call
145
146
  # @return [Proc]
146
147
  def blea *args, &block
147
148
  blea_args, *block_args = args
148
149
  blea_args ||= blea_args.nne []
149
- exception_admitted, output_exception = blea_args
150
- exception_admitted ||= exception_admitted.nne
151
- output_exception ||= output_exception.nne
152
- ble_method = output_exception && :bloe || :blef
150
+ exception_admitted, output_exception, ret_nil_on_exception = blea_args
151
+ exception_admitted = exception_admitted.nne
152
+ output_exception = output_exception.nne
153
+ bloe_method = ret_nil_on_exception && :bloef || :bloe
154
+ ble_method = output_exception && bloe_method || :blef
153
155
  bl_to_call = exception_admitted && ble_method || :bl
154
156
  send bl_to_call, *block_args, &block
155
157
  end
156
158
 
157
159
 
160
+ # creates a Proc out of a block,
161
+ # will capture all exceptions
162
+ # inside that block and ignore it
163
+ # will return nil
164
+ def bloef *args, &block
165
+ block ||= lambda {}
166
+ bl {
167
+ begin
168
+ block.call *args
169
+ rescue => e
170
+ stderr = @memory[:stderr]
171
+ rv = [e.backtrace.join("\n"), e]
172
+ stderr.puts "#{__method__} exception backtrace:"
173
+ stderr.puts rv[0]
174
+ stderr.puts "#{__method__} exception inspection:"
175
+ stderr.puts rv[1].inspect
176
+ stderr.puts "#{__method__} exception message:"
177
+ stderr.puts rv[1]
178
+ end
179
+ }
180
+ end
181
+
182
+
158
183
  # runs a block error free
159
184
  # (returns nil if exception happens)
160
185
  def runef *args, &block
@@ -209,6 +234,9 @@ class Rubyment
209
234
  # in this right moment it is not
210
235
  # yet possible to return the exception
211
236
  # without printing (planned improvement)
237
+ # another desirable case is to output
238
+ # the exception, but don't return it;
239
+ # not yet possible.
212
240
  # @param [splat] +args+, an splat whose elements are expected to be +blea_args+ and +blocks_args+:
213
241
  # +blea_args+:: [Array] args to be used internally, which are expected to be:
214
242
  # +exception_admitted+:: [Boolean]
@@ -342,31 +370,56 @@ class Rubyment
342
370
  end
343
371
 
344
372
 
345
- # reads a uri (if 'open-uri' available, otherwise, just do a normal File.read)
373
+ # reads a uri (if 'rest-client' or 'open-uri' available and they don't throw any exception, otherwise, just do a normal File.read)
346
374
  # @param [Array] args, an +Array+ whose elements are expected to be:
347
- # +uri+:: [String, nil] uri or path of the file
375
+ # +uri+:: [String, nil] uri or path of the file (empty string is assumed in the case of +nil+ given)
348
376
  # +username+:: [String] basic http authentication username
349
377
  # +password+:: [String] basic http authentication password
350
378
  # +return_on_rescue+:: [Object] a default to return in the case of exceptions raised
351
379
  # +return_on_directory_given+:: [Object] a default to return in the case uri is a directory. Defaults to true
380
+ # +skip_open_uri+:: [Boolean] don't bother trying to use 'open-uri' (but still tries to open an uri with 'rest-client'). Defaults to +false+ for open-closed principle respect, but advised to be set to +true+
381
+ # +payload+:: [String]
382
+ # +verify_ssl+:: [Boolean] defaults to +false+
383
+ # +headers+:: [Hash] +"Authorization"+ key will be added to it if +auth_user+ is given. Defaults to +{}+
384
+ # +method+:: [HTTP method] one of +:get+, +:method+, +:post+ or +:delete+. defaults to +:get+
385
+ # +timeout+:: [Fixnum, nil] defaults to +nil+
352
386
  #
353
387
  # @return [String, Object] read data (or +return_on_rescue+)
354
388
  def file_read args=ARGV
355
- uri, username, password, return_on_rescue, return_on_directory_given = args
356
- (require 'open-uri') && open_uri = true
389
+ uri,
390
+ username,
391
+ password,
392
+ return_on_rescue,
393
+ return_on_directory_given,
394
+ skip_open_uri,
395
+ payload,
396
+ verify_ssl,
397
+ headers,
398
+ method,
399
+ timeout,
400
+ reserved = args
401
+ uri = uri.nne ""
357
402
  file_is_directory = File.directory?(uri)
358
403
  return_on_directory_given ||= true
359
- contents = !(file_is_directory) && open_uri && (
404
+ contents = !(file_is_directory) && (
360
405
  begin
361
- open(uri, :http_basic_authentication => [username, password]).read
362
- rescue => e
363
- return_on_rescue
364
- end
365
- ) || (!open_uri) && (
366
- begin
367
- File.read uri
368
- rescue => e
369
- return_on_rescue
406
+ (send :rest_request_or_open_uri_open, [
407
+ uri,
408
+ payload,
409
+ verify_ssl,
410
+ headers,
411
+ method,
412
+ username,
413
+ password,
414
+ timeout,
415
+ skip_open_uri,
416
+ ]).first
417
+ rescue => e1
418
+ begin
419
+ File.read uri
420
+ rescue => e2
421
+ return_on_rescue
422
+ end
370
423
  end
371
424
  ) || (file_is_directory) && (return_on_directory_given)
372
425
  end
@@ -808,43 +861,144 @@ class Rubyment
808
861
 
809
862
 
810
863
  # makes a rest request.
811
- # for now, the parameters must still be hardcoded.
864
+ # @param [Array] +args+, an +Array+ whose elements are expected to be:
865
+ # +url+:: [String]
866
+ # +payload+:: [String]
867
+ # +verify_ssl+:: [Boolean]
868
+ # +headers+:: [Hash] +"Authorization"+ key will be added to it if +auth_user+ is given.
869
+ # +method+:: [HTTP method] one of +:get+, +:method+, +:post+ or +:delete+
870
+ # +auth_user+:: [String, nil] username for basic authentication method
871
+ # +password+:: [String, nil] password for basic authentication method. Will prompt without echo if +nil+ and +auth_user+ is not +nil+
872
+ # +timeout+:: [Fixnum]
873
+ # @return [String] the response
812
874
  def rest_request args=ARGV
813
875
  require 'base64'
814
876
  require 'rest-client'
815
- require 'json'
877
+
816
878
  stderr = @memory[:stderr]
817
879
  time = @memory[:time]
880
+ url,
881
+ payload,
882
+ verify_ssl,
883
+ headers,
884
+ method,
885
+ auth_user,
886
+ password,
887
+ timeout,
888
+ reserved = args
889
+
890
+ auth_user = auth_user.nne
891
+ password = password.nne
892
+ method = method.nne :get
893
+ headers = headers.nne({})
894
+ base64_auth = Base64.encode64 [
895
+ auth_user,
896
+ auth_user && (input_single_line_non_echo [password])
897
+ ].join ":"
898
+ auth_user && (headers["Authorization"] = "Basic #{base64_auth}")
899
+ request_execution = RestClient::Request.execute(:method => method, :url => url, :payload => payload, :headers => headers, :verify_ssl => verify_ssl, :timeout => timeout)
900
+ request_execution.to_s
901
+ end
902
+
903
+
904
+ # calls #rest_request (which depends on +'rest-client'+ gem)
905
+ # in the case it throws an exception, tries to call
906
+ # +'open-uri'+'s #open.
907
+ # note that not the arguments below refer to the #rest_request
908
+ # for #open, only +auth_user+ and +password+ will be
909
+ # forwarded, as they come to this function.
910
+ # @param [Array] +args+, an +Array+ whose elements are expected to be:
911
+ # +url+:: [String]
912
+ # +payload+:: [String]
913
+ # +verify_ssl+:: [Boolean] defaults to +false+
914
+ # +headers+:: [Hash] +"Authorization"+ key will be added to it if +auth_user+ is given. Defaults to +{}+
915
+ # +method+:: [HTTP method] one of +:get+, +:method+, +:post+ or +:delete+. defaults to +:get+
916
+ # +auth_user+:: [String, nil] username for basic authentication method
917
+ # +password+:: [String, nil] password for basic authentication method. Will prompt without echo if +nil+ and +auth_user+ is not +nil+
918
+ # +timeout+:: [Fixnum, nil] defaults to +nil+
919
+ # +skip_open_uri+:: [Boolean] don't bother trying with #open
920
+ # @return [Array] the response
921
+ def rest_request_or_open_uri_open args=ARGV
922
+ url,
923
+ payload,
924
+ verify_ssl,
925
+ headers,
926
+ method,
927
+ auth_user,
928
+ password,
929
+ timeout,
930
+ skip_open_uri,
931
+ reserved = args
932
+ skip_open_uri = skip_open_uri.nne
933
+
934
+ response = runea ["yes, rescue",
935
+ "output exception".negate_me,
936
+ "nil on exception"
937
+ ] {
938
+ send :rest_request, [
939
+ url,
940
+ payload,
941
+ verify_ssl,
942
+ headers,
943
+ method,
944
+ auth_user,
945
+ password,
946
+ timeout,
947
+ ]
948
+ }
949
+ response ||= runea ["yes, rescue".negate_me,
950
+ "output exception".negate_me,
951
+ "nil on exception"
952
+ ] {
953
+ !skip_open_uri && send(
954
+ :open,
955
+ url,
956
+ :http_basic_authentication => [auth_user, password],
957
+ ).read
958
+ }
959
+ [response]
960
+ end
961
+
962
+
963
+ # test #rest_request
964
+ # for now, the parameters must still be hardcoded.
965
+ def test__rest_request args=ARGV
966
+ require 'json'
967
+ stderr = @memory[:stderr]
818
968
 
819
969
  atlasian_account="my_atlasian_account"
820
970
  jira_host = "https://mydomain.atlassian.net/"
821
971
  issue = "JIRAISSUE-6517"
822
972
  url = "#{jira_host}/rest/api/2/issue/#{issue}/comment"
823
- # ways to set base64_auth:
824
- # 1) programmatically: let pw in plain text:
825
- # auth = "my_user:my_pw"
826
- # base64_auth = Base64.encode64 auth
827
- # 2) a bit safer (this hash can be still used
828
- # to hijack your account):
829
- # echo "my_user:my_pw" | base64 # let a whitespace in the beginning
830
- base64_auth = "bXlfdXNlcjpteV9wdwo="
831
- # todo: it has to be interactive, or fetch from a keying
832
- # to achieve good security standards
833
- method = :get
834
- method = :post
835
- timeout = 2000
836
- headers = {"Authorization" => "Basic #{base64_auth}" }
837
- verify_ssl = true
973
+
838
974
  json =<<-ENDHEREDOC
839
975
  {
840
976
  "body" : "my comment"
841
977
  }
842
978
  ENDHEREDOC
843
979
  payload = "#{json}"
844
- request_execution = RestClient::Request.execute(:method => method, :url => url, :payload => payload, :headers => headers, :verify_ssl => verify_ssl, :timeout => timeout)
980
+
981
+ auth_user = nil
982
+ password = nil
983
+ method = :get
984
+ method = :post
985
+ timeout = 2000
986
+ verify_ssl = false
987
+ payload = "#{json}"
988
+ headers = ""
989
+ request_execution = send :rest_request, [
990
+ url,
991
+ payload,
992
+ verify_ssl,
993
+ headers,
994
+ method,
995
+ auth_user,
996
+ password,
997
+ timeout,
998
+ ]
845
999
  parsed_json = JSON.parse request_execution.to_s
846
1000
  stderr.puts parsed_json
847
- parsed_json
1001
+ [parsed_json]
848
1002
  end
849
1003
 
850
1004
 
@@ -2540,10 +2694,10 @@ require '#{gem_name}'
2540
2694
  extra_cert_pem_files,
2541
2695
  output_exception,
2542
2696
  reserved = args
2543
- debug ||= debug.nne
2544
- extra_cert_pem_files ||= extra_cert_pem_files.nne []
2545
- admit_plain ||= admit_plain.nne
2546
- output_exception ||= (
2697
+ debug = debug.nne
2698
+ extra_cert_pem_files = extra_cert_pem_files.nne []
2699
+ admit_plain = admit_plain.nne
2700
+ output_exception = (
2547
2701
  output_exception.nne || admit_plain.negate_me
2548
2702
  )
2549
2703
  debug && (stderr.puts "#{__method__} starting")
@@ -2562,7 +2716,7 @@ require '#{gem_name}'
2562
2716
 
2563
2717
  require 'socket'
2564
2718
  plain_server = TCPServer.new ip_addr, listening_port
2565
- ssl_server = runea [admit_plain, output_exception] {
2719
+ ssl_server = runea [admit_plain, output_exception, "nil on exception"] {
2566
2720
  require 'openssl'
2567
2721
  ssl_context = OpenSSL::SSL::SSLContext.new
2568
2722
  ssl_context.extra_chain_cert =
@@ -2578,8 +2732,10 @@ require '#{gem_name}'
2578
2732
  ssl_server
2579
2733
  }
2580
2734
 
2735
+ rv = ssl_server || admit_plain && plain_server
2736
+ debug && (stderr.puts "will return #{rv}")
2581
2737
  debug && (stderr.puts "#{__method__} returning")
2582
- ssl_server || admit_plain && plain_server
2738
+ rv
2583
2739
  end
2584
2740
 
2585
2741
 
@@ -2622,7 +2778,13 @@ require '#{gem_name}'
2622
2778
  debug.nne && (stderr.puts server)
2623
2779
  Thread.start {
2624
2780
  loop {
2625
- Thread.start(server.accept) { |client|
2781
+ client = runea ["yes, rescue",
2782
+ "yes, output exception",
2783
+ "nil on exception"
2784
+ ] {
2785
+ server.accept
2786
+ }
2787
+ Thread.start(client) { |client|
2626
2788
  debug.nne && (stderr.puts Thread.current)
2627
2789
  debug.nne && (stderr.puts client)
2628
2790
  runoe {
@@ -2697,10 +2859,10 @@ require '#{gem_name}'
2697
2859
  http_server_port,
2698
2860
  http_ip_addr,
2699
2861
  reserved = args
2700
- http_processing_method ||= http_processing_method.nne :http_OK_response
2701
- http_processing_method_args ||= http_processing_method_args.nne []
2702
- http_server_port ||= http_server_port.nne 8003
2703
- http_ip_addr ||= http_ip_addr.nne "0"
2862
+ http_processing_method = http_processing_method.nne :http_OK_response
2863
+ http_processing_method_args = http_processing_method_args.nne []
2864
+ http_server_port = http_server_port.nne 8003
2865
+ http_ip_addr = http_ip_addr.nne "0"
2704
2866
  thread = tcp_server_plain [
2705
2867
  http_server_port,
2706
2868
  http_ip_addr,
@@ -2728,10 +2890,10 @@ require '#{gem_name}'
2728
2890
  http_server_port,
2729
2891
  http_ip_addr,
2730
2892
  reserved = args
2731
- http_processing_method ||= http_processing_method.nne :http_OK_response
2732
- http_processing_method_args ||= http_processing_method_args.nne []
2733
- http_server_port ||= http_server_port.nne 8003
2734
- http_ip_addr ||= http_ip_addr.nne "0"
2893
+ http_processing_method = http_processing_method.nne :http_OK_response
2894
+ http_processing_method_args = http_processing_method_args.nne []
2895
+ http_server_port = http_server_port.nne 8003
2896
+ http_ip_addr = http_ip_addr.nne "0"
2735
2897
  thread = tcp_ssl_server [
2736
2898
  http_server_port,
2737
2899
  http_ip_addr,
@@ -2893,16 +3055,16 @@ n8mFEtUKobsK
2893
3055
  extra_cert_pem_files,
2894
3056
  ssl_cert_pkey_chain_method,
2895
3057
  reserved = args
2896
- http_processing_method ||= http_processing_method.nne :http_OK_response
2897
- http_processing_method_args ||= http_processing_method_args.nne []
2898
- http_server_port ||= http_server_port.nne 8003
2899
- http_ip_addr ||= http_ip_addr.nne "0"
2900
- ssl_cert_pkey_chain_method ||=
3058
+ http_processing_method = http_processing_method.nne :http_OK_response
3059
+ http_processing_method_args = http_processing_method_args.nne []
3060
+ http_server_port = http_server_port.nne 8003
3061
+ http_ip_addr = http_ip_addr.nne "0"
3062
+ ssl_cert_pkey_chain_method =
2901
3063
  ssl_cert_pkey_chain_method.nne :ssl_sample_self_signed_cert_encrypted
2902
3064
  ssl_cert_pkey_chain = send ssl_cert_pkey_chain_method
2903
- priv_pemfile ||= priv_pemfile.nne ssl_cert_pkey_chain[1]
2904
- cert_pem_file ||= cert_pem_file.nne ssl_cert_pkey_chain[0]
2905
- extra_cert_pem_files ||= extra_cert_pem_files.nne ssl_cert_pkey_chain[2]
3065
+ priv_pemfile = priv_pemfile.nne ssl_cert_pkey_chain[1]
3066
+ cert_pem_file = cert_pem_file.nne ssl_cert_pkey_chain[0]
3067
+ extra_cert_pem_files = extra_cert_pem_files.nne ssl_cert_pkey_chain[2]
2906
3068
  thread = tcp_ssl_server [
2907
3069
  http_server_port,
2908
3070
  http_ip_addr,
@@ -2940,8 +3102,8 @@ n8mFEtUKobsK
2940
3102
  # the file.
2941
3103
  def test__file_read__return_on_rescue args=ARGV
2942
3104
  priv_pemfile, cert_pem_file = args
2943
- priv_pemfile ||= priv_pemfile.nne "/tmp/pkey.pem"
2944
- cert_pem_file ||= cert_pem_file.nne "/tmp/cert.crt"
3105
+ priv_pemfile = priv_pemfile.nne "/tmp/pkey.pem"
3106
+ cert_pem_file = cert_pem_file.nne "/tmp/cert.crt"
2945
3107
  runef {
2946
3108
  File.delete priv_pemfile
2947
3109
  File.delete cert_pem_file
@@ -3008,6 +3170,173 @@ n8mFEtUKobsK
3008
3170
  end
3009
3171
 
3010
3172
 
3173
+ # test for tcp_ssl_server (calling an +io_method+,
3174
+ # by default #io_transform, with
3175
+ # a function that processes an http request and returns
3176
+ # an http_response, by default #http_OK_response)
3177
+ # just like #test__tcp_ssl_server__non_ssl,
3178
+ # calling directly #tcp_ssl_server, but making
3179
+ # mandatory the server to be ssl one.
3180
+ # requires, by default that the certificate and its
3181
+ # private key are found in the current dir, which
3182
+ # can be achieved with:
3183
+ # +openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout pkey.pem -out cert.crt+
3184
+ # but if the files don't exist, they will be created
3185
+ # with a sample self signed certificate.
3186
+ def test__tcp_ssl_server__io_method args = ARGV
3187
+ http_processing_method,
3188
+ http_processing_method_args,
3189
+ http_server_port,
3190
+ http_ip_addr,
3191
+ priv_pemfile,
3192
+ cert_pem_file,
3193
+ extra_cert_pem_files,
3194
+ ssl_cert_pkey_chain_method,
3195
+ debug,
3196
+ happy_with_request,
3197
+ io_method,
3198
+ io_method_debug,
3199
+ admit_non_ssl,
3200
+ reserved = args
3201
+ http_processing_method = http_processing_method.nne :http_OK_response
3202
+ http_processing_method_args = http_processing_method_args.nne []
3203
+ http_server_port = http_server_port.nne 8003
3204
+ http_ip_addr = http_ip_addr.nne "0"
3205
+ ssl_cert_pkey_chain_method =
3206
+ ssl_cert_pkey_chain_method.nne :ssl_sample_self_signed_cert_encrypted
3207
+ ssl_cert_pkey_chain = send ssl_cert_pkey_chain_method
3208
+ priv_pemfile = priv_pemfile.nne ssl_cert_pkey_chain[1]
3209
+ cert_pem_file = cert_pem_file.nne ssl_cert_pkey_chain[0]
3210
+ extra_cert_pemiles = extra_cert_pem_files.nne ssl_cert_pkey_chain[2]
3211
+ debug = debug.nne "yes, debug"
3212
+ io_method = io_method.nne "io_transform"
3213
+ io_method_debug = io_method_debug.nne debug
3214
+ happy_with_request = happy_with_request.nne
3215
+ admit_non_ssl = admit_non_ssl.nne
3216
+ tcp_ssl_server_args = [
3217
+ http_server_port,
3218
+ http_ip_addr,
3219
+ debug,
3220
+ admit_non_ssl,
3221
+ io_method,
3222
+ [
3223
+ io_method_debug,
3224
+ happy_with_request,
3225
+ http_processing_method,
3226
+ http_processing_method_args
3227
+ ],
3228
+ priv_pemfile,
3229
+ cert_pem_file,
3230
+ extra_cert_pem_files,
3231
+ "yes, output exceptions",
3232
+ ]
3233
+ thread = tcp_ssl_server tcp_ssl_server_args
3234
+ [ thread ] + tcp_ssl_server_args
3235
+ end
3236
+
3237
+
3238
+ # tests file_read against a uri.
3239
+ # created to test a client for servers
3240
+ # created with
3241
+ # #test__tcp_ssl_server__io_method
3242
+ def test__file_read__uri_root args = ARGV
3243
+ stderr = @memory[:stderr]
3244
+ domain,
3245
+ http_server_port,
3246
+ admit_non_ssl,
3247
+ debug,
3248
+ reserved = args
3249
+ domain = domain.nne "localhost"
3250
+ http_server_port = http_server_port.nne 8003
3251
+ admit_non_ssl = admit_non_ssl.nne true
3252
+ debug = debug.nne
3253
+ stderr.puts admit_non_ssl.inspect
3254
+ stderr.puts (admit_non_ssl && (file_read ["http://#{domain}:#{http_server_port}/"])).inspect
3255
+ response = (file_read ["https://#{domain}:#{http_server_port}/"]) ||
3256
+ admit_non_ssl && (file_read ["http://#{domain}:#{http_server_port}/"])
3257
+ debug && (stderr.puts "response{#{response}}response")
3258
+ response
3259
+ end
3260
+
3261
+
3262
+ # tests test__tcp_ssl_server__io_method and opens
3263
+ # another thread for the client
3264
+ def test__tcp_ssl_server__get_root args = ARGV
3265
+ stderr = @memory[:stderr]
3266
+ tcp_ssl_server_method,
3267
+ http_processing_method,
3268
+ http_processing_method_args,
3269
+ http_server_port,
3270
+ http_ip_addr,
3271
+ priv_pemfile,
3272
+ cert_pem_file,
3273
+ extra_cert_pem_files,
3274
+ ssl_cert_pkey_chain_method,
3275
+ debug_tcp_ssl_server_method,
3276
+ happy_with_request,
3277
+ io_method,
3278
+ io_method_debug,
3279
+ domain,
3280
+ admit_non_ssl,
3281
+ no_debug_client,
3282
+ reserved = args
3283
+ tcp_ssl_server_method = tcp_ssl_server_method.nne :test__tcp_ssl_server__io_method
3284
+ domain = domain.nne "localhost"
3285
+ http_server_port = http_server_port.nne 8003
3286
+ no_debug_client = no_debug_client.nne
3287
+ server_thread = send tcp_ssl_server_method,
3288
+ [
3289
+ http_processing_method,
3290
+ http_processing_method_args,
3291
+ http_server_port,
3292
+ http_ip_addr,
3293
+ priv_pemfile,
3294
+ cert_pem_file,
3295
+ extra_cert_pem_files,
3296
+ ssl_cert_pkey_chain_method,
3297
+ debug_tcp_ssl_server_method,
3298
+ happy_with_request,
3299
+ io_method,
3300
+ io_method_debug,
3301
+ admit_non_ssl,
3302
+ ]
3303
+
3304
+ thread_2 = Thread.new {
3305
+ loop {
3306
+ response = test__file_read__uri_root [
3307
+ domain,
3308
+ http_server_port,
3309
+ admit_non_ssl,
3310
+ no_debug_client.negate_me,
3311
+ ]
3312
+ sleep 2
3313
+ }
3314
+ }
3315
+ server_thread.first.join
3316
+
3317
+ true
3318
+ end
3319
+
3320
+
3321
+ # experimental stuff coming. usage example:
3322
+ # ./rubyment.rb invoke_double p test__shell_send_array__main "tinga" "" sub in EN
3323
+ # ["tENga"]
3324
+ def test__shell_send_array__main args=[]
3325
+ p args
3326
+ object_to_send,
3327
+ reserved,
3328
+ method_to_send,
3329
+ *args_to_send = args
3330
+ object_to_send = object_to_send.nne
3331
+ method_to_send = method_to_send.nne :main
3332
+ object_to_send && (
3333
+ object_to_send.send method_to_send, *args_to_send
3334
+ ) || (!object_to_send) && (
3335
+ send method_to_send, args_to_send
3336
+ )
3337
+ end
3338
+
3339
+
3011
3340
  # test for Object::nne
3012
3341
  def test__object_nne args = ARGV
3013
3342
  string_neutral = ""
@@ -3086,6 +3415,51 @@ n8mFEtUKobsK
3086
3415
  end
3087
3416
 
3088
3417
 
3418
+ # test #rest_request
3419
+ # for now, the parameters must still be hardcoded.
3420
+ def test__rest_request__with_ayt args=ARGV
3421
+ require 'json'
3422
+ stderr = @memory[:stderr]
3423
+
3424
+ url = "https://owl.loftweb.nl:55031/4/3-roOomydev"
3425
+ json =<<-ENDHEREDOC
3426
+ {
3427
+ "operation" : "AYT",
3428
+ "version" : {
3429
+ "client" : "X",
3430
+ "protocol" : {
3431
+ "domain_model" : "4",
3432
+ "API" : "3"
3433
+ }
3434
+ }
3435
+ }
3436
+ ENDHEREDOC
3437
+ payload = "#{json}"
3438
+
3439
+ auth_user = "web"
3440
+ password = "vadim"
3441
+ method = :post
3442
+ method = :get
3443
+ timeout = 600
3444
+ verify_ssl = true
3445
+ payload = "#{json}"
3446
+ headers = ""
3447
+ request_execution = send :rest_request, [
3448
+ url,
3449
+ payload,
3450
+ verify_ssl,
3451
+ headers,
3452
+ method,
3453
+ auth_user,
3454
+ password,
3455
+ timeout,
3456
+ ]
3457
+ parsed_json = JSON.parse request_execution.to_s
3458
+ stderr.puts parsed_json
3459
+ [parsed_json]
3460
+ end
3461
+
3462
+
3089
3463
  end
3090
3464
 
3091
3465
  (__FILE__ == $0) && Rubyment.new({:invoke => ARGV})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.25510166
4
+ version: 0.6.25520442
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribamar Santarosa