require 'cgi'

class RallyStoryResponder < GenericResponder

  def call(env)
    @requests << request = Rack::Request.new(env)

    case request.url
    when 'https://rally1.rallydev.com/slm/webservice/1.17/task/1'
      [200, {}, [
        <<-XML
          <Task refObjectName="Change link to button">
            <FormattedID>TA1234</FormattedID>
            <State>Complete</State>
            <TaskIndex>1</TaskIndex>
          </Task>
XML
      ]]
    when 'https://rally1.rallydev.com/slm/webservice/1.17/task/2'
      [200, {}, [
        <<-XML
          <Task refObjectName="Add confirmation">
            <FormattedID>TA1235</FormattedID>
            <State>In-Progress</State>
            <TaskIndex>2</TaskIndex>
          </Task>
XML
      ]]
    when 'https://rally1.rallydev.com/slm/webservice/1.17/task/3'
      [200, {}, [
        <<-XML
          <Task refObjectName="Code Review">
            <FormattedID>TA1236</FormattedID>
            <State>Defined</State>
            <TaskIndex>3</TaskIndex>
          </Task>
XML
      ]]
    when 'https://rally1.rallydev.com/slm/webservice/1.17/task/4'
      [200, {}, [
        <<-XML
          <Task refObjectName="QA Test">
            <FormattedID>TA1237</FormattedID>
            <State>Defined</State>
            <TaskIndex>4</TaskIndex>
          </Task>
XML
      ]]
    else
      # https://rally1.rallydev.com/slm/webservice/current/HierarchicalRequirement?query=%28FormattedId+%3D+US7176%29&fetch=true
      [200, {}, [
        <<-XML
          <QueryResult>
            <Results>
              <Object>
                <FormattedID>US4567</FormattedID>
                <Name>[Rework] Change link to button</Name>
                <PlanEstimate>1.0</PlanEstimate>
                <ScheduleState>In-Progress</ScheduleState>
                <TaskActualTotal>0.0</TaskActualTotal>
                <TaskEstimateTotal>6.5</TaskEstimateTotal>
                <TaskRemainingTotal>0.5</TaskRemainingTotal>
                <Owner>scootin@fruity.com</Owner>
                <Description>#{ CGI::escapeHTML('<div><p>This is the story</p></div><ul><li>Remember to do this.</li><li>And this too.</li></ul>') }</Description>
                <Tasks>
                  <Task ref="https://rally1.rallydev.com/slm/webservice/1.17/task/1" />
                  <Task ref="https://rally1.rallydev.com/slm/webservice/1.17/task/2" />
                  <Task ref="https://rally1.rallydev.com/slm/webservice/1.17/task/3" />
                  <Task ref="https://rally1.rallydev.com/slm/webservice/1.17/task/4" />
                </Tasks>
              </Object>
            </Results>
            <TotalResultCount>1</TotalResultCount>
          </QueryResult>
XML
      ]]
    end
  end
end