##// END OF EJS Templates
Makes some attributes optional in API response to get faster/lightweight responses....
Jean-Philippe Lang -
r4372:5f57bceabbdc
parent child
Show More
@@ -866,6 +866,16 module ApplicationHelper
866 def favicon
866 def favicon
867 "<link rel='shortcut icon' href='#{image_path('/favicon.ico')}' />"
867 "<link rel='shortcut icon' href='#{image_path('/favicon.ico')}' />"
868 end
868 end
869
870 # Returns true if arg is expected in the API response
871 def include_in_api_response?(arg)
872 unless @included_in_api_response
873 param = params[:include]
874 @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',')
875 @included_in_api_response.collect!(&:strip)
876 end
877 @included_in_api_response.include?(arg.to_s)
878 end
869
879
870 private
880 private
871
881
@@ -25,13 +25,13 api.issue do
25 api.created_on @issue.created_on
25 api.created_on @issue.created_on
26 api.updated_on @issue.updated_on
26 api.updated_on @issue.updated_on
27
27
28 render_api_issue_children(@issue, api)
28 render_api_issue_children(@issue, api) if include_in_api_response?('children')
29
29
30 api.array :relations do
30 api.array :relations do
31 @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation|
31 @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation|
32 api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay)
32 api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay)
33 end
33 end
34 end
34 end if include_in_api_response?('relations')
35
35
36 api.array :changesets do
36 api.array :changesets do
37 @issue.changesets.each do |changeset|
37 @issue.changesets.each do |changeset|
@@ -41,7 +41,7 api.issue do
41 api.committed_on changeset.committed_on
41 api.committed_on changeset.committed_on
42 end
42 end
43 end
43 end
44 end if User.current.allowed_to?(:view_changesets, @project) && @issue.changesets.any?
44 end if include_in_api_response?('changesets') && User.current.allowed_to?(:view_changesets, @project)
45
45
46 api.array :journals do
46 api.array :journals do
47 @issue.journals.each do |journal|
47 @issue.journals.each do |journal|
@@ -58,5 +58,5 api.issue do
58 end
58 end
59 end
59 end
60 end
60 end
61 end unless @issue.journals.empty?
61 end if include_in_api_response?('journals')
62 end
62 end
@@ -14,5 +14,5 api.project do
14 @project.trackers.each do |tracker|
14 @project.trackers.each do |tracker|
15 api.tracker(:id => tracker.id, :name => tracker.name)
15 api.tracker(:id => tracker.id, :name => tracker.name)
16 end
16 end
17 end
17 end if include_in_api_response?('trackers')
18 end
18 end
@@ -20,5 +20,5 api.user do
20 end
20 end
21 end if membership.project
21 end if membership.project
22 end
22 end
23 end if @memberships.present?
23 end if include_in_api_response?('memberships') && @memberships
24 end
24 end
@@ -94,7 +94,7 class ApiTest::IssuesTest < ActionController::IntegrationTest
94 context "with journals" do
94 context "with journals" do
95 context ".xml" do
95 context ".xml" do
96 should "display journals" do
96 should "display journals" do
97 get '/issues/1.xml'
97 get '/issues/1.xml?include=journals'
98
98
99 assert_tag :tag => 'issue',
99 assert_tag :tag => 'issue',
100 :child => {
100 :child => {
@@ -160,7 +160,7 class ApiTest::IssuesTest < ActionController::IntegrationTest
160
160
161 context ".xml" do
161 context ".xml" do
162 should "display children" do
162 should "display children" do
163 get '/issues/1.xml'
163 get '/issues/1.xml?include=children'
164
164
165 assert_tag :tag => 'issue',
165 assert_tag :tag => 'issue',
166 :child => {
166 :child => {
@@ -187,7 +187,7 class ApiTest::IssuesTest < ActionController::IntegrationTest
187
187
188 context ".json" do
188 context ".json" do
189 should "display children" do
189 should "display children" do
190 get '/issues/1.json'
190 get '/issues/1.json?include=children'
191
191
192 json = ActiveSupport::JSON.decode(response.body)
192 json = ActiveSupport::JSON.decode(response.body)
193 assert_equal([
193 assert_equal([
General Comments 0
You need to be logged in to leave comments. Login now