// file : brep/view.cxx -*- C++ -*- // copyright : Copyright (c) 2014-2015 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #include #include // shared_ptr, make_shared() #include #include #include #include #include #include #include #include using namespace std; using namespace odb::core; #pragma db namespace session namespace brep { void view:: init (cli::scanner& s) { options_ = make_shared (s, cli::unknown_mode::fail, cli::unknown_mode::fail); db_ = make_shared("", "", "brep", options_->db_host (), options_->db_port ()); } void view:: handle (request& rq, response& rs) { session s; transaction t (db_->begin ()); shared_ptr p (db_->load ("cli")); for (auto& vp : p->versions) { s.cache_insert (*db_, vp.object_id (), vp.load ()); } t.commit (); ostream& o (rs.content (200, "text/html;charset=utf-8", false)); o << ""; o << "Options:" << "
\ntracing verbosity: " << options_->verb () << "
\ndb endpoint: " << options_->db_host () << ":" << options_->db_port (); o << "

\nCookies:"; for (const auto& c: rq.cookies ()) { o << "
\n" << c.name << "=" << c.value; } o << "

\n" << p->name << ": " << p->versions.size (); for (const auto& vp : p->versions) { shared_ptr v ( s.cache_find (*db_, vp.object_id ())); if (!v) { o << "
no version in cache !"; } else { o << "
licenses:" << v->license_alternatives.size (); for (const auto& la : v->license_alternatives) { o << "
"; for (const auto& l : la) { o << " |" << l << "|"; } } o << "
deps:" << v->dependencies.size (); for (const auto& da : v->dependencies) { o << "
"; for (const auto& d : da) { o << " |" << d.package; if (!d.version.null ()) { o << "," << d.version->value << "," << static_cast (d.version->operation) << "|"; } } } o << "
requirements:" << v->requirements.size (); for (const auto& ra : v->requirements) { o << "
"; for (const auto& r : ra) { o << " |" << r << "|"; } } } } o << "

Search" << ""; } }