@@ -33,43 +33,55 @@ public function compileAction($auth_key, $version)
33
33
34
34
if ($ auth_key !== $ this ->container ->getParameter ('auth_key ' ))
35
35
{
36
- return new Response (json_encode (array ("success " => false , "step " => 0 , " message " => "Invalid authorization key. " )));
36
+ return new Response (json_encode (array ("success " => false , "message " => "Invalid authorization key. " )));
37
37
}
38
38
39
39
if ($ version !== $ this ->container ->getParameter ('version ' ))
40
40
{
41
- return new Response (json_encode (array ("success " => false , "step " => 0 , " message " => "Invalid api version. " )));
41
+ return new Response (json_encode (array ("success " => false , "message " => "Invalid api version. " )));
42
42
}
43
43
44
+ $ request = $ this ->getRequest ()->getContent ();
44
45
if (empty ($ request ))
45
46
{
46
- return new Response (json_encode (array ("success " => false , "step " => 0 , " message " => "Invalid input. " )));
47
+ return new Response (json_encode (array ("success " => false , "message " => "Invalid input. " )));
47
48
}
48
49
49
- $ request = $ this ->getRequest ()->getContent ();
50
-
51
50
$ contents = json_decode ($ request , true );
52
51
53
52
$ apihandler = $ this ->get ('codebender_api.handler ' );
54
53
55
54
$ files = $ contents ["files " ];
56
55
56
+ $ this ->checkForUserProject ($ files );
57
+
57
58
$ userlibs = array ();
59
+
58
60
if (array_key_exists ('libraries ' , $ contents ))
59
61
$ userlibs = $ contents ['libraries ' ];
60
62
61
- $ headersArr = $ this ->checkHeaders ($ files , $ userlibs );
63
+ $ parsedLibs = $ this ->checkHeaders ($ files , $ userlibs );
62
64
63
- $ contents ['files ' ][] = array ('filename ' => 'user_null.txt ' , 'content ' => '' );
64
- $ contents ['files ' ][] = array ('filename ' => 'null.txt ' , 'content ' => '' );
65
+ $ contents ["libraries " ] = $ parsedLibs ['libraries ' ];
65
66
66
- $ contents ["libraries " ] = $ headersArr ['libraries ' ];
67
67
$ request_content = json_encode ($ contents );
68
68
69
69
// perform the actual post to the compiler
70
70
$ data = $ apihandler ->post_raw_data ($ this ->container ->getParameter ('compiler ' ), $ request_content );
71
71
72
- return new Response ($ data );
72
+ $ decoded = json_decode ($ data , true );
73
+ if ($ decoded == null )
74
+ {
75
+ return new Response (json_encode (array ("success " => false , "message " => "Failed to get compiler response. " )));
76
+ }
77
+
78
+ if ($ decoded ["success " ] === false && !array_key_exists ("step " , $ decoded ))
79
+ $ decoded ["step " ] = "unknown " ;
80
+
81
+ unset($ parsedLibs ['libraries ' ]);
82
+ $ decoded ['additionalCode ' ] = $ parsedLibs ;
83
+
84
+ return new Response (json_encode ($ decoded ));
73
85
}
74
86
75
87
/**
0 commit comments