Defect #4795

REST Api for Issues returns HTML

Added by Hannes Horneber almost 8 years ago. Updated almost 8 years ago.

Status:ClosedStart date:2010-02-10
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:Issues
Target version:-
Resolution:Invalid Affected version:

Description

Calling the REST /issues.xml like described in the documentation returns an invalid html code.
No XML is returned at all.
I am using the github master branch (version 0.9.2-dev) in order to test the REST api.

History

#1 Updated by Jean-Philippe Lang almost 8 years ago

Can't reproduce, please give some details.

#2 Updated by Hannes Horneber almost 8 years ago

Ok, sorry...
I tested the REST API with the script you described here Rest_api_with_ruby. Then I get this error (only the relevant last snippet posted here):

2.3.5/lib/active_resource/formats/xml_format.rb:19:in `decode’ 
/Library/Ruby/Gems/1.8/gems/activeresource-2.3.5/lib/active_resource/connection.rb:138:in `get’ 
/Library/Ruby/Gems/1.8/gems/activeresource-2.3.5/lib/active_resource/base.rb:639:in `find_every’ 
/Library/Ruby/Gems/1.8/gems/activeresource-2.3.5/lib/active_resource/base.rb:582:in `find’ 
/Users/hannes/Desktop/rpc_test.rb:12 ... attempted adding second root element to document 
Line: Position: Last 80 unconsumed characters: <div style="margin:0;padding:0;display:inline"><input name=„authenticity_token“...

The last line seems to tell me, that the code returned is html, not xml.
If I call the /issues.xml URL using my browser the source code is html too. The html in it is some input-form for an issue, but no xml at all.
The first lines in the html after the script-tag are:
<table width="100%"> 
<tr> 
<td> 
<table> 

    <tr  id="tr_status_id" class="filter"> 
    <td style="width:200px;"> 
        <input checked="checked" id="cb_status_id" name="fields[]" onclick="toggle_filter('status_id');" type="checkbox" value="status_id" /> 
        <label for="cb_status_id">Status</label> 
    </td>... 

Perhaps some route is broken?
If I try to add an issue using the code from the ruby REST example the problem persists, although the issue gets added.

#3 Updated by Jean-Philippe Lang almost 8 years ago

Can not reproduce with a fresh trunk.

#4 Updated by Hannes Horneber almost 8 years ago

Ok, I’ve just downloaded a fresh trunk and only did transfer the database without any plugins. This worked great.
And than I added all my plugins and of course as the last one I added the redmine_subtasks plugin. After adding
this the error appears. So it has something to do with the subtasks plugin and obviously not with redmine itself.
Sorry for bothering!

#5 Updated by Jean-Philippe Lang almost 8 years ago

  • Status changed from New to Closed
  • Resolution set to Invalid

OK, thanks for the feedback.

#6 Updated by Robert Gruendler almost 8 years ago

i'm experiencing the same problem with the subtasks plugin, and created a ticket for the plugin author at:

http://github.com/hron/redmine_subtasks/issues/#issue/20

Is there any workaround except uninstalling the plugin right now?

#7 Updated by Felix Schäfer almost 8 years ago

Robert, I just had a very succinct look, but I think you could get the xml view to work by just adding format.xml { render :layout => false } in the respond_to do |format| … end block in line 129 of app/controllers/issues_controller.rb in the plugin. That should yield the stock xml view, i.e. without any of the subtasks or anything. If you need those, you will need to copy app/views/issues/show.xml.builder to the plugin and tweak it to your liking.

#8 Updated by Robert Gruendler almost 8 years ago

thanks for your tip. i've tried what you suggested, but i still get the html instead of xml:

    <h2>Tickets</h2>

    <form action="/queries/new" id="query_form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="LYC3qS9jT7MYS8+CgHjyiC4aOct+Vk6iUbkZInkUNSY=" /></div>

        <div id="query_form_content">
    <fieldset id="filters"><legend>Filter</legend>
    <script type="text/javascript">
//<![CDATA[
function add_filter() {
    select = $('add_filter_select');
    field = select.value
    Element.show('tr_' +  field);
    check_box = $('cb_' + field);
    check_box.checked = true;
    toggle_filter(field);
    select.selectedIndex = 0;

    for (i=0; i<select.options.length; i++) {
        if (select.options[i].value == field) {
            select.options[i].disabled = true;
        }    
    }
}

function toggle_filter(field) {
    check_box = $('cb_' + field);

    if (check_box.checked) {
        Element.show("operators_" + field);
        toggle_operator(field);
    } else {
        Element.hide("operators_" + field);
        Element.hide("div_values_" + field);
  }
}
...

the modified in issues_controller.rb looks like this now:

respond_to do |format|
      format.html { render :template => 'issues/show.rhtml',
                           :layout => !request.xhr? }
      format.atom { render :action => 'changes',
                           :layout => false,
                           :content_type => 'application/atom+xml' }
      format.pdf  { send_data(issue_to_pdf(@issue),
                              :type => 'application/pdf',
                              :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
      format.xml { render :layout => false }
    end

i've tried to add "content_type => 'text/xml'", but that didn't work either.

Also, i've copied the show.xml.builder over to the plugin directory, which didn't help too.

Am i missing something?

#9 Updated by Felix Schäfer almost 8 years ago

Ah, just noticed what I posted above should fix the view of an individual issue, not of the ticket list, sorry :-) Anyway, /issue/6.xml should work, I'll have a look at the issue list later.

#10 Updated by Felix Schäfer almost 8 years ago

The issue list is a little trickier. Could you check if you can download the issue list as a pdf and/or csv?

#11 Updated by Robert Gruendler almost 8 years ago

pdf/csv/atom works fine. issues.xml returns html instead of xml.

#12 Updated by Felix Schäfer almost 8 years ago

Dang, I had hoped I had put my finger on the problem. I'm sorry but I have no ideas left short from installing everything in a test environment, which I don't have time to, you will have to wait for the plugin author to correct the problem.

#13 Updated by Robert Gruendler almost 8 years ago

no problem, thanks for your time anyway. not sure if the plugin author is working on issues right now.

i'm not a ruby developer myself, but there's one in our company. if he can find a quick and dirty workaround, i'll post it here.

#14 Updated by Eric Davis almost 8 years ago

FYI: I have the REST API enabled for demo.redmine.org so you can use that for testing. It's a fairly recent version of trunk with only a few basic plugins for managing the site.

http://demo.redmine.org/issues/12436.xml

Also available in: Atom PDF