Skip to content

Suggestion Mapping mediaType comme option #27

@Nugus53

Description

@Nugus53
function routes:document($resource as xs:string, $ref as xs:string, $start as xs:string, $end as xs:string, $tree as xs:string, $mediaType as xs:string, $filter) {
  (: ce système de paramètre pourrai être stocker dans global.xqm:)
  let $mapMedia := 
  map{'html': map{'Content-Type' : 'text/html','xsl':'hteiml/tei2html.xsl'}, 
      'text': map{'Content-Type' : 'text/plain', ,xsl':'hteiml/tei2text.xsl'}
  }
  (: a voir si ajouter un paramètre mode pour spécifier le mode de stockage est pertinent :)
  return 
  if ($resource != "")
  then
    let $dbName := db:get($G:dots)//dots:member/node()[@dtsResourceId = $resource]/@dbName
    return
      if ($dbName) 
      then 
        let $result := utils:document($resource, $ref, $start, $end, $tree, $filter)
        return
          if ($mediaType)
          then 
            if (map:contains($mapMedia,$mediaType))
              (:ici il y a surement moyen d'optimiser le code car on a 2 fois le rest: réponse :)
            then(
                let $f := map:get(map:get($mapMedia,$mediaType),'Content-Type')
                let $style := concat($G:xsl,map:get(map:get($mapMedia,$mediaType),'xsl'))
                let $result := switch (map:get(map:get($mapMedia,$mediaType),'method'))
                 case 'text' 
                   return xslt:transform-text($result, $style)
                case 'xml' 
                   return xslt:transform($result, $style)
               default
                     return "unknown"
                
                return (
                <rest:response>
                  <http:response status="200">
                    <http:header name="Content-Type" value="{concat($f, ' charset=utf-8')}"/>
                  </http:response>
                </rest:response>,
                $result ))
            else(
                 <rest:response>
                  <http:response status="200">
                    <http:header name="Content-Type" value="application/xml+tei"/>
                  </http:response>
                </rest:response>,
                $result
            )
            
          else
            $result
      else
        routes:badIdResource(xs:string($resource))
  else
    routes:badIdResource(xs:string($resource))
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions