| 
									
										
										
										
											2020-03-19 12:32:34 +01:00
										 |  |  | #!/usr/bin/env python3 | 
					
						
							| 
									
										
										
										
											2017-08-24 21:59:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | import json | 
					
						
							|  |  |  | import os | 
					
						
							| 
									
										
										
										
											2020-03-19 12:32:34 +01:00
										 |  |  | import urllib.request | 
					
						
							| 
									
										
										
										
											2020-03-19 12:36:30 +01:00
										 |  |  | import urllib.parse | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-24 21:59:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | from scriptCommon import catchPath | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def upload(options): | 
					
						
							| 
									
										
										
										
											2020-03-19 12:36:30 +01:00
										 |  |  | #    request_blah = urllib.request.Request('https:// | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-19 12:32:34 +01:00
										 |  |  |     request = urllib.request.Request('https://melpon.org/wandbox/api/compile.json', method='POST') | 
					
						
							|  |  |  |     json_bytes = json.dumps(options).encode('utf-8') | 
					
						
							|  |  |  |     request.add_header('Content-Type', 'application/json; charset=utf-8') | 
					
						
							|  |  |  |     request.add_header('Content-Length', len(json_bytes)) | 
					
						
							|  |  |  |     response = urllib.request.urlopen(request, json_bytes) | 
					
						
							|  |  |  |     return json.loads(response.read().decode('utf-8')) | 
					
						
							| 
									
										
										
										
											2017-08-24 21:59:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | main_file = '''
 | 
					
						
							|  |  |  | #define CATCH_CONFIG_MAIN  // This tells Catch to provide a main() - only do this in one cpp file | 
					
						
							|  |  |  | #include "catch.hpp" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unsigned int Factorial( unsigned int number ) { | 
					
						
							|  |  |  |     return number <= 1 ? number : Factorial(number-1)*number; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TEST_CASE( "Factorials are computed", "[factorial]" ) { | 
					
						
							|  |  |  |     REQUIRE( Factorial(1) == 1 ); | 
					
						
							|  |  |  |     REQUIRE( Factorial(2) == 2 ); | 
					
						
							|  |  |  |     REQUIRE( Factorial(3) == 6 ); | 
					
						
							|  |  |  |     REQUIRE( Factorial(10) == 3628800 ); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | '''
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def uploadFiles(): | 
					
						
							|  |  |  |     response = upload({ | 
					
						
							|  |  |  |         'compiler': 'gcc-head', | 
					
						
							|  |  |  |         'code': main_file, | 
					
						
							|  |  |  |         'codes': [{ | 
					
						
							|  |  |  |             'file': 'catch.hpp', | 
					
						
							| 
									
										
										
										
											2018-06-11 10:48:10 +02:00
										 |  |  |             'code': open(os.path.join(catchPath, 'single_include', 'catch2', 'catch.hpp')).read() | 
					
						
							| 
									
										
										
										
											2017-08-24 21:59:06 +02:00
										 |  |  |         }], | 
					
						
							|  |  |  |         'options': 'c++11,cpp-no-pedantic,boost-nothing', | 
					
						
							|  |  |  |         'compiler-option-raw': '-DCATCH_CONFIG_FAST_COMPILE', | 
					
						
							|  |  |  |         'save': True | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-20 20:55:59 +02:00
										 |  |  |     if 'url' in response and 'compiler_error' not in response: | 
					
						
							| 
									
										
										
										
											2017-08-24 21:59:06 +02:00
										 |  |  |         return True, response['url'] | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         return False, response |