diff --git a/README.md b/README.md index ccbe252..bd6e450 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -FTAPIKit logo +FTAPIKit logo # 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