Service and object parser generation utility based on Autograph and Synopsis frameworks.
Usage
Prepare your sources
Mark your service protocols like this:
/**
MANDATORY SERVICE ANNOTATION:
@service PersonServiceGen
YOU MAY OMIT THE EXPLICIT SERVICE NAME
*/
protocol PersonService {
/**
EACH SERVICE METHOD MUST RETURN ServiceCall<> OR CancelableServiceCall<>
`GET` IS A DEFAULT HTTP METHOD.
*/
func get() -> ServiceCall<[Person]>
/**
PROVIDE RELATIVE URL
@url /{id}
BASE URL IS INJECTED BY CONSTRUCTOR
*/
func get(
personId id: Int // MARK ARGUMENTS TO BE INSERTED INTO URL PLACEHOLDERS: @url
) -> ServiceCall<Person>
/**
SUPPORTED HTTP METHODS: get, post, put, patch, delete, head, options
@post
USE CancelableServiceCall<> WHEN CALL CANCELING OPTION IS REQUIRED
KEEP IN MIND YOU CAN USE Void IN CASE YOU DON'T NEED SERVER RESPONSE TO BE PARSED
*/
func register(
firstName: String, // @json first_name
lastName: String // @json last_name
) -> CancelableServiceCall<Void>
/**
SUPPORTED ARGUMENT SERIALIZATION OPTIONS: json, query, plist, url, header
ARGUMENT BODY NAME IS AN IMPLICIT ANNOTATION VALUE
@put
*/
func auth(
token: String // @header X-Auth-Header
) -> ServiceCall<String>
}
Service Autograph will generate concrete implementations for each of your service protocols and also a supporting Service.swift file.
Service Autograph can also generate a generic object parser utility class for you, and also Decodable extensions for each of your models.
In order to do so, use corresponding -write_parser argument.
Build executable
Run spm_build.command script in order to build from sources.
You’ll find your ServiceAutograph executable in ./build/x86_64-apple-macosx10.10/release folder or similar, depending on your OS.
Add run script build phase to your project
Run ServiceAutograph executable before other build phases, so that new generated source code would be taken into the process.
The utility accepts next arguments:
-help — print help, do not execute;
-verbose — print additional debug information;
-write_parser — turn on object parser generation;
-input_model [folder] — path to the folder with your model classes and structures (used during parser generation);
-input_service [folder] — path to the folder with your service protocols;
-output [folder] — path to the folder, where to put generated files.
Your script may look like this:
SERVICE_AUTOGRAPH_PATH=Utilities/ServiceAutograph
if [ -f $SERVICE_AUTOGRAPH_PATH ]
then
echo "ServiceAutograph executable found"
else
osascript -e 'tell app "Xcode" to display dialog "Service generator executable not found in \nUtilities/ServiceAutograph" buttons {"OK"} with icon caution'
fi
$SERVICE_AUTOGRAPH_PATH \
-write_parser \
-input_model "$PROJECT_NAME/Classes/Model" \
-input_service "$PROJECT_NAME/Classes/Service" \
-output "./$PROJECT_NAME/Generated/Classes"
Demo & running tests
Use spm_resolve.command to load all dependencies and spm_generate_xcodeproj.command to assemble an Xcode project file.
Also, ensure Xcode targets macOS.
Run spm_run_sandbox.command script for a demo — it builds and launches Service Autograph with Sources/Sandbox as a working directory.
Service Autograph
Service and object parser generation utility based on Autograph and Synopsis frameworks.
Usage
Prepare your sources
Mark your service protocols like this:
Service Autograph will generate concrete implementations for each of your service protocols and also a supporting
Service.swift
file.Service Autograph can also generate a generic
object parser
utility class for you, and alsoDecodable
extensions for each of your models. In order to do so, use corresponding-write_parser
argument.Build executable
Run
spm_build.command
script in order to build from sources.You’ll find your
ServiceAutograph
executable in./build/x86_64-apple-macosx10.10/release
folder or similar, depending on your OS.Add run script build phase to your project
Run
ServiceAutograph
executable before other build phases, so that new generated source code would be taken into the process. The utility accepts next arguments:-help
— print help, do not execute;-verbose
— print additional debug information;-write_parser
— turn on object parser generation;-input_model [folder]
— path to the folder with your model classes and structures (used during parser generation);-input_service [folder]
— path to the folder with your service protocols;-output [folder]
— path to the folder, where to put generated files.Your script may look like this:
Demo & running tests
Use
spm_resolve.command
to load all dependencies andspm_generate_xcodeproj.command
to assemble an Xcode project file. Also, ensure Xcode targets macOS.Run
spm_run_sandbox.command
script for a demo — it builds and launches Service Autograph withSources/Sandbox
as a working directory.