diff --git a/README.md b/README.md
index ccbe252..bd6e450 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
# FTAPIKit
@@ -13,6 +13,7 @@
Declarative and generic REST API framework using Codable.
With standard implementation using URLSesssion and JSON encoder/decoder.
Easily extensible for your asynchronous framework or networking stack.
+The repository also contains set of Xcode templates, see `Installation`.
## Installation
@@ -29,6 +30,14 @@ When using CocoaPods add following line to your `Podfile`:
pod 'FTAPIKit', '~> 1.5'
```
+The repository includes an API endpoint Xcode template for user convenience. You can install it using make:
+
+```bash
+git clone --depth=1 https://github.com/futuredapp/FTAPIKit.git
+cd Templates
+make
+```
+
## Features
The main feature of this library is to provide documentation-like API
diff --git a/Templates/Endpoints.xctemplate/Default/___VARIABLE_endpointName___Endpoints.swift b/Templates/Endpoints.xctemplate/Default/___VARIABLE_endpointName___Endpoints.swift
new file mode 100644
index 0000000..22d131b
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/Default/___VARIABLE_endpointName___Endpoints.swift
@@ -0,0 +1,8 @@
+// ___FILEHEADER___
+
+import FTAPIKit
+
+struct ___VARIABLE_templateName___Endpoint: APIEndpoint {
+
+ let path: String = ""
+}
diff --git a/Templates/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Endpoints.swift b/Templates/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Endpoints.swift
new file mode 100644
index 0000000..de36a2f
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Endpoints.swift
@@ -0,0 +1,10 @@
+// ___FILEHEADER___
+
+import FTAPIKit
+
+struct ___VARIABLE_templateName___Endpoint: APIRequestEndpoint {
+ typealias Request = ___VARIABLE_templateName___Request
+
+ var body: ___VARIABLE_templateName___Request
+ var path: String
+}
diff --git a/Templates/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Requests.swift b/Templates/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Requests.swift
new file mode 100644
index 0000000..3896b77
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Requests.swift
@@ -0,0 +1,6 @@
+// ___FILEHEADER___
+
+import Foundation
+
+struct ___VARIABLE_templateName___Request: Encodable {
+}
diff --git a/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Endpoints.swift b/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Endpoints.swift
new file mode 100644
index 0000000..254c379
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Endpoints.swift
@@ -0,0 +1,11 @@
+// ___FILEHEADER___
+
+import FTAPIKit
+
+struct ___VARIABLE_templateName___Endpoint: APIRequestResponseEndpoint {
+ typealias Response = ___VARIABLE_templateName___Response
+ typealias Request = ___VARIABLE_templateName___Request
+
+ var body: ___VARIABLE_templateName___Request
+ let path: String = ""
+}
diff --git a/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Requests.swift b/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Requests.swift
new file mode 100644
index 0000000..3896b77
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Requests.swift
@@ -0,0 +1,6 @@
+// ___FILEHEADER___
+
+import Foundation
+
+struct ___VARIABLE_templateName___Request: Encodable {
+}
diff --git a/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Responses.swift b/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Responses.swift
new file mode 100644
index 0000000..644df96
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Responses.swift
@@ -0,0 +1,6 @@
+// ___FILEHEADER___
+
+import Foundation
+
+struct ___VARIABLE_templateName___Response: Decodable {
+}
diff --git a/Templates/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Endpoints.swift b/Templates/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Endpoints.swift
new file mode 100644
index 0000000..725f647
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Endpoints.swift
@@ -0,0 +1,9 @@
+// ___FILEHEADER___
+
+import FTAPIKit
+
+struct ___VARIABLE_templateName___Endpoint: APIResponseEndpoint {
+ typealias Response = ___VARIABLE_templateName___Response
+
+ let path: String = ""
+}
diff --git a/Templates/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Responses.swift b/Templates/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Responses.swift
new file mode 100644
index 0000000..644df96
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Responses.swift
@@ -0,0 +1,6 @@
+// ___FILEHEADER___
+
+import Foundation
+
+struct ___VARIABLE_templateName___Response: Decodable {
+}
diff --git a/Templates/Endpoints.xctemplate/TemplateIcon.png b/Templates/Endpoints.xctemplate/TemplateIcon.png
new file mode 100644
index 0000000..45e1992
Binary files /dev/null and b/Templates/Endpoints.xctemplate/TemplateIcon.png differ
diff --git a/Templates/Endpoints.xctemplate/TemplateIcon@2x.png b/Templates/Endpoints.xctemplate/TemplateIcon@2x.png
new file mode 100644
index 0000000..3f8282b
Binary files /dev/null and b/Templates/Endpoints.xctemplate/TemplateIcon@2x.png differ
diff --git a/Templates/Endpoints.xctemplate/TemplateInfo.plist b/Templates/Endpoints.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..a5703a2
--- /dev/null
+++ b/Templates/Endpoints.xctemplate/TemplateInfo.plist
@@ -0,0 +1,71 @@
+
+
+
+
+ DefaultCompletionName
+ Endpoint
+ Description
+ This generates a new endpoint for use with the APIAdapter from the FTAPIKit.
+ Kind
+ Xcode.IDEKit.TextSubstitutionFileTemplateKind
+ Options
+
+
+ Description
+ The name of the endpoint
+ Identifier
+ endpointName
+ Name
+ Endpoint file name:
+ NotPersisted
+
+ Required
+
+ Type
+ text
+
+
+ Description
+ The name of template request.
+ Identifier
+ templateName
+ Name
+ Template endpoint name:
+ NotPersisted
+
+ Required
+
+ Type
+ text
+
+
+ Identifier
+ hasRequest
+ Name
+ Generate Request file
+ Description
+ Check whethe you want to create file containing requests.
+ Type
+ checkbox
+
+
+ Identifier
+ hasResponse
+ Name
+ Generate Response file
+ Description
+ Check whethe you want to create file containing responses.
+ Type
+ checkbox
+
+
+ Platforms
+
+ com.apple.platform.iphoneos
+
+ SortOrder
+ 99
+ Summary
+ This generates a new service for use with the ServiceHolder (dependency injection) from the FuturedKit.
+
+
diff --git a/Templates/Makefile b/Templates/Makefile
new file mode 100644
index 0000000..3ebb72a
--- /dev/null
+++ b/Templates/Makefile
@@ -0,0 +1,9 @@
+TEMPLATE_DIR = $(HOME)/Library/Developer/Xcode/Templates/FTAPIKit
+
+install:
+ mkdir -p $(TEMPLATE_DIR)
+ cp -R *.xctemplate $(TEMPLATE_DIR)/
+ echo "\033[0;32mInstallation was successful!\033[0m"
+
+.PHONY: install
+.SILENT: install