com.r3corda.node.services.clientapi / NodeInterestRates / Service

# Service

`class Service : AcceptsFileUpload, AbstractNodeService`

The Service that wraps Oracle and handles messages/network interaction/request scrubbing.

### Constructors

<init> | `Service(services: ServiceHubInternal)` The Service that wraps Oracle and handles messages/network interaction/request scrubbing.

### Properties

acceptableFileExtensions | `val acceptableFileExtensions: <ERROR CLASS>` What file extensions are acceptable for the file to be handed to upload()
dataTypePrefix | `val dataTypePrefix: String` A string that prefixes the URLs, e.g. "attachments" or "interest-rates". Should be OK for URLs.
oracle | `val oracle: Oracle`
ss | `val ss: StorageService`

### Inherited Properties

net | `val net: MessagingService`
networkMapCache | `val networkMapCache: NetworkMapCache`

### Functions

upload | `fun upload(data: InputStream): String` Accepts the data in the given input stream, and returns some sort of useful return message that will be sent back to the user in the response.

### Inherited Functions

addMessageHandler | `fun <Q : ServiceRequestMessage, R : Any> addMessageHandler(topic: String, handler: (Q) -> R, exceptionConsumer: (Message, Exception) -> Unit): Unit` Register a handler for a message topic. In comparison to using net.addMessageHandler() this manages a lot of common boilerplate code. Exceptions are caught and passed to the provided consumer. If you just want a simple acknowledgement response with no content, use com.r3corda.core.messaging.Ack. `fun <Q : ServiceRequestMessage, R : Any> addMessageHandler(topic: String, handler: (Q) -> R): Unit` Register a handler for a message topic. In comparison to using net.addMessageHandler() this manages a lot of common boilerplate code. Exceptions are propagated to the messaging layer. If you just want a simple acknowledgement response with no content, use com.r3corda.core.messaging.Ack.