<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->

  <title>Redback :: Integration :: REST :: Api: Files and Libraries</title>

  <!-- Mobile viewport optimized: j.mp/bplateviewport -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- Bootstrap core CSS -->
  <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> -->

  <!--custom css for these pages-->
  <link rel="stylesheet" href="css/style.css">

  <link href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.css" type="text/css">

  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
  <!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->
</head>

<body class="home">
 <div class="container">
  <header>
 
   <div id="header" class="column first last span-20">
        <div id="site-name" class="column span-18 append-1 prepend-1 first last"><a href="index.html">Redback :: Integration :: REST :: Api: Files and Libraries</a></div>
        <div id="primary" class="column span-18 append-1 prepend-1 first last">
          <ul class="navigation">
            <li id="nav-rest"><a href="resources.html">REST</a></li>
            <li id="nav-data"><a href="data.html">Data Model</a></li>
          </ul>
        </div>
        <div>
          <ul class="xbreadcrumbs" id="breadcrumbs">
<li>
 <a href="index.html" class="home">Home</a> &gt;

            </li>
<li class="current">
 <a href="downloads.html">Files and Libraries</a>

            </li>
          </ul>
        </div>
      </div>
  <!--<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container-fluid">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="index.html">Redback :: Integration :: REST :: Api: Files and Libraries</a>
      </div>
      <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="resources.html">Resources</a></li>
          <li><a href="data.html">Data Types</a></li>
          <li><a href="downloads.html">Files and Libraries</a></li>
        </ul>
      </div>
    </div>
  </nav>-->
 </header>
  <div id="main" class="column first last span-20">
  
  <h1 class="page-header">Files and Libraries</h1>

  <h3 id="artifact_c_client_library">C Client Library</h3>
  <p class="lead">Created 11. Mai 2017</p>
  <p><p>
  The C module generates the source code for the ANSI-C-compatible data structures and (de)serialization
  functions that can be used in conjunction with <a href="http://xmlsoft.org/">libxml2</a> to (de)serialize
  the REST resources as they are represented as XML data.
</p>

<p>
  The generated C source code depends on the <a href="http://xmlsoft.org/html/libxml-xmlreader.html">XML Reader API</a>
  and the <a href="http://xmlsoft.org/html/libxml-xmlwriter.html">XML Writer API</a> as well as the <code>&lt;time.h&gt;</code>,
  <code>&lt;string.h&gt;</code>, and <code>&lt;stdlib.h&gt;</code> C standard libraries.
</p>

</p>
  <table class="table table-hover">
    <caption>Files</caption>
    <thead>
    <tr>
      <th>name</th>
      <th>size</th>
      <th>description</th>
    </tr>
    </thead>
    <tbody data-link="row" class="rowlink">
    <tr class="clickable-row" data-href="redback-rest-api.c">
      <td>redback-rest-api.c</td>
      <td>290,87K</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="clickable-row" data-href="enunciate-common.c">
      <td>enunciate-common.c</td>
      <td>39,68K</td>
      <td>Common code needed for all projects.</td>
    </tr>
    </tbody>
  </table>
  <h3 id="artifact_csharp_client_library">C# Client Library</h3>
  <p class="lead">Created 11. Mai 2017</p>
  <p>
<p>
  The C# client-side library defines the classes that can be (de)serialized to/from XML.
  This is useful for accessing the HTTP resources that are published by this application.
</p>

<div class="panel panel-default">
  <div class="panel-heading">C# Resource Example</div>
  <div class="panel-body">
    <pre class="prettyprint lang-csharp">
//read a resource from a REST url
Uri uri = new Uri(...);

XmlSerializer s = new XmlSerializer(
  typeof( byte[] )
);

  //Create the request object
WebRequest req = WebRequest.Create(uri);
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
TextReader r = new StreamReader( stream );

byte[] result = (byte[]) s.Deserialize( r );

//handle the result as needed...
    </pre>
  </div>
</div>
</p>
  <table class="table table-hover">
    <caption>Files</caption>
    <thead>
    <tr>
      <th>name</th>
      <th>size</th>
      <th>description</th>
    </tr>
    </thead>
    <tbody data-link="row" class="rowlink">
    <tr class="clickable-row" data-href="redback-rest-api-dotnet.zip">
      <td>redback-rest-api-dotnet.zip</td>
      <td>2,54K</td>
      <td>The C# source code for the C# client library.</td>
    </tr>
    </tbody>
  </table>
  <h3 id="artifact_java_xml_client_library">Java XML Client Library</h3>
  <p class="lead">Created 11. Mai 2017</p>
  <p><p>
  The Java client-side library is used to access the Web service API for this application using Java.
</p>

<p>
  The Java client-side library is used to provide the set of Java objects that can be serialized
  to/from XML using <a href="https://jaxb.dev.java.net/">JAXB</a>.  This is useful for accessing the
  resources that are published by this application.
</p>

<div class="panel panel-default">
  <div class="panel-heading">Resources Example (Raw JAXB)</div>
  <div class="panel-body">
    <pre class="prettyprint lang-java">
java.net.URL url = new java.net.URL(baseURL + "/ldapGroupMappingService");
JAXBContext context = JAXBContext.newInstance( byte[].class, byte[].class );
java.net.URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.connect();

