public async Task <RamlDocument> LoadRamlAsync(string raml) { if (string.IsNullOrWhiteSpace(raml)) { throw new ArgumentException("raml"); } var load = Edge.Func(@" return function (content, callback) { var raml = require('raml-parser'); raml.load(content).then( function(parsed) { callback(null, parsed); }, function(error) { callback(null, 'Error parsing: ' + error); }); } "); var rawresult = await load(raml); var error = rawresult as string; if (!string.IsNullOrWhiteSpace(error) && error.ToLowerInvariant().Contains("error")) { throw new FormatException(error); } var ramlDocument = new RamlBuilder().Build((IDictionary <string, object>)rawresult); return(ramlDocument); }
public void should_parse_whewn_oauth1() { var dynamicRaml = new Dictionary <string, object>(); dynamicRaml.Add("title", "test"); dynamicRaml.Add("baseUri", "http://baseuri.com"); var oauth = new Dictionary <string, object>(); var settings = new Dictionary <string, object>(); var oauthSettings = new Dictionary <string, object>(); oauthSettings.Add("authorizationUri", "https://authorization.com"); oauthSettings.Add("tokenCredentialsUri", "https://tokencredentials.com"); oauthSettings.Add("requestTokenUri", "https://requesttoken.com"); settings.Add("settings", oauthSettings); settings.Add("type", "OAuth 1.0"); oauth.Add("oauth_1_0", settings); var securitySchemes = new object[] { oauth }; dynamicRaml.Add("securitySchemes", securitySchemes); var ramlDocument = new RamlBuilder().Build(dynamicRaml); var security = SecurityParser.GetSecurity(ramlDocument); Assert.AreEqual("https://tokencredentials.com", security.TokenCredentialsUri); Assert.AreEqual("https://requesttoken.com", security.RequestTokenUri); Assert.AreEqual("https://authorization.com", security.AuthorizationUri); }
public void should_parse_whewn_oauth2() { var dynamicRaml = new Dictionary <string, object>(); dynamicRaml.Add("title", "test"); dynamicRaml.Add("baseUri", "http://baseuri.com"); var oauth = new Dictionary <string, object>(); var settings = new Dictionary <string, object>(); var oauthSettings = new Dictionary <string, object>(); oauthSettings.Add("authorizationUri", "https://authorization.com"); oauthSettings.Add("accessTokenUri", "https://accesstoken.com"); oauthSettings.Add("authorizationGrants", new [] { "read", "write" }); settings.Add("settings", oauthSettings); settings.Add("type", "OAuth 2.0"); oauth.Add("oauth_2_0", settings); var securitySchemes = new object[] { oauth }; dynamicRaml.Add("securitySchemes", securitySchemes); var ramlDocument = new RamlBuilder().Build(dynamicRaml); var security = SecurityParser.GetSecurity(ramlDocument); Assert.AreEqual("https://accesstoken.com", security.AccessTokenUri); Assert.AreEqual("read", security.AuthorizationGrants.First()); Assert.AreEqual("https://authorization.com", security.AuthorizationUri); }
public async Task <RamlDocument> LoadAsync(string filePath) { if (string.IsNullOrWhiteSpace(filePath)) { throw new ArgumentException("filePath"); } var load = Edge.Func(@" return function (filepath, callback) { var raml1Parser = require('raml-1-0-parser'); var path = require('path'); var api = raml1Parser.loadApiSync(filepath); var errors = ''; var isError = false; for (var i = 0; i < api.errors().length; i++) { if (!api.errors()[i].isWarning) isError = true; errors += (api.errors()[i].isWarning ? 'Warning: ' : 'Error: ') + api.errors()[i].message + '\r\n'; errors += 'Line: ' + api.errors()[i].line + ', column: ' + api.errors()[i].column; if (api.errors()[i].path != null) errors += ', ' + api.errors()[i].path + '\r\n'; else errors += '\r\n'; errors += '\r\n'; } if (isError) callback(null, 'Error: when parsing.\r\n\r\n' + errors); else callback(null, api.toJSON()) } "); var rawresult = await load(filePath); var error = rawresult as string; if (!string.IsNullOrWhiteSpace(error) && error.ToLowerInvariant().Contains("error")) { throw new FormatException(error); } var ramlDocument = new RamlBuilder().Build((IDictionary <string, object>)rawresult); return(ramlDocument); }
public async Task <RamlDocument> LoadRamlAsync(string raml, string path) { if (string.IsNullOrWhiteSpace(raml)) { throw new ArgumentException("raml"); } var load = Edge.Func(@" return function (obj, callback) { var raml = require('raml-parser'); raml.load(obj.content, obj.path).then( function(parsed) { callback(null, parsed); }, function(error) { callback(null, 'Error parsing: ' + error); }); } "); if (!string.IsNullOrWhiteSpace(path) && !path.EndsWith(Path.DirectorySeparatorChar.ToString())) { path += Path.DirectorySeparatorChar; } var rawresult = await load(new { content = raml, path }); var error = rawresult as string; if (!string.IsNullOrWhiteSpace(error) && error.ToLowerInvariant().Contains("error")) { throw new FormatException(error); } var ramlDocument = new RamlBuilder().Build((IDictionary <string, object>)rawresult); return(ramlDocument); }
public async Task <RamlDocument> LoadAsync(string filePath, string[] extensionPaths) { if (string.IsNullOrWhiteSpace(filePath)) { throw new ArgumentException("filePath"); } var load = Edge.Func(@" function position(pos, positions) { var row = -1; var col = -1; for (var i = 0; i < positions.length; i++) { if (positions[i] >= pos) { row = i + 1; col = positions[i-1] - pos; return { row: row, col: col }; } } return { row: row, col: col }; } return function (obj, callback) { var raml1Parser = require('raml-1-0-parser'); var path = require('path'); var api = raml1Parser.loadApiSync(obj.Filepath, obj.Extensions); var fs = require('fs'); var arr = []; var content = fs.readFileSync(obj.Filepath).toString(); content.split('\n').forEach(function (x, i) { if (i == 0) { arr.push(x.length + 1); } else { arr.push(arr[i - 1] + x.length + 1); } }); //+1 stands for '\n' var errors = ''; var isError = false; for (var i = 0; i < api.errors().length; i++) { var pos = position(api.errors()[i].start, arr); if (!api.errors()[i].isWarning) isError = true; errors += (api.errors()[i].isWarning ? 'Warning: ' : 'Error: ') + api.errors()[i].message + '\r\n'; errors += 'Start: ' + api.errors()[i].start + ' - end: ' + api.errors()[i].end + '\r\n'; errors += 'Line: ' + pos.row + ', col: ' + pos.col + '\r\n'; if (api.errors()[i].path != null) errors += 'In: ' + api.errors()[i].path + '\r\n'; } if (isError) callback(null, 'Error: when parsing.\r\n' + errors); else callback(null, api.toJSON()) } "); var rawresult = await load(new { Filepath = filePath, Extensions = extensionPaths }); var error = rawresult as string; if (!string.IsNullOrWhiteSpace(error) && error.ToLowerInvariant().Contains("error")) { throw new FormatException(error); } var ramlDocument = new RamlBuilder().Build((IDictionary <string, object>)rawresult); return(ramlDocument); }