﻿<?xml version="1.0" encoding="utf-8"?>
<!--
	NuOrder REST connection manager definitions.
	Copyright © 2006-2022 COZYROC LLC. All rights reserved.
-->
<ConnectionManager Name="NuOrder" RuntimeVersion="" Help="http://www.cozyroc.com/ssis/nuorder-connection" xmlns="http://www.cozyroc.com/schema/rcm-config-1.0.xsd">
	<Service EndPoint="https://[host].nuorder.com/api" />

	<Authentication Name="OAuth 1" Cached="false">
		<Documentation>https://nuorderapi1.docs.apiary.io/#reference/0/authentication</Documentation>

		<User>
			<Parameter Name="ConsumerKey">
				<Documentation>Required. Specify consumer key.</Documentation>
			</Parameter>
			<Parameter Name="ConsumerSecret" Type="password">
				<Documentation>Required. Specify consumer secret.</Documentation>
			</Parameter>
			<Parameter Name="TokenId">
				<Documentation>Required. Specify token identifier.</Documentation>
			</Parameter>
			<Parameter Name="TokenSecret" Type="password">
				<Documentation>Required. Specify token secret.</Documentation>
			</Parameter>
		</User>

		<Test Url="/v3.1/catalogs" />

		<Parameters>
			<Parameter Name="Authorization" Value="{{OA1a.getAuthorizationHeader(
				{
					ConsumerKey: connection.user.ConsumerKey,
					ConsumerSecret: connection.user.ConsumerSecret,
					Access: connection.user.TokenId + '&amp;' + connection.user.TokenSecret
				},
				request
			)}}" Type="HttpHeader" />
		</Parameters>
	</Authentication>

	<Resources>
		<Template>
			<Field Name="ShortText" DataType="DT_WSTR" Length="255" />
			<Field Name="LongText" DataType="DT_WSTR" Length="1000" />
			<Field Name="DateTime" DataType="DT_DBTIMESTAMP" />
			<Field Name="Date" DataType="DT_DBDATE" />

			<Resource Name="Base">
				<Read Result="{{=response}}">
					<Parameters>
						<Parameter Name="_includeUserParameters" Value="{{=parameters}}" />
					</Parameters>
				</Read>

				<Create Method="POST">
					<Parameters>
						<Parameter Name="_includeUserParameters" Value="{{=parameters}}" />
						<Parameter Name="application/json" Value="{{=item}}" Type="Body" />
					</Parameters>
				</Create>

				<Update Method="PUT">
					<Parameters>
						<Parameter Name="_includeUserParameters" Value="{{=parameters}}" />
						<Parameter Name="application/json" Value="{{=item}}" Type="Body" />
					</Parameters>
				</Update>

				<Delete Method="DELETE" />
			</Resource>
		</Template>

	</Resources>
	<Script>
		<Module Name="Main">
			<![CDATA[
require('underscore');

]]>
		</Module>
		<Module Name="OAuth 1">
			<![CDATA[
require('oauth1');
require('sha1');

b64pad = '=';

var OA1a = new OAuth1({
	signMethod: 'HMAC-SHA1',
	signProc: function (toSign, secrets) {
		return b64_hmac_sha1(_.map(secrets, encodeURIComponent).join('&'), toSign);
	}
});
]]>
		</Module>
	</Script>
</ConnectionManager>