Unmarshaller unmarshaller = context.createUnmarshaller();
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(ldapGroupMapping, connection.getOutputStream());
Object result = (Object) unmarshaller.unmarshal( connection.getInputStream() );
//handle the result as needed...
    </pre>
  </div>
</div>

<div class="panel panel-default">
  <div class="panel-heading">Resources Example (Jersey client)</div>
  <div class="panel-body">
    <pre class="prettyprint lang-java">
javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient();

Object result = client.target(baseUrl + "/ldapGroupMappingService")
  .put(javax.ws.rs.client.Entity.entity(ldapGroupMapping, "application/xml"), Object.class);

//handle the result as needed...
    </pre>
  </div>
</div>
</p>
  <table class="table table-hover">
    <caption>Files</caption>
    <thead>
    <tr>
      <th>name</th>
      <th>size</th>
      <th>description</th>
    </tr>
    </thead>
    <tbody data-link="row" class="rowlink">
    <tr class="clickable-row" data-href="redback-rest-api-xml-client.jar">
      <td>redback-rest-api-xml-client.jar</td>
      <td>13,75K</td>
      <td>The binaries for the Java XML client library.</td>
    </tr>
    <tr class="clickable-row" data-href="redback-rest-api-xml-client-xml-sources.jar">
      <td>redback-rest-api-xml-client-xml-sources.jar</td>
      <td>11,67K</td>
      <td>The sources for the Java XML client library.</td>
    </tr>
    </tbody>
  </table>
  <h3 id="artifact_objc_client_library">Objective C Client Library</h3>
  <p class="lead">Created 11. Mai 2017</p>
  <p><p>
  The Objective C module generates the source code for the Objective C classes and (de)serialization
  functions that can be used in conjunction with <a href="http://xmlsoft.org/">libxml2</a> to (de)serialize
  the REST resources as they are represented as XML data.
</p>

<p>
  The generated Objective C source code depends on the <a href="http://xmlsoft.org/html/libxml-xmlreader.html">XML Reader API</a>
  and the <a href="http://xmlsoft.org/html/libxml-xmlwriter.html">XML Writer API</a> as well as the base OpenStep foundation classes.
</p>

</p>
  <table class="table table-hover">
    <caption>Files</caption>
    <thead>
    <tr>
      <th>name</th>
      <th>size</th>
      <th>description</th>
    </tr>
    </thead>
    <tbody data-link="row" class="rowlink">
    <tr class="clickable-row" data-href="redback-rest-api.h">
      <td>redback-rest-api.h</td>
      <td>17,05K</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="clickable-row" data-href="redback-rest-api.m">
      <td>redback-rest-api.m</td>
      <td>219,52K</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="clickable-row" data-href="enunciate-common.h">
      <td>enunciate-common.h</td>
      <td>12,83K</td>
      <td>Common header needed for all projects.</td>
    </tr>
    <tr class="clickable-row" data-href="enunciate-common.m">
      <td>enunciate-common.m</td>
      <td>42,34K</td>
      <td>Common implementation code needed for all projects.</td>
    </tr>
    </tbody>
  </table>
  <h3 id="artifact_php_xml_client_library">PHP XML Client Library</h3>
  <p class="lead">Created 11. Mai 2017</p>
  <p><p>
  The PHP client-side library defines the PHP classes that can be (de)serialized to/from XML.
  This is useful for accessing the resources that are published by this application, but only
  those that produce a XML representation of their resources.
</p>

<p>
  This library leverages the <a href="http://php.net/manual/en/book.xmlreader.php">XMLReader</a> and
  <a href="http://php.net/manual/en/book.xmlwriter.php">XMLWriter</a> tools that were included in PHP
  versions 5.1.0+.
</p>


<div class="panel panel-default">
  <div class="panel-heading">PHP XML Example</div>
  <div class="panel-body">
    <pre class="prettyprint lang-php">
//read the resource in XML form:
$xml = ...;

$reader = new \XMLReader();

if (!$reader->open($xml)) {
  throw new \Exception('Unable to open ' . $xml);
}
$result = new Object($reader);

//open a writer for the xml
$out = ...;
$writer = new \XMLWriter();
$writer->openUri($out);
$writer->startDocument();
$writer->setIndent(4);
$result->toXml($writer);
$writer->flush();
    </pre>
  </div>
</div>
</p>
  <table class="table table-hover">
    <caption>Files</caption>
    <thead>
    <tr>
      <th>name</th>
      <th>size</th>
      <th>description</th>
    </tr>
    </thead>
    <tbody data-link="row" class="rowlink">
    <tr class="clickable-row" data-href="redback-rest-api-php.zip">
      <td>redback-rest-api-php.zip</td>
      <td>6,22K</td>
      <td>&nbsp;</td>
    </tr>
    </tbody>
  </table>
        
        <footer>
          <div class="footer">
            Generated by <a href="http://enunciate.webcohesion.com">Enunciate</a>.
          </div>
        </footer>

      </div>
    
  </div>


  <!-- JavaScript placed at the end of the document so the pages load faster. -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

  
  <!-- prettify code blocks. see http://code.google.com/p/google-code-prettify/ -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/run_prettify.js" type="text/javascript"></script>
  

</body>
</html>