{"action":"created","comment":{"url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/comments/67063007","id":67063007,"diff_hunk":"@@ -0,0 +1,1078 @@\n+#ifndef CEREAL_ARCHIVES_BSON_HPP_\n+#define CEREAL_ARCHIVES_BSON_HPP_\n+\n+#include <stack>\n+#include <string>\n+#include <vector>\n+\n+#include <cereal/cereal.hpp>\n+\n+#include <bsoncxx/builder/core.hpp>\n+#include <bsoncxx/types.hpp>\n+#include <bsoncxx/types/value.hpp>\n+\n+namespace cereal {\n+/**\n+ * A templated stuct containing a bool value that specifies whether the\n+ * provided template parameter is a BSON type.\n+ */\n+template <class BsonT>\n+struct is_bson {\n+    static constexpr auto value = std::is_same<BsonT, bsoncxx::types::b_double>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_utf8>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_document>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_array>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_binary>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_oid>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_bool>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_date>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_int32>::value ||\n+                                  std::is_same<BsonT, bsoncxx::types::b_int64>::value ||\n+                                  std::is_same<BsonT, bsoncxx::oid>::value;\n+};\n+\n+class BSONOutputArchive : public OutputArchive<BSONOutputArchive> {\n+    /**\n+    * The possible states for the BSON nodes being output by the archive.\n+    */\n+    enum class OutputNodeType { StartObject, InObject, StartArray, InArray };\n+\n+    typedef bsoncxx::builder::core BSONBuilder;\n+\n+   public:\n+    /**\n+    * Construct a BSONOutputArchive that will output to the provided stream.\n+    *\n+    * @param stream\n+    *   The stream to which the archiver will output BSON data.\n+    */\n+    BSONOutputArchive(std::ostream& stream)\n+        : OutputArchive<BSONOutputArchive>{this},\n+          _bsonBuilder{false},\n+          _writeStream{stream},\n+          _nextName{nullptr} {\n+    }\n+\n+   private:\n+    /**\n+     * Writes the current contents of the BSON document builder to the\n+     * output stream.\n+     */\n+    void writeDoc() {\n+        _writeStream.write(reinterpret_cast<const char*>(_bsonBuilder.view_document().data()),\n+                           _bsonBuilder.view_document().length());\n+        _bsonBuilder.clear();\n+    }\n+\n+   public:\n+    /**\n+     * Checks if the most recent object written was in the root of the document.\n+     * If so, that document is written to the archive.\n+     */\n+    void writeDocIfRoot() {\n+        if (_nodeTypeStack.empty()) {\n+            writeDoc();\n+        }\n+    }\n+\n+    /**\n+     * Starts a new node in the BSON output.\n+     *\n+     * The node can optionally be given a name by calling setNextName prior to\n+     * creating the node. Nodes only need to be started for types that are\n+     * objects or arrays.\n+     */\n+    void startNode() {\n+        writeName(true);\n+        _nodeTypeStack.push(OutputNodeType::StartObject);\n+    }\n+\n+    /**\n+     * Designates the most recently added node as finished.\n+     */\n+    void finishNode() {\n+        // Iff we ended up serializing an empty object or array, writeName\n+        // will never have been called - so start and then immediately end\n+        // the object/array.\n+        //\n+        // We'll also end any object/arrays we happen to be in.\n+\n+        bool closedObj = false;\n+        switch (_nodeTypeStack.top()) {\n+            case OutputNodeType::StartArray:\n+                _bsonBuilder.open_array();\n+            case OutputNodeType::InArray:\n+                _bsonBuilder.close_array();\n+                closedObj = true;\n+                break;\n+            case OutputNodeType::StartObject:\n+                if (_nodeTypeStack.size() > 1) {\n+                    _bsonBuilder.open_document();\n+                }\n+            case OutputNodeType::InObject:\n+                if (_nodeTypeStack.size() > 1) {\n+                    _bsonBuilder.close_document();\n+                }\n+                closedObj = true;\n+                break;\n+        }\n+\n+        _nodeTypeStack.pop();\n+\n+        if (closedObj) {\n+            writeDocIfRoot();\n+        }\n+    }\n+\n+    /**\n+     * Sets the name for the next node or element.\n+     *\n+     * @param name\n+     *    The name for the next node or element.\n+     */\n+    void setNextName(const char* name) {\n+        _nextName = name;\n+    }\n+\n+    /**\n+     * Implementations of saveValue that save a BSON type to the current node,\n+     * for every BSON type except those that are deprecated and those that are\n+     * reserved for internal use.\n+     *\n+     * @param val\n+     *    The BSON typed value to save to the archive.\n+     */\n+    template <class BsonT, traits::EnableIf<is_bson<BsonT>::value> = traits::sfinae>\n+    void saveValue(BsonT val) {\n+        _bsonBuilder.append(val);\n+    }\n+\n+    /**\n+     * Saves a datetime to the current node.\n+     *\n+     * @param tp\n+     *    The timepoint to save to the archive.\n+     */\n+    void saveValue(std::chrono::system_clock::time_point tp) {\n+        _bsonBuilder.append(bsoncxx::types::b_date{tp});\n+    }\n+\n+    /**\n+     * Saves a bool to the current node.\n+     *\n+     * @param b\n+     *    The bool to save to the archive.\n+     */\n+    void saveValue(bool b) {\n+        _bsonBuilder.append(b);\n+    }\n+\n+    /**\n+     * Saves a signed 32 bit int to the current node.\n+     *\n+     * @param i\n+     *    The int32_t to save to the archive.\n+     */\n+    void saveValue(std::int32_t i) {\n+        _bsonBuilder.append(i);\n+    }\n+\n+    /**\n+     * Saves a signed 64 bit int to the current node.\n+     *\n+     * @param i\n+     *    The int64_t to save to the archive.\n+     */\n+    void saveValue(std::int64_t i) {\n+        _bsonBuilder.append(i);\n+    }\n+\n+    /**\n+     * Saves a double to the current node.\n+     *\n+     * @param d\n+     *    The double to save to the archive.\n+     */\n+    void saveValue(double d) {\n+        _bsonBuilder.append(d);\n+    }\n+\n+    /**\n+     * Saves a std::string to the current node.\n+     *\n+     * @param s\n+     *    The std::string to save to the archive.\n+     */\n+    void saveValue(std::string const& s) {\n+        _bsonBuilder.append(s);\n+    }\n+\n+    /**\n+     * Saves a c style string to the current node.\n+     *\n+     * @param s\n+     *    The char* string to save to the archive.\n+     */\n+    void saveValue(char const* s) {\n+        _bsonBuilder.append(s);\n+    }\n+\n+    /**\n+     * Write the name of the upcoming element and prepare object/array state.\n+     * Since writeName is called for every value that is output, regardless of\n+     * whether it has a name or not, it is the place where we will do a deferred\n+     * check of our node state and decide whether we are in an array or an object.\n+     *\n+     * The general workflow of saving to the BSON archive is:\n+     *   1. Set the name for the next node to be created, usually done by an NVP.\n+     *   2. Start the node.\n+     *   3. (if there is data to save) Write the name of the node (this function).\n+     *   4. (if there is data to save) Save each element of data (with saveValue).\n+     *   5. Finish the node.\n+     *\n+     * @param nodeInRoot\n+     *  Specifies whether this is writing the name of a new node in\n+     *  the root level. If this is set to true, no name will be enforced\n+     *  since root level documents have no name.\n+     */\n+    void writeName(bool nodeInRoot = false) {\n+        if (!_nodeTypeStack.empty()) {\n+            OutputNodeType const& topType = _nodeTypeStack.top();\n+\n+            // Start up either an object or an array, depending on state.\n+            if (topType == OutputNodeType::StartArray) {\n+                _bsonBuilder.open_array();\n+                _nodeTypeStack.top() = OutputNodeType::InArray;\n+            } else if (topType == OutputNodeType::StartObject) {\n+                _nodeTypeStack.top() = OutputNodeType::InObject;\n+                // Only open a document if this document is not in the\n+                // root node.\n+                if (_nodeTypeStack.size() > 1) {\n+                    _bsonBuilder.open_document();\n+                }\n+            }\n+\n+            // Elements in arrays do not have names.\n+            if (topType == OutputNodeType::InArray) return;\n+        }\n+\n+        if (!_nextName && _nodeTypeStack.empty() && nodeInRoot) {\n+            // This is a document at the root node.\n+            // Do nothing since no name is expected.\n+            return;\n+        } else if (!_nextName) {\n+            // Enforce the existence of a name-value pair if this is not a node in root,\n+            // or this in an element in root.\n+            throw cereal::Exception(\"Missing a name for current node or element.\\n\");\n+        } else {\n+            // Set the key of this element to the name stored by the archiver.\n+            _bsonBuilder.key_owned(_nextName);","path":"src/bson_mapper/bson_archiver.hpp","position":269,"original_position":269,"commit_id":"644a8277b5d4953fd8013673aa54345cea727bfb","original_commit_id":"644a8277b5d4953fd8013673aa54345cea727bfb","user":{"login":"hanumantmk","id":150922,"avatar_url":"https://avatars.githubusercontent.com/u/150922?v=3","gravatar_id":"","url":"https://api.github.com/users/hanumantmk","html_url":"https://github.com/hanumantmk","followers_url":"https://api.github.com/users/hanumantmk/followers","following_url":"https://api.github.com/users/hanumantmk/following{/other_user}","gists_url":"https://api.github.com/users/hanumantmk/gists{/gist_id}","starred_url":"https://api.github.com/users/hanumantmk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hanumantmk/subscriptions","organizations_url":"https://api.github.com/users/hanumantmk/orgs","repos_url":"https://api.github.com/users/hanumantmk/repos","events_url":"https://api.github.com/users/hanumantmk/events{/privacy}","received_events_url":"https://api.github.com/users/hanumantmk/received_events","type":"User","site_admin":false},"body":"I wonder what the lifetime issues are for _nextName?\r\n\r\nGiven that they're known at compile time, I suspect you can use key_view","created_at":"2016-06-14T21:42:40Z","updated_at":"2016-06-14T21:42:40Z","html_url":"https://github.com/mongodb/mongo-cxx-odm/pull/3#discussion_r67063007","pull_request_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3","_links":{"self":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/comments/67063007"},"html":{"href":"https://github.com/mongodb/mongo-cxx-odm/pull/3#discussion_r67063007"},"pull_request":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3","id":73429021,"html_url":"https://github.com/mongodb/mongo-cxx-odm/pull/3","diff_url":"https://github.com/mongodb/mongo-cxx-odm/pull/3.diff","patch_url":"https://github.com/mongodb/mongo-cxx-odm/pull/3.patch","issue_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/3","number":3,"state":"open","locked":false,"title":"Preliminary BSON archiver","user":{"login":"adamchel","id":1976694,"avatar_url":"https://avatars.githubusercontent.com/u/1976694?v=3","gravatar_id":"","url":"https://api.github.com/users/adamchel","html_url":"https://github.com/adamchel","followers_url":"https://api.github.com/users/adamchel/followers","following_url":"https://api.github.com/users/adamchel/following{/other_user}","gists_url":"https://api.github.com/users/adamchel/gists{/gist_id}","starred_url":"https://api.github.com/users/adamchel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamchel/subscriptions","organizations_url":"https://api.github.com/users/adamchel/orgs","repos_url":"https://api.github.com/users/adamchel/repos","events_url":"https://api.github.com/users/adamchel/events{/privacy}","received_events_url":"https://api.github.com/users/adamchel/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-06-10T20:10:41Z","updated_at":"2016-06-14T21:42:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"82c779ef476a655d70bb4ff8bd4d06fbddbf8416","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3/commits","review_comments_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3/comments","review_comment_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/3/comments","statuses_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/statuses/644a8277b5d4953fd8013673aa54345cea727bfb","head":{"label":"mongodb:bson_archiver","ref":"bson_archiver","sha":"644a8277b5d4953fd8013673aa54345cea727bfb","user":{"login":"mongodb","id":45120,"avatar_url":"https://avatars.githubusercontent.com/u/45120?v=3","gravatar_id":"","url":"https://api.github.com/users/mongodb","html_url":"https://github.com/mongodb","followers_url":"https://api.github.com/users/mongodb/followers","following_url":"https://api.github.com/users/mongodb/following{/other_user}","gists_url":"https://api.github.com/users/mongodb/gists{/gist_id}","starred_url":"https://api.github.com/users/mongodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mongodb/subscriptions","organizations_url":"https://api.github.com/users/mongodb/orgs","repos_url":"https://api.github.com/users/mongodb/repos","events_url":"https://api.github.com/users/mongodb/events{/privacy}","received_events_url":"https://api.github.com/users/mongodb/received_events","type":"Organization","site_admin":false},"repo":{"id":60376659,"name":"mongo-cxx-odm","full_name":"mongodb/mongo-cxx-odm","owner":{"login":"mongodb","id":45120,"avatar_url":"https://avatars.githubusercontent.com/u/45120?v=3","gravatar_id":"","url":"https://api.github.com/users/mongodb","html_url":"https://github.com/mongodb","followers_url":"https://api.github.com/users/mongodb/followers","following_url":"https://api.github.com/users/mongodb/following{/other_user}","gists_url":"https://api.github.com/users/mongodb/gists{/gist_id}","starred_url":"https://api.github.com/users/mongodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mongodb/subscriptions","organizations_url":"https://api.github.com/users/mongodb/orgs","repos_url":"https://api.github.com/users/mongodb/repos","events_url":"https://api.github.com/users/mongodb/events{/privacy}","received_events_url":"https://api.github.com/users/mongodb/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mongodb/mongo-cxx-odm","description":"","fork":false,"url":"https://api.github.com/repos/mongodb/mongo-cxx-odm","forks_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/forks","keys_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/teams","hooks_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/hooks","issue_events_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/events{/number}","events_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/events","assignees_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/assignees{/user}","branches_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/branches{/branch}","tags_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/tags","blobs_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/refs{/sha}","trees_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/statuses/{sha}","languages_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/languages","stargazers_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/stargazers","contributors_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/contributors","subscribers_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/subscribers","subscription_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/subscription","commits_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/commits{/sha}","git_commits_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/commits{/sha}","comments_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/comments{/number}","issue_comment_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/comments{/number}","contents_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/contents/{+path}","compare_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/merges","archive_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/downloads","issues_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues{/number}","pulls_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls{/number}","milestones_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/milestones{/number}","notifications_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/labels{/name}","releases_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/releases{/id}","deployments_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/deployments","created_at":"2016-06-03T20:45:42Z","updated_at":"2016-06-09T15:35:42Z","pushed_at":"2016-06-14T19:35:26Z","git_url":"git://github.com/mongodb/mongo-cxx-odm.git","ssh_url":"git@github.com:mongodb/mongo-cxx-odm.git","clone_url":"https://github.com/mongodb/mongo-cxx-odm.git","svn_url":"https://github.com/mongodb/mongo-cxx-odm","homepage":null,"size":328,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":1,"default_branch":"master"}},"base":{"label":"mongodb:master","ref":"master","sha":"a3e47b7d13c86d667410e2500f0d5bebdc8c05eb","user":{"login":"mongodb","id":45120,"avatar_url":"https://avatars.githubusercontent.com/u/45120?v=3","gravatar_id":"","url":"https://api.github.com/users/mongodb","html_url":"https://github.com/mongodb","followers_url":"https://api.github.com/users/mongodb/followers","following_url":"https://api.github.com/users/mongodb/following{/other_user}","gists_url":"https://api.github.com/users/mongodb/gists{/gist_id}","starred_url":"https://api.github.com/users/mongodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mongodb/subscriptions","organizations_url":"https://api.github.com/users/mongodb/orgs","repos_url":"https://api.github.com/users/mongodb/repos","events_url":"https://api.github.com/users/mongodb/events{/privacy}","received_events_url":"https://api.github.com/users/mongodb/received_events","type":"Organization","site_admin":false},"repo":{"id":60376659,"name":"mongo-cxx-odm","full_name":"mongodb/mongo-cxx-odm","owner":{"login":"mongodb","id":45120,"avatar_url":"https://avatars.githubusercontent.com/u/45120?v=3","gravatar_id":"","url":"https://api.github.com/users/mongodb","html_url":"https://github.com/mongodb","followers_url":"https://api.github.com/users/mongodb/followers","following_url":"https://api.github.com/users/mongodb/following{/other_user}","gists_url":"https://api.github.com/users/mongodb/gists{/gist_id}","starred_url":"https://api.github.com/users/mongodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mongodb/subscriptions","organizations_url":"https://api.github.com/users/mongodb/orgs","repos_url":"https://api.github.com/users/mongodb/repos","events_url":"https://api.github.com/users/mongodb/events{/privacy}","received_events_url":"https://api.github.com/users/mongodb/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mongodb/mongo-cxx-odm","description":"","fork":false,"url":"https://api.github.com/repos/mongodb/mongo-cxx-odm","forks_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/forks","keys_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/teams","hooks_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/hooks","issue_events_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/events{/number}","events_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/events","assignees_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/assignees{/user}","branches_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/branches{/branch}","tags_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/tags","blobs_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/refs{/sha}","trees_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/statuses/{sha}","languages_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/languages","stargazers_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/stargazers","contributors_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/contributors","subscribers_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/subscribers","subscription_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/subscription","commits_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/commits{/sha}","git_commits_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/git/commits{/sha}","comments_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/comments{/number}","issue_comment_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/comments{/number}","contents_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/contents/{+path}","compare_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/merges","archive_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/downloads","issues_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues{/number}","pulls_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls{/number}","milestones_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/milestones{/number}","notifications_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/labels{/name}","releases_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/releases{/id}","deployments_url":"https://api.github.com/repos/mongodb/mongo-cxx-odm/deployments","created_at":"2016-06-03T20:45:42Z","updated_at":"2016-06-09T15:35:42Z","pushed_at":"2016-06-14T19:35:26Z","git_url":"git://github.com/mongodb/mongo-cxx-odm.git","ssh_url":"git@github.com:mongodb/mongo-cxx-odm.git","clone_url":"https://github.com/mongodb/mongo-cxx-odm.git","svn_url":"https://github.com/mongodb/mongo-cxx-odm","homepage":null,"size":328,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3"},"html":{"href":"https://github.com/mongodb/mongo-cxx-odm/pull/3"},"issue":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/3"},"comments":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/mongodb/mongo-cxx-odm/statuses/644a8277b5d4953fd8013673aa54345cea727bfb"}}}}
{"actor":{"display_login":"hanumantmk"}}