class RallyTaskUpdateResponder < GenericResponder

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

    if request.url == 'https://rally1.rallydev.com/slm/webservice/current/Task?query=%28FormattedId+%3D+TA6666%29'
      [200, {}, [
        <<-XML
          <?xml version="1.0" encoding="UTF-8"?>
          <QueryResult rallyAPIMajor="1" rallyAPIMinor="17">
            <TotalResultCount>1</TotalResultCount>
            <StartIndex>1</StartIndex>
            <PageSize>20</PageSize>
            <Results>
              <Object rallyAPIMajor="1" rallyAPIMinor="17" ref="https://rally1.rallydev.com/slm/webservice/1.17/task/12345" refObjectName="Tie your shoes!" type="Task" />
            </Results>
          </QueryResult>
        XML
      ]]
    elsif request.get? && request.url == 'https://rally1.rallydev.com/slm/webservice/1.17/task/12345'
      [200, {}, [
        <<-XML
          <Task rallyAPIMajor="1" rallyAPIMinor="17" ref="https://rally1.rallydev.com/slm/webservice/1.17/task/12345" objectVersion="8" refObjectName="Tie your shoes!" CreatedAt="today at 8:31 pm">
            <CreationDate>2012-07-17T03:31:33.801Z</CreationDate>
            <ObjectID>12345</ObjectID>
            <Description />
            <Discussion />
            <FormattedID>TA6666</FormattedID>
            <LastUpdateDate>2012-07-17T04:00:35.888Z</LastUpdateDate>
            <Name>Tie your shoes!</Name>
            <Notes />
            <Owner>tester@testing.com</Owner>
            <Tags />
            <Attachments />
            <Blocked>false</Blocked>
            <Rank>4000</Rank>
            <State>Defined</State>
            <TaskIndex>2</TaskIndex>
            <ToDo>2.0</ToDo>
          </Task>
        XML
      ]]
    elsif request.post? && request.url == 'https://rally1.rallydev.com/slm/webservice/1.17/task/12345'
      [200, {}, ['<?xml version="1.0" encoding="UTF-8"?><OperationResult rallyAPIMajor="1" rallyAPIMinor="17"><Errors /><Warnings /></OperationResult>']]
    elsif request.url == 'https://rally1.rallydev.com/slm/webservice/current/User?query=%28DisplayName+%3D+%22Freddy+Fender%22%29'
      [200, {}, [
        <<-XML
          <QueryResult rallyAPIMajor="1" rallyAPIMinor="17">
            <Errors />
            <Warnings />
            <TotalResultCount>1</TotalResultCount>
            <StartIndex>1</StartIndex>
            <PageSize>20</PageSize>
            <Results>
              <Object rallyAPIMajor="1" rallyAPIMinor="17" ref="https://rally1.rallydev.com/slm/webservice/1.17/user/4567" refObjectName="Freddy Fender" type="User" />
            </Results>
          </QueryResult>
        XML
      ]]
    elsif request.url == 'https://rally1.rallydev.com/slm/webservice/1.17/user/4567'
      [200, {}, [
        <<-XML
          <User rallyAPIMajor="1" rallyAPIMinor="17" ref="https://rally1.rallydev.com/slm/webservice/1.17/user/4567" objectVersion="50" refObjectName="Freddy Fender">
            <ObjectID>4567</ObjectID>
            <Disabled>false</Disabled>
            <DisplayName>Freddy Fender</DisplayName>
            <EmailAddress>fred.fender@testing.com</EmailAddress>
            <FirstName>Freddy</FirstName>
            <LastName>Fender</LastName>
            <LoginName>fred.fender@testing.com</LoginName>
          </User>
        XML
      ]]
    else
      RallyNoResultsResponder.new.call(env)
    end
  end
end