Navigation Menu

Skip to content

Commit

Permalink
Add /api/v1/stats
Browse files Browse the repository at this point in the history
  • Loading branch information
omarroth committed Mar 2, 2019
1 parent 0eaf8f3 commit 4be82c5
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 5 deletions.
54 changes: 49 additions & 5 deletions src/invidious.cr
Expand Up @@ -122,11 +122,32 @@ config.video_threads.times do |i|
end
end

# stats = Statistics.new
# if config.statistics
# spawn do
# end
# end
statistics = {
"error" => "Statistics are not availabile.",
}
if config.statistics_enabled
spawn do
loop do
statistics = {
"version" => "2.0",
"software" => {
"name" => "invidious",
"version" => "#{CURRENT_VERSION}-#{CURRENT_COMMIT}",
},
"openRegistrations" => config.registration_enabled,
"usage" => {
"total" => PG_DB.query_one("SELECT count(*) FROM users", as: Int64),
"activeHalfyear" => PG_DB.query_one("SELECT count(*) FROM users WHERE CURRENT_TIMESTAMP - updated < '6 months'", as: Int64),
"activeMonth" => PG_DB.query_one("SELECT count(*) FROM users WHERE CURRENT_TIMESTAMP - updated < '1 month'", as: Int64),
},
"updatedAt" => Time.now.to_unix,
}

sleep 1.minute
Fiber.yield
end
end
end

top_videos = [] of Video
if config.top_enabled
Expand Down Expand Up @@ -1291,6 +1312,10 @@ post "/preferences" do |env|
registration_enabled ||= "off"
config.registration_enabled = registration_enabled == "on"

statistics_enabled = env.params.body["statistics_enabled"]?.try &.as(String)
statistics_enabled ||= "off"
config.statistics_enabled = statistics_enabled == "on"

File.write("config/config.yml", config.to_yaml)
end
else
Expand Down Expand Up @@ -2381,6 +2406,25 @@ end

# API Endpoints

get "/api/v1/stats" do |env|
env.response.content_type = "application/json"

if statistics["error"]?
halt env, status_code: 500, response: statistics.to_json
end

if !config.statistics_enabled
error_message = {"error" => "Statistics are not enabled."}.to_json
halt env, status_code: 400, response: error_message
end

if env.params.query["pretty"]? && env.params.query["pretty"] == "1"
statistics.to_pretty_json
else
statistics.to_json
end
end

get "/api/v1/captions/:id" do |env|
locale = LOCALES[env.get("locale").as(String)]?

Expand Down
1 change: 1 addition & 0 deletions src/invidious/helpers/helpers.cr
Expand Up @@ -22,6 +22,7 @@ user: String,
captcha_enabled: {type: Bool, default: true},
login_enabled: {type: Bool, default: true},
registration_enabled: {type: Bool, default: true},
statistics_enabled: {type: Bool, default: false},
admins: {type: Array(String), default: [] of String},
})
end
Expand Down
5 changes: 5 additions & 0 deletions src/invidious/views/preferences.ecr
Expand Up @@ -189,6 +189,11 @@ function update_value(element) {
<label for="registration_enabled"><%= translate(locale, "Registration enabled? ") %></label>
<input name="registration_enabled" id="registration_enabled" type="checkbox" <% if config.registration_enabled %>checked<% end %>>
</div>

<div class="pure-control-group">
<label for="statistics_enabled"><%= translate(locale, "Report statistics? ") %></label>
<input name="statistics_enabled" id="statistics_enabled" type="checkbox" <% if config.statistics_enabled %>checked<% end %>>
</div>
<% end %>

<% if env.get? "user" %>
Expand Down

0 comments on commit 4be82c5

Please sign in to comment.