{"action":"created","comment":{"url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/comments/58496667","id":58496667,"diff_hunk":"@@ -0,0 +1,372 @@\n+// XMLValidation.cpp : Defines the entry point for the console application.\n+//\n+#include \"stdafx.h\"\n+#include \"NameSpaceUris.h\"\n+#include \"Schemas.h\"\n+#include \"EntityFileResolver.h\"\n+\n+#include <xercesc/util/PlatformUtils.hpp>\n+#include <xercesc/util/XMLString.hpp>\n+#include <xercesc/util/OutOfMemoryException.hpp>\n+#include <xercesc/dom/DOM.hpp>\n+#include <xercesc/parsers/XercesDOMParser.hpp>\n+#include <xercesc/framework/XMLGrammarDescription.hpp>\n+#include <xercesc/sax/ErrorHandler.hpp>\n+#include <xercesc/sax/SAXParseException.hpp>\n+#include <xercesc/sax/EntityResolver.hpp>\n+#include <xercesc/sax/InputSource.hpp>\n+#include <xercesc/framework/LocalFileInputSource.hpp>\n+\n+#include <xsec/utils/XSECPlatformUtils.hpp>\n+#include <xsec/framework/XSECProvider.hpp>\n+#include <xsec/canon/XSECC14n20010315.hpp>\n+#include <xsec/dsig/DSIGSignature.hpp>\n+#include <xsec/framework/XSECException.hpp>\n+#include <xsec/enc/XSECCryptoException.hpp>\n+#include <xsec/utils/XSECDOMUtils.hpp>\n+#include <xsec/enc/XSECKeyInfoResolverDefault.hpp>\n+\n+#include <sys/stat.h>\n+#include <errno.h>\n+\n+#include <iostream>\n+#include <list>\n+#include <string>\n+#include <memory>\n+\n+XERCES_CPP_NAMESPACE_USE\n+\n+using namespace std;\n+\n+#define MAX_FILE_PATH_LENGTH 256\n+const int schemaError = 1;\n+const int signatureError = 2;\n+const int valid = 0;\n+\n+#include <xercesc/framework/MemBufInputSource.hpp>\n+#include <xercesc/framework/LocalFileInputSource.hpp>\n+\n+#include <map>\n+\n+//using namespace QUBE_CPP_UTILS_NS::Xerces;\n+XERCES_CPP_NAMESPACE_USE;\n+using namespace std;\n+\n+/// @cond PRIVATE\n+struct EntityFileInfo\n+{\n+    EntityFileInfo() : Path(), ContentLength(0) {}\n+\n+    ~EntityFileInfo() {}\n+\n+    string Path;\n+    const uint8_t* Content;\n+    size_t ContentLength;\n+};\n+\n+struct Xerces::EntityFileResolver::Impl\n+{\n+    map<string, EntityFileInfo> EntityFileInfos;\n+    string DefaultSearchDirectory;\n+};\n+/// @endcond\n+\n+Xerces::EntityFileResolver::EntityFileResolver() : _impl(new Impl())\n+{\n+}\n+\n+Xerces::EntityFileResolver::EntityFileResolver(const std::string& defaultSearchDirectory)\n+    : _impl(new Impl())\n+{\n+    _impl->DefaultSearchDirectory = defaultSearchDirectory;\n+}\n+\n+Xerces::EntityFileResolver::~EntityFileResolver()\n+{\n+}\n+\n+void Xerces::EntityFileResolver::AddFileContent(const std::string& fileName, \n+                                        const uint8_t* fileContent, size_t fileContentLength)\n+{\n+    if (_impl->EntityFileInfos.count(fileName) != 0)\n+    {\n+        cerr<<\"content already exists for the given file\"<<endl;\n+    }\n+\n+    _impl->EntityFileInfos[fileName].Content = fileContent;\n+    _impl->EntityFileInfos[fileName].ContentLength = fileContentLength;\n+}\n+\n+bool Xerces::EntityFileResolver::IsEmpty() const\n+{\n+    return _impl->EntityFileInfos.empty();\n+}\n+\n+\n+\n+class StrX\n+{\n+    char*   fLocalForm;\n+public :\n+    StrX(const XMLCh* const toTranscode)\n+    {\n+        fLocalForm = XMLString::transcode(toTranscode);\n+    }\n+    ~StrX()\n+    {\n+        XMLString::release(&fLocalForm);\n+    }\n+    const char* localForm() const { return fLocalForm; }\n+};\n+\n+std::ostream&\n+operator<<(std::ostream& target, const StrX& toDump)\n+{\n+    target << toDump.localForm();\n+    return target;\n+}\n+\n+// error handler interface\n+\n+class DOMTreeErrorReporter : public ErrorHandler\n+{\n+public:\n+    void warning(const SAXParseException& toCatch) {}\n+    void resetErrors() {}\n+    void error(const SAXParseException& toCatch)\n+    {\n+        StrX fileNameWithPath(toCatch.getSystemId());\n+        const char* filePath = strrchr(fileNameWithPath.localForm(), '/') + 1;\n+        cerr << \"Error: Schema validation failed for \\\"\" << filePath\n+             << \"\\\": \" << StrX(toCatch.getMessage()) << endl;\n+    }\n+    void fatalError(const SAXParseException& toCatch) {\n+        cerr << \"Fatal Error at file \\\"\" << StrX(toCatch.getSystemId())\n+             << \"\\\", line \" << toCatch.getLineNumber()\n+             << \", column \" << toCatch.getColumnNumber() << endl\n+             << \"Message: \" << StrX(toCatch.getMessage()) << endl;\n+    }\n+};\n+static bool IsFileExists(const char* filePath)\n+{\n+    struct stat fileStat;\n+    if (stat(filePath, &fileStat) == -1 && errno == ENOENT)\n+        return false;\n+    return true;\n+}\n+//---------------------------------------------------------------------------\n+void printUsage()\n+{\n+\tcout<<\"Usage: XMLValidation <XML File Path>\"<<endl;\n+\tcout<<\"Exits with code\"<<endl;\n+\tcout<<\"0 - Valid XML\"<<endl<<\"1 - Schema Check Error\"<<endl<<\"2 - Signature Validation Error\"<<endl;\n+}\n+\n+int IsFilePathValid(const char* filename)\n+{\n+\tif(IsFileExists(filename))\n+\t{\n+\t\tstring fn = filename;\n+\t\tif(fn.substr(fn.find_last_of(\".\") + 1) == \"xml\")\n+\t\t\treturn 1;\n+\t\telse\n+\t\t\treturn 0;\n+\t}\n+\telse\n+\t\treturn 0;\n+}\n+\n+int IsSigValid(DOMDocument *theDOM, DOMNode *sigNode)\n+{\n+\tXSECProvider prov;\n+\tXSECKeyInfoResolverDefault theKeyInfoResolver;\n+\tDSIGSignature * sig = prov.newSignatureFromDOM(theDOM, sigNode);\n+\n+\tsig->setKeyInfoResolver(&theKeyInfoResolver);\n+\tbool result;\n+\ttry\n+\t{\n+\t\tsig->load();\n+\t\tresult = sig->verifySignatureOnly();\n+\t}\n+\tcatch (XSECException &e)\n+\t{\n+\t\tchar * msg = XMLString::transcode(e.getMsg());\n+\t\tcerr << \"An error occured during signature verification\\n   Message: \"\n+\t\t<< msg << endl;\n+\t\tXSEC_RELEASE_XMLCH(msg);\n+\t\treturn 0;\n+\t}\n+\tcatch (XSECCryptoException &e)\n+\t{\n+\t\tcerr << \"An error occured during signature verification\\n   Message: \"\n+\t\t<< e.getMsg() << endl;\n+\t\treturn 0;\n+\t}\n+\tcatch (...) \n+\t{\n+\t\tcerr << \"Unknown Exception type occured.  Cleaning up and exiting\\n\" << endl;\n+\t\treturn 0;\n+\t}\n+\tif (result)\n+\t{\n+\t\tcout << \"Valid XML\" << endl;\n+\t\treturn 1;\n+\t}\n+\telse\n+\t{\n+\t\tcout << \"Invalid XML\" << endl;\n+\t\tchar * e = XMLString::transcode(sig->getErrMsgs());\n+\t\tcout << e << endl;\n+\t\tXSEC_RELEASE_XMLCH(e);\n+\t\treturn 0;\n+\t}\n+\t\n+}\n+\t\n+\n+int main(int argc, const char** argv)\n+{\n+\tif (argc < 2)\n+\t{\n+\t\tprintUsage();\n+\t\texit (1);\n+\t}\n+\telse\n+\t{\n+\t\tif(!IsFilePathValid(argv[1]))\n+\t\t{\n+\t\tcout<<\"Invalid File\";\n+\t\texit(1);\n+\t\t}\n+\t}\n+    try\n+    {\n+       XMLPlatformUtils::Initialize();\n+\t   XSECPlatformUtils::Initialise();\n+    }\n+    catch(const XMLException& e)\n+    {\n+        StrX tmp_e(e.getMessage());\n+        cerr << \"Initialization error: \" << tmp_e.localForm() << endl;\n+        return schemaError;\n+    }\n+\n+    unique_ptr<XercesDOMParser> parser(new XercesDOMParser);\n+    unique_ptr<DOMTreeErrorReporter> errReporter(new DOMTreeErrorReporter());\n+    parser->setErrorHandler(errReporter.get());\n+    parser->setDoNamespaces(true);\n+    parser->useCachedGrammarInParse(true);\n+    parser->setValidationScheme(XercesDOMParser::Val_Auto);","path":"validate-xml/validate-xml.cpp","position":260,"original_position":260,"commit_id":"f06ea525b261d8ef8574618323f751e836a418be","original_commit_id":"f06ea525b261d8ef8574618323f751e836a418be","user":{"login":"RajaBoseLeoM","id":14531963,"avatar_url":"https://avatars.githubusercontent.com/u/14531963?v=3","gravatar_id":"","url":"https://api.github.com/users/RajaBoseLeoM","html_url":"https://github.com/RajaBoseLeoM","followers_url":"https://api.github.com/users/RajaBoseLeoM/followers","following_url":"https://api.github.com/users/RajaBoseLeoM/following{/other_user}","gists_url":"https://api.github.com/users/RajaBoseLeoM/gists{/gist_id}","starred_url":"https://api.github.com/users/RajaBoseLeoM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RajaBoseLeoM/subscriptions","organizations_url":"https://api.github.com/users/RajaBoseLeoM/orgs","repos_url":"https://api.github.com/users/RajaBoseLeoM/repos","events_url":"https://api.github.com/users/RajaBoseLeoM/events{/privacy}","received_events_url":"https://api.github.com/users/RajaBoseLeoM/received_events","type":"User","site_admin":false},"body":"Can you set parser->cacheGrammarFromParse(true) as well?","created_at":"2016-04-05T07:26:13Z","updated_at":"2016-04-05T07:26:13Z","html_url":"https://github.com/deepika-ms/validate-xml/pull/1#discussion_r58496667","pull_request_url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/comments/58496667"},"html":{"href":"https://github.com/deepika-ms/validate-xml/pull/1#discussion_r58496667"},"pull_request":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1","id":65140561,"html_url":"https://github.com/deepika-ms/validate-xml/pull/1","diff_url":"https://github.com/deepika-ms/validate-xml/pull/1.diff","patch_url":"https://github.com/deepika-ms/validate-xml/pull/1.patch","issue_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues/1","number":1,"state":"open","locked":false,"title":"Dev branch","user":{"login":"deepika-ms","id":17448791,"avatar_url":"https://avatars.githubusercontent.com/u/17448791?v=3","gravatar_id":"","url":"https://api.github.com/users/deepika-ms","html_url":"https://github.com/deepika-ms","followers_url":"https://api.github.com/users/deepika-ms/followers","following_url":"https://api.github.com/users/deepika-ms/following{/other_user}","gists_url":"https://api.github.com/users/deepika-ms/gists{/gist_id}","starred_url":"https://api.github.com/users/deepika-ms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepika-ms/subscriptions","organizations_url":"https://api.github.com/users/deepika-ms/orgs","repos_url":"https://api.github.com/users/deepika-ms/repos","events_url":"https://api.github.com/users/deepika-ms/events{/privacy}","received_events_url":"https://api.github.com/users/deepika-ms/received_events","type":"User","site_admin":false},"body":"@Iyer-VivekAnand Please review the code","created_at":"2016-04-04T12:55:54Z","updated_at":"2016-04-05T07:26:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"341647cc760297a7ee8f7545983b259a82cbb2ec","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1/commits","review_comments_url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1/comments","review_comment_url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/comments{/number}","comments_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues/1/comments","statuses_url":"https://api.github.com/repos/deepika-ms/validate-xml/statuses/f06ea525b261d8ef8574618323f751e836a418be","head":{"label":"deepika-ms:dev-branch","ref":"dev-branch","sha":"f06ea525b261d8ef8574618323f751e836a418be","user":{"login":"deepika-ms","id":17448791,"avatar_url":"https://avatars.githubusercontent.com/u/17448791?v=3","gravatar_id":"","url":"https://api.github.com/users/deepika-ms","html_url":"https://github.com/deepika-ms","followers_url":"https://api.github.com/users/deepika-ms/followers","following_url":"https://api.github.com/users/deepika-ms/following{/other_user}","gists_url":"https://api.github.com/users/deepika-ms/gists{/gist_id}","starred_url":"https://api.github.com/users/deepika-ms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepika-ms/subscriptions","organizations_url":"https://api.github.com/users/deepika-ms/orgs","repos_url":"https://api.github.com/users/deepika-ms/repos","events_url":"https://api.github.com/users/deepika-ms/events{/privacy}","received_events_url":"https://api.github.com/users/deepika-ms/received_events","type":"User","site_admin":false},"repo":{"id":55409945,"name":"validate-xml","full_name":"deepika-ms/validate-xml","owner":{"login":"deepika-ms","id":17448791,"avatar_url":"https://avatars.githubusercontent.com/u/17448791?v=3","gravatar_id":"","url":"https://api.github.com/users/deepika-ms","html_url":"https://github.com/deepika-ms","followers_url":"https://api.github.com/users/deepika-ms/followers","following_url":"https://api.github.com/users/deepika-ms/following{/other_user}","gists_url":"https://api.github.com/users/deepika-ms/gists{/gist_id}","starred_url":"https://api.github.com/users/deepika-ms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepika-ms/subscriptions","organizations_url":"https://api.github.com/users/deepika-ms/orgs","repos_url":"https://api.github.com/users/deepika-ms/repos","events_url":"https://api.github.com/users/deepika-ms/events{/privacy}","received_events_url":"https://api.github.com/users/deepika-ms/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/deepika-ms/validate-xml","description":"","fork":false,"url":"https://api.github.com/repos/deepika-ms/validate-xml","forks_url":"https://api.github.com/repos/deepika-ms/validate-xml/forks","keys_url":"https://api.github.com/repos/deepika-ms/validate-xml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/deepika-ms/validate-xml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/deepika-ms/validate-xml/teams","hooks_url":"https://api.github.com/repos/deepika-ms/validate-xml/hooks","issue_events_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues/events{/number}","events_url":"https://api.github.com/repos/deepika-ms/validate-xml/events","assignees_url":"https://api.github.com/repos/deepika-ms/validate-xml/assignees{/user}","branches_url":"https://api.github.com/repos/deepika-ms/validate-xml/branches{/branch}","tags_url":"https://api.github.com/repos/deepika-ms/validate-xml/tags","blobs_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/refs{/sha}","trees_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/deepika-ms/validate-xml/statuses/{sha}","languages_url":"https://api.github.com/repos/deepika-ms/validate-xml/languages","stargazers_url":"https://api.github.com/repos/deepika-ms/validate-xml/stargazers","contributors_url":"https://api.github.com/repos/deepika-ms/validate-xml/contributors","subscribers_url":"https://api.github.com/repos/deepika-ms/validate-xml/subscribers","subscription_url":"https://api.github.com/repos/deepika-ms/validate-xml/subscription","commits_url":"https://api.github.com/repos/deepika-ms/validate-xml/commits{/sha}","git_commits_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/commits{/sha}","comments_url":"https://api.github.com/repos/deepika-ms/validate-xml/comments{/number}","issue_comment_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues/comments{/number}","contents_url":"https://api.github.com/repos/deepika-ms/validate-xml/contents/{+path}","compare_url":"https://api.github.com/repos/deepika-ms/validate-xml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/deepika-ms/validate-xml/merges","archive_url":"https://api.github.com/repos/deepika-ms/validate-xml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/deepika-ms/validate-xml/downloads","issues_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues{/number}","pulls_url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls{/number}","milestones_url":"https://api.github.com/repos/deepika-ms/validate-xml/milestones{/number}","notifications_url":"https://api.github.com/repos/deepika-ms/validate-xml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/deepika-ms/validate-xml/labels{/name}","releases_url":"https://api.github.com/repos/deepika-ms/validate-xml/releases{/id}","deployments_url":"https://api.github.com/repos/deepika-ms/validate-xml/deployments","created_at":"2016-04-04T12:36:23Z","updated_at":"2016-04-04T12:36:23Z","pushed_at":"2016-04-04T12:55:54Z","git_url":"git://github.com/deepika-ms/validate-xml.git","ssh_url":"git@github.com:deepika-ms/validate-xml.git","clone_url":"https://github.com/deepika-ms/validate-xml.git","svn_url":"https://github.com/deepika-ms/validate-xml","homepage":null,"size":38,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"deepika-ms:master","ref":"master","sha":"80898070d3cc80797842e541fe25f8d0e98acc71","user":{"login":"deepika-ms","id":17448791,"avatar_url":"https://avatars.githubusercontent.com/u/17448791?v=3","gravatar_id":"","url":"https://api.github.com/users/deepika-ms","html_url":"https://github.com/deepika-ms","followers_url":"https://api.github.com/users/deepika-ms/followers","following_url":"https://api.github.com/users/deepika-ms/following{/other_user}","gists_url":"https://api.github.com/users/deepika-ms/gists{/gist_id}","starred_url":"https://api.github.com/users/deepika-ms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepika-ms/subscriptions","organizations_url":"https://api.github.com/users/deepika-ms/orgs","repos_url":"https://api.github.com/users/deepika-ms/repos","events_url":"https://api.github.com/users/deepika-ms/events{/privacy}","received_events_url":"https://api.github.com/users/deepika-ms/received_events","type":"User","site_admin":false},"repo":{"id":55409945,"name":"validate-xml","full_name":"deepika-ms/validate-xml","owner":{"login":"deepika-ms","id":17448791,"avatar_url":"https://avatars.githubusercontent.com/u/17448791?v=3","gravatar_id":"","url":"https://api.github.com/users/deepika-ms","html_url":"https://github.com/deepika-ms","followers_url":"https://api.github.com/users/deepika-ms/followers","following_url":"https://api.github.com/users/deepika-ms/following{/other_user}","gists_url":"https://api.github.com/users/deepika-ms/gists{/gist_id}","starred_url":"https://api.github.com/users/deepika-ms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepika-ms/subscriptions","organizations_url":"https://api.github.com/users/deepika-ms/orgs","repos_url":"https://api.github.com/users/deepika-ms/repos","events_url":"https://api.github.com/users/deepika-ms/events{/privacy}","received_events_url":"https://api.github.com/users/deepika-ms/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/deepika-ms/validate-xml","description":"","fork":false,"url":"https://api.github.com/repos/deepika-ms/validate-xml","forks_url":"https://api.github.com/repos/deepika-ms/validate-xml/forks","keys_url":"https://api.github.com/repos/deepika-ms/validate-xml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/deepika-ms/validate-xml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/deepika-ms/validate-xml/teams","hooks_url":"https://api.github.com/repos/deepika-ms/validate-xml/hooks","issue_events_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues/events{/number}","events_url":"https://api.github.com/repos/deepika-ms/validate-xml/events","assignees_url":"https://api.github.com/repos/deepika-ms/validate-xml/assignees{/user}","branches_url":"https://api.github.com/repos/deepika-ms/validate-xml/branches{/branch}","tags_url":"https://api.github.com/repos/deepika-ms/validate-xml/tags","blobs_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/refs{/sha}","trees_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/deepika-ms/validate-xml/statuses/{sha}","languages_url":"https://api.github.com/repos/deepika-ms/validate-xml/languages","stargazers_url":"https://api.github.com/repos/deepika-ms/validate-xml/stargazers","contributors_url":"https://api.github.com/repos/deepika-ms/validate-xml/contributors","subscribers_url":"https://api.github.com/repos/deepika-ms/validate-xml/subscribers","subscription_url":"https://api.github.com/repos/deepika-ms/validate-xml/subscription","commits_url":"https://api.github.com/repos/deepika-ms/validate-xml/commits{/sha}","git_commits_url":"https://api.github.com/repos/deepika-ms/validate-xml/git/commits{/sha}","comments_url":"https://api.github.com/repos/deepika-ms/validate-xml/comments{/number}","issue_comment_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues/comments{/number}","contents_url":"https://api.github.com/repos/deepika-ms/validate-xml/contents/{+path}","compare_url":"https://api.github.com/repos/deepika-ms/validate-xml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/deepika-ms/validate-xml/merges","archive_url":"https://api.github.com/repos/deepika-ms/validate-xml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/deepika-ms/validate-xml/downloads","issues_url":"https://api.github.com/repos/deepika-ms/validate-xml/issues{/number}","pulls_url":"https://api.github.com/repos/deepika-ms/validate-xml/pulls{/number}","milestones_url":"https://api.github.com/repos/deepika-ms/validate-xml/milestones{/number}","notifications_url":"https://api.github.com/repos/deepika-ms/validate-xml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/deepika-ms/validate-xml/labels{/name}","releases_url":"https://api.github.com/repos/deepika-ms/validate-xml/releases{/id}","deployments_url":"https://api.github.com/repos/deepika-ms/validate-xml/deployments","created_at":"2016-04-04T12:36:23Z","updated_at":"2016-04-04T12:36:23Z","pushed_at":"2016-04-04T12:55:54Z","git_url":"git://github.com/deepika-ms/validate-xml.git","ssh_url":"git@github.com:deepika-ms/validate-xml.git","clone_url":"https://github.com/deepika-ms/validate-xml.git","svn_url":"https://github.com/deepika-ms/validate-xml","homepage":null,"size":38,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1"},"html":{"href":"https://github.com/deepika-ms/validate-xml/pull/1"},"issue":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/issues/1"},"comments":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/deepika-ms/validate-xml/statuses/f06ea525b261d8ef8574618323f751e836a418be"}}}}