summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-gaiaclient.spec471
-rw-r--r--sources1
3 files changed, 473 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..bc7b3e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/gaiaclient-1.7.10.tar.gz
diff --git a/python-gaiaclient.spec b/python-gaiaclient.spec
new file mode 100644
index 0000000..e705d09
--- /dev/null
+++ b/python-gaiaclient.spec
@@ -0,0 +1,471 @@
+%global _empty_manifest_terminate_build 0
+Name: python-gaiaclient
+Version: 1.7.10
+Release: 1
+Summary: Client for JOT Automation gaia machines
+License: MIT License
+URL: https://github.com/jotautomation/gaiapythonclient
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ef/8d/c4cbea4410ddcbaef42f5ef5db66ae9977f84dbaea5b343d187b805b5fdd/gaiaclient-1.7.10.tar.gz
+BuildArch: noarch
+
+Requires: python3-wheel
+Requires: python3-requests
+Requires: python3-websocket-client
+
+%description
+# Gaia Python Client
+
+This project introduces thin client for JOT Gaia HTTP API written on python. See API description bellow. Usage of the client is described on example.py.
+
+## Installation
+
+Preferred way to install is to use pip ```pip install gaiaclient```
+
+# JOT Gaia HTTP API quick start
+
+## Gaia Machines
+
+- [G5](https://github.com/jotautomation/G5-Test-Sequencer-Docs)
+- [M Box](https://github.com/jotautomation/M-Box-Test-Sequencer-Docs)
+
+## What it is?
+
+Low-ceremony, simple and self-assisting HATEOAS RestFul API for controlling JOT Automation Gaia platform testers.
+
+### Browse the API
+
+Use any web browser to browse through the API. Responses are in a JSON format so if your browser doesn't pretty print JSON automatically, you may want to install an extension that will do it for you. And yes everything you can do with the API is readable from the API itself.
+
+Gaia API follows [Siren](https://github.com/kevinswiber/siren) with some additions.
+
+API is found from address [URL]/api, where URL is URL to your gaia machine or virtual gaia instance.
+
+
+## Applications
+
+Every piece of hardware you want to control is an application. To list applications make GET request to URL/api/applications. You will get list of entities i.e. applications. To get more information about the application make GET request to "href". Now you will get all information about the application. To control the application see list of actions on response.
+
+When you need to change state of entity (remember action is an entity), run robot movement or execute any other action, you need to find action field of the entity. Every action has the same structure.
+
+Action defines always:
+ - name (name is unique in the context of the gaia machine)
+ - href (URL of the action)
+ - fields (see bellow)
+ - type (content type, almost always application/json)
+ - method (POST or GET)
+ - title (Description of what the action does)
+
+ If there is limited amount of options on fields they all are listed.
+
+Here I will list some applications types. This is not a comprehensive list of applications. The API itself will guide you to control any type of application and if you need assistance we are happy to help you.
+
+### Stateful applications
+
+Stateful application is type of application that defines limited number of states. In most cases there is two states: work/home, open/close etc.
+
+### CNC robot
+
+CNC robot application is type of application that is able to execute robot movements defined as G-code.
+
+
+
+
+#### Stateful application action example
+
+Here is an example of a stateful application action (Snip from GET http://URL/api/applications/BatteryConnector response)
+
+ {
+ "type": "application/json",
+ "href": "http://URL/api/applications/BatteryConnector/state",
+ "requiredActions": {},
+ "method": "POST",
+ "stateConditions": {},
+ "title": "Trigger state change to Home",
+ "name": "set-Home",
+ "fields": [
+ {
+ "type": "text",
+ "name": "value",
+ "value": "Home"
+ }
+ ]
+ }
+
+As you see there is some additional fields compared to standard action response. Those are used mainly for UI and can be omitted now. We are mainly interested on fields. To "trigger state change to Home"(title) you need to POST(method) to URL(href) with JSON(type) body containing field (fields) that has name "value" with value "Home". The whole command with cURL tool:
+
+ curl -X POST -H "Content-Type: application/json" -d '{"value":"Work"}' http://URL/api/applications/BatteryConnector/state
+
+#### CNC robot application
+
+Here is an example of a cnc application action (Snip from GET http://URL/api/applications/MainRobot response)
+
+ {
+ "title": "Execute CNC/G-code run",
+ "href": "http://URL/api/applications/MainRobot/cnc_run",
+ "type": "text/plain",
+ "method": "POST",
+ "name": "cnc_run",
+ "fields": [
+ {
+ "type": "text",
+ "name": "G-code"
+ }
+ ]
+ }
+
+To "execute CNC/G-code run"(title) you need to POST(method) to URL(href) with text/plain(type) body containing G-code. The whole command with cURL tool:
+
+ curl -X POST -H "Content-Type: text/plain" -d 'N010 G01 X133.964 Y41.984 Z73.5' http://URL/api/applications/MainRobot/cnc_run
+
+This example contains only one line of G-code. Real G-codes are of course longer. Whole G-code is sent as is with linux line endings.
+
+Tool to use with G-code can be set with comment line before real G-code starts. Syntax is "(ToolToUse:Finger1)" without quotes.
+
+#### State actions
+
+State actions do change state of main state machine. State actions are found from http://URL/api.
+
+
+#### Blocked actions vs actions
+
+If it is not allowed to execute the action, the action is listed under blocked actions instead of actions.
+
+
+## Client examples
+
+We have created free open-source clients to help the integration work. Find clients with example code here:
+
+ - [.NET/C#](https://github.com/jotautomation/gaiadotnetclient)
+ - [Python](https://github.com/jotautomation/gaiapythonclient)
+
+
+## Tips to create your own client
+
+Keep it simple. As you can see from our examples we don't define application or action types on client side. Instead we call applications and actions by name. This way client side is super thin and still capable of controlling any application. Thus you don't need to introduce new application type on client side when new application type is introduced on server side.
+
+
+
+
+
+%package -n python3-gaiaclient
+Summary: Client for JOT Automation gaia machines
+Provides: python-gaiaclient
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-gaiaclient
+# Gaia Python Client
+
+This project introduces thin client for JOT Gaia HTTP API written on python. See API description bellow. Usage of the client is described on example.py.
+
+## Installation
+
+Preferred way to install is to use pip ```pip install gaiaclient```
+
+# JOT Gaia HTTP API quick start
+
+## Gaia Machines
+
+- [G5](https://github.com/jotautomation/G5-Test-Sequencer-Docs)
+- [M Box](https://github.com/jotautomation/M-Box-Test-Sequencer-Docs)
+
+## What it is?
+
+Low-ceremony, simple and self-assisting HATEOAS RestFul API for controlling JOT Automation Gaia platform testers.
+
+### Browse the API
+
+Use any web browser to browse through the API. Responses are in a JSON format so if your browser doesn't pretty print JSON automatically, you may want to install an extension that will do it for you. And yes everything you can do with the API is readable from the API itself.
+
+Gaia API follows [Siren](https://github.com/kevinswiber/siren) with some additions.
+
+API is found from address [URL]/api, where URL is URL to your gaia machine or virtual gaia instance.
+
+
+## Applications
+
+Every piece of hardware you want to control is an application. To list applications make GET request to URL/api/applications. You will get list of entities i.e. applications. To get more information about the application make GET request to "href". Now you will get all information about the application. To control the application see list of actions on response.
+
+When you need to change state of entity (remember action is an entity), run robot movement or execute any other action, you need to find action field of the entity. Every action has the same structure.
+
+Action defines always:
+ - name (name is unique in the context of the gaia machine)
+ - href (URL of the action)
+ - fields (see bellow)
+ - type (content type, almost always application/json)
+ - method (POST or GET)
+ - title (Description of what the action does)
+
+ If there is limited amount of options on fields they all are listed.
+
+Here I will list some applications types. This is not a comprehensive list of applications. The API itself will guide you to control any type of application and if you need assistance we are happy to help you.
+
+### Stateful applications
+
+Stateful application is type of application that defines limited number of states. In most cases there is two states: work/home, open/close etc.
+
+### CNC robot
+
+CNC robot application is type of application that is able to execute robot movements defined as G-code.
+
+
+
+
+#### Stateful application action example
+
+Here is an example of a stateful application action (Snip from GET http://URL/api/applications/BatteryConnector response)
+
+ {
+ "type": "application/json",
+ "href": "http://URL/api/applications/BatteryConnector/state",
+ "requiredActions": {},
+ "method": "POST",
+ "stateConditions": {},
+ "title": "Trigger state change to Home",
+ "name": "set-Home",
+ "fields": [
+ {
+ "type": "text",
+ "name": "value",
+ "value": "Home"
+ }
+ ]
+ }
+
+As you see there is some additional fields compared to standard action response. Those are used mainly for UI and can be omitted now. We are mainly interested on fields. To "trigger state change to Home"(title) you need to POST(method) to URL(href) with JSON(type) body containing field (fields) that has name "value" with value "Home". The whole command with cURL tool:
+
+ curl -X POST -H "Content-Type: application/json" -d '{"value":"Work"}' http://URL/api/applications/BatteryConnector/state
+
+#### CNC robot application
+
+Here is an example of a cnc application action (Snip from GET http://URL/api/applications/MainRobot response)
+
+ {
+ "title": "Execute CNC/G-code run",
+ "href": "http://URL/api/applications/MainRobot/cnc_run",
+ "type": "text/plain",
+ "method": "POST",
+ "name": "cnc_run",
+ "fields": [
+ {
+ "type": "text",
+ "name": "G-code"
+ }
+ ]
+ }
+
+To "execute CNC/G-code run"(title) you need to POST(method) to URL(href) with text/plain(type) body containing G-code. The whole command with cURL tool:
+
+ curl -X POST -H "Content-Type: text/plain" -d 'N010 G01 X133.964 Y41.984 Z73.5' http://URL/api/applications/MainRobot/cnc_run
+
+This example contains only one line of G-code. Real G-codes are of course longer. Whole G-code is sent as is with linux line endings.
+
+Tool to use with G-code can be set with comment line before real G-code starts. Syntax is "(ToolToUse:Finger1)" without quotes.
+
+#### State actions
+
+State actions do change state of main state machine. State actions are found from http://URL/api.
+
+
+#### Blocked actions vs actions
+
+If it is not allowed to execute the action, the action is listed under blocked actions instead of actions.
+
+
+## Client examples
+
+We have created free open-source clients to help the integration work. Find clients with example code here:
+
+ - [.NET/C#](https://github.com/jotautomation/gaiadotnetclient)
+ - [Python](https://github.com/jotautomation/gaiapythonclient)
+
+
+## Tips to create your own client
+
+Keep it simple. As you can see from our examples we don't define application or action types on client side. Instead we call applications and actions by name. This way client side is super thin and still capable of controlling any application. Thus you don't need to introduce new application type on client side when new application type is introduced on server side.
+
+
+
+
+
+%package help
+Summary: Development documents and examples for gaiaclient
+Provides: python3-gaiaclient-doc
+%description help
+# Gaia Python Client
+
+This project introduces thin client for JOT Gaia HTTP API written on python. See API description bellow. Usage of the client is described on example.py.
+
+## Installation
+
+Preferred way to install is to use pip ```pip install gaiaclient```
+
+# JOT Gaia HTTP API quick start
+
+## Gaia Machines
+
+- [G5](https://github.com/jotautomation/G5-Test-Sequencer-Docs)
+- [M Box](https://github.com/jotautomation/M-Box-Test-Sequencer-Docs)
+
+## What it is?
+
+Low-ceremony, simple and self-assisting HATEOAS RestFul API for controlling JOT Automation Gaia platform testers.
+
+### Browse the API
+
+Use any web browser to browse through the API. Responses are in a JSON format so if your browser doesn't pretty print JSON automatically, you may want to install an extension that will do it for you. And yes everything you can do with the API is readable from the API itself.
+
+Gaia API follows [Siren](https://github.com/kevinswiber/siren) with some additions.
+
+API is found from address [URL]/api, where URL is URL to your gaia machine or virtual gaia instance.
+
+
+## Applications
+
+Every piece of hardware you want to control is an application. To list applications make GET request to URL/api/applications. You will get list of entities i.e. applications. To get more information about the application make GET request to "href". Now you will get all information about the application. To control the application see list of actions on response.
+
+When you need to change state of entity (remember action is an entity), run robot movement or execute any other action, you need to find action field of the entity. Every action has the same structure.
+
+Action defines always:
+ - name (name is unique in the context of the gaia machine)
+ - href (URL of the action)
+ - fields (see bellow)
+ - type (content type, almost always application/json)
+ - method (POST or GET)
+ - title (Description of what the action does)
+
+ If there is limited amount of options on fields they all are listed.
+
+Here I will list some applications types. This is not a comprehensive list of applications. The API itself will guide you to control any type of application and if you need assistance we are happy to help you.
+
+### Stateful applications
+
+Stateful application is type of application that defines limited number of states. In most cases there is two states: work/home, open/close etc.
+
+### CNC robot
+
+CNC robot application is type of application that is able to execute robot movements defined as G-code.
+
+
+
+
+#### Stateful application action example
+
+Here is an example of a stateful application action (Snip from GET http://URL/api/applications/BatteryConnector response)
+
+ {
+ "type": "application/json",
+ "href": "http://URL/api/applications/BatteryConnector/state",
+ "requiredActions": {},
+ "method": "POST",
+ "stateConditions": {},
+ "title": "Trigger state change to Home",
+ "name": "set-Home",
+ "fields": [
+ {
+ "type": "text",
+ "name": "value",
+ "value": "Home"
+ }
+ ]
+ }
+
+As you see there is some additional fields compared to standard action response. Those are used mainly for UI and can be omitted now. We are mainly interested on fields. To "trigger state change to Home"(title) you need to POST(method) to URL(href) with JSON(type) body containing field (fields) that has name "value" with value "Home". The whole command with cURL tool:
+
+ curl -X POST -H "Content-Type: application/json" -d '{"value":"Work"}' http://URL/api/applications/BatteryConnector/state
+
+#### CNC robot application
+
+Here is an example of a cnc application action (Snip from GET http://URL/api/applications/MainRobot response)
+
+ {
+ "title": "Execute CNC/G-code run",
+ "href": "http://URL/api/applications/MainRobot/cnc_run",
+ "type": "text/plain",
+ "method": "POST",
+ "name": "cnc_run",
+ "fields": [
+ {
+ "type": "text",
+ "name": "G-code"
+ }
+ ]
+ }
+
+To "execute CNC/G-code run"(title) you need to POST(method) to URL(href) with text/plain(type) body containing G-code. The whole command with cURL tool:
+
+ curl -X POST -H "Content-Type: text/plain" -d 'N010 G01 X133.964 Y41.984 Z73.5' http://URL/api/applications/MainRobot/cnc_run
+
+This example contains only one line of G-code. Real G-codes are of course longer. Whole G-code is sent as is with linux line endings.
+
+Tool to use with G-code can be set with comment line before real G-code starts. Syntax is "(ToolToUse:Finger1)" without quotes.
+
+#### State actions
+
+State actions do change state of main state machine. State actions are found from http://URL/api.
+
+
+#### Blocked actions vs actions
+
+If it is not allowed to execute the action, the action is listed under blocked actions instead of actions.
+
+
+## Client examples
+
+We have created free open-source clients to help the integration work. Find clients with example code here:
+
+ - [.NET/C#](https://github.com/jotautomation/gaiadotnetclient)
+ - [Python](https://github.com/jotautomation/gaiapythonclient)
+
+
+## Tips to create your own client
+
+Keep it simple. As you can see from our examples we don't define application or action types on client side. Instead we call applications and actions by name. This way client side is super thin and still capable of controlling any application. Thus you don't need to introduce new application type on client side when new application type is introduced on server side.
+
+
+
+
+
+%prep
+%autosetup -n gaiaclient-1.7.10
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-gaiaclient -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 1.7.10-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..ccaa191
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+fccc8d965229e9c627e0bf78ca0a61a7 gaiaclient-1.7.10.tar.gz