Skip to content
This repository has been archived by the owner on Oct 30, 2020. It is now read-only.

Commit

Permalink
Use POST in place of GET to fetch usage data from server
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Hayes committed Oct 29, 2013
1 parent 23066c8 commit 34551a7
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 47 deletions.
89 changes: 52 additions & 37 deletions server/app.rb
Expand Up @@ -42,54 +42,69 @@ def url_for_asset(asset_name)
end

get "/api/usage" do
content_type :json
get_usage(params)
end

date_start = params[:start] || (halt 500)
date_end = params[:end] || (halt 500)
unit = params[:unit] || (halt 500)
zone = params[:zone] || (halt 500)
users = params[:user] || (halt 500)
users_to_aggregate = params[:users_to_aggregate] || (halt 500)
cluster = params[:cluster] || (halt 500)
type = (params[:type] && params[:type].to_sym) || (halt 500)
post "/api/usage" do
parsed = JSON.parse request.body.read
params = {}
parsed.each do |k,v|
params[k.to_sym] = v
end
get_usage(params)
end

time = {
:start => date_start.to_i,
:end => date_end.to_i,
:unit => unit,
:zone => zone
}
helpers do
def get_usage(params)
content_type :json

users = users.split(",").uniq
users_to_aggregate = users_to_aggregate.split(",").uniq
date_start = params[:start] || (halt 500)
date_end = params[:end] || (halt 500)
unit = params[:unit] || (halt 500)
zone = params[:zone] || (halt 500)
users = params[:user] || (halt 500)
users_to_aggregate = params[:users_to_aggregate] || (halt 500)
cluster = params[:cluster] || (halt 500)
type = (params[:type] && params[:type].to_sym) || (halt 500)

return_val = {}
time = {
:start => date_start.to_i,
:end => date_end.to_i,
:unit => unit,
:zone => zone
}

if users.size > 0
result = UsageData.fetch_per_user_data(cluster,users,time,type)
users = users.split(",").uniq
users_to_aggregate = users_to_aggregate.split(",").uniq

return_val[:times] = result[:times]
return_val[:users] = result[:users]
else
return_val[:users] = []
end
return_val = {}

return_val[:users_aggregated] = []
return_val[:num_aggregated_users] = 0
if users.size > 0
result = UsageData.fetch_per_user_data(cluster,users,time,type)

if users_to_aggregate.size > 0
result = UsageData.fetch_aggregated_data(cluster,users_to_aggregate,time,type)

return_val[:users_aggregated] = result[:data]
return_val[:num_aggregated_users] = users_to_aggregate.size
return_val[:times] = result[:times]
return_val[:users] = result[:users]
else
return_val[:users] = []
end

# get times from first available, they're all the same
return_val[:times] ||= result[:times]
end
return_val[:users_aggregated] = []
return_val[:num_aggregated_users] = 0

if users_to_aggregate.size > 0
result = UsageData.fetch_aggregated_data(cluster,users_to_aggregate,time,type)

return_val[:users_aggregated] = result[:data]
return_val[:num_aggregated_users] = users_to_aggregate.size

return_val[:cluster] = cluster
# get times from first available, they're all the same
return_val[:times] ||= result[:times]
end

return_val.to_json
return_val[:cluster] = cluster

return_val.to_json
end
end

get "/api/table" do
Expand Down
23 changes: 13 additions & 10 deletions server/app/assets/javascripts/controllers/index.js.coffee
Expand Up @@ -139,19 +139,22 @@ App.IndexController = Ember.Controller.extend(

console?.log "Loading usage data"

data = {
start: start_time,
end: end_time,
unit: selected_unit
zone: selected_zone
user: selected_users.join(",")
users_to_aggregate: users_to_aggregate.join(",")
cluster: selected_cluster
type: selected_type
}

this.incrementInProgress()
$.ajax(
url: "api/usage"
type: "GET"
data:
start: start_time,
end: end_time,
unit: selected_unit
zone: selected_zone
user: selected_users.join(",")
users_to_aggregate: users_to_aggregate.join(",")
cluster: selected_cluster
type: selected_type
type: "POST"
data: JSON.stringify(data)
success: (data) =>
this.decrementInProgress()
this.set("usageData",data)
Expand Down

0 comments on commit 34551a7

Please sign in to comment.