---
title: "Alfr - Working with Content"
author: "Roy Wetherall"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{working_with_content}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

## Introduction

Alfr allows you to work with content directly within the Alfresco repository.

## Setup

First include the alfr library.

```{r setup}
library(alfr)
```

In order to communicate with the Alfresco repository you must first establish a session connection.  The location of the respository is required to do this, along with valid user credentials.

```
session <- alf_session("http://localhost:8080", "admin", "admin")
```

## Uploading Content

All content is stored on a repository node so before we can upload binary content we must first create a node to store it within.  In this example we are creating a node called `myFile2.txt` in the folder `test`.  `-root-` is used to reference the root repository node. 

```
my_file <- alf_node.new(session, "-root-", list(name="myFile2.txt", nodeType="cm:content", relativePath="test"))
```
Now content can be uploaded into the nodes content property where it will be stored in the Alfresco repository.

```
my_file <- my_file$content$update("resources/testuploaddoc.txt")
```

## Reading Content

Get a reference to the node you want to read content from.

```
my_file <- alf_node.new(session, "-root-", relativePath="test/myFile2.txt")
```

Content stored in a repository node can then be read to the client by opening a connection and reading the contents.

```
con <- my_file$content$as.file("resources/download.txt") %>% file("r")
readLines(con)
close(con)
```

## Deleting Content

With a reference to the node that you want to delete from the repository.

```
alf_node.delete(session, node$id)
```
