{"id":13548243,"url":"https://github.com/tmstieff/Woke","last_synced_at":"2025-04-02T21:31:07.865Z","repository":{"id":217153826,"uuid":"99871670","full_name":"tmstieff/Woke","owner":"tmstieff","description":"A native multiplatform desktop REST client with grand ambitions and limited scope","archived":false,"fork":false,"pushed_at":"2020-08-21T15:01:59.000Z","size":1326,"stargazers_count":18,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-03T17:38:28.590Z","etag":null,"topics":["desktop","desktop-app","desktop-application","linux","macos","qt","qt5","rest-client","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmstieff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-10T02:21:07.000Z","updated_at":"2023-07-12T15:53:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"6dab9790-81e7-4d5b-a371-b19052c4ef48","html_url":"https://github.com/tmstieff/Woke","commit_stats":null,"previous_names":["tmstieff/woke"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmstieff%2FWoke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmstieff%2FWoke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmstieff%2FWoke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmstieff%2FWoke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmstieff","download_url":"https://codeload.github.com/tmstieff/Woke/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246895691,"owners_count":20851316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop","desktop-app","desktop-application","linux","macos","qt","qt5","rest-client","windows"],"created_at":"2024-08-01T12:01:07.780Z","updated_at":"2025-04-02T21:31:07.316Z","avatar_url":"https://github.com/tmstieff.png","language":"C++","funding_links":[],"categories":["C++","macos"],"sub_categories":[],"readme":"# Woke\n\u003ca href=\"https://travis-ci.org/tmstieff/Woke\"\u003e\u003cimg alt=\"Travis CI Build\" src=\"https://travis-ci.org/tmstieff/Woke.svg?branch=master\"\u003e\u003c/a\u003e\n[![Build status](https://ci.appveyor.com/api/projects/status/ixwvi3wi6mfosm9j/branch/master?svg=true)](https://ci.appveyor.com/project/tmstieff/woke/branch/master)\n\n\n\nA native multiplatform REST client with grand ambitions and limited scope.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"900\" alt=\"Woke client\" src=\"https://i.imgur.com/qBwiKJ4.png\"\u003e\n\u003c/p\u003e\n\n## Binaries\nReleases are currently provided for Linux as AppImages and for Windows as a portable ZIP or executable installer. Currently there are no binaries available for Mac.\n\n\u003ca href=\"https://woke.rest/download\"\u003eWindows and Linux\u003c/a\u003e\n\n## Features\n* Supports most basic HTTP request types\n* Focus on Python scripting\n* Raw header input\n* Request body input\n* Response body JSON parser\n* Simple request history\n* Simple request saving\n\nThe memory footprint is also quite low compared with the Electorn based alternatives.\n\n```\n➜ ~ ps_mem -S -p $(pgrep woke)\n Private  +   Shared  =  RAM used   Swap used   Program\n\n 30.9 MiB +  10.6 MiB =  41.5 MiB     0.0 KiB   woke\n---------------------------------------------\n                         41.5 MiB     0.0 KiB\n=============================================\n```\n\n## Scripting\n\nThe pre and post tabs can be used to retrieve and set variables for your project. For instance, you may wish to login, capture the authentication token from the response body / headers, and declare it as a project variable to be used in the headers of another request. The script tabs run a full python interpreter, so any standard Python libraries are available to be imported. The following additional functions are used to set and retrieve variables. The get is scoped from most to least specific.\n\n```\nget_var(\"var_name\")\nset_local_var(\"var_name\", \"local_value\")\nset_project_var(\"var_name\", \"project_value\")\nset_global_var(\"var_name\", \"global_value\")\n```\n\nBecause the additional methods are evaluated with Python, any valid Python statement can be evaluted, and the result of the evaluation will be assigned as the value of the variable. However, for now, everything needs to be evaluated as string. As an example, you can add the following to a \"Post-Request Script\" for a login request.\n\n```\nset_project_var('token', body['token'])\n```\n\nIn another request, in the request headers you can add:\n\n```\nAuthorization: Bearer {{token}}\n```\n\n## Ambitions\n* NeoVim editor built in\n* Parsing of Swagger, JSON Schema, and other applicable REST specifications\n* Support for various authentication protocols\n\n## Building From Source\nYou will need QT 5.X and the fork of the QDjango (https://github.com/tmstieff/qdjango) library to build from source. Instructions are provided for Ubuntu and Arch, but the steps should apply for most Linux distributions. Just substitute aptitude for your package manager of choice.\n\n### Ubuntu\n\nAdd some PPAs required for the Qt binaries.\n\n```\nsudo add-apt-repository ppa:beineri/opt-qt-5.10.1-trusty -y\nsudo add-apt-repository ppa:fkrull/deadsnakes -y\n```\nActivate Python3 and install Python3.6 if not already installed.\n```\npyenv global $(pyenv whence 2to3) \nsudo apt-get install python3.6 --allow-unauthenticated\nsudo apt-get install python3.6-dev --allow-unauthenticated\n```\nInstall Qt binaries and headers.\n```\nsudo apt-get install qt510base\nsource /opt/qt510/bin/qt510-env.sh\n```\nClone the fork of qdjango dependency without Qt keywords and build it from source.\n```\ngit clone https://github.com/tmstieff/qdjango.git\ncd qdjango\nqmake\nmake\nsudo make install\ncd ../\n```\nClone the pybind11 project and build it from source.\n```\ngit clone https://github.com/pybind/pybind11.git\ncd pybind11\nmkdir build\ncd build\npython3 -m pip install pytest\ncmake ..\nsudo make install\nsudo ldconfig\n```\nBuild the Woke project.\n```\nqmake -v\nqmake CONFIG+=test\nmake\n./woke-test\nqmake CONFIG+=release PREFIX=/usr\nmake\nmake install\n```\n\n### Arch\n\nArch users will need Python3, Qt 5, and possibly CMake and GCC.\n```\nsudo pacman -S python qt5-base cmake gcc\n```\nOnce installed, the instructions above should be identical.\n\n### Windows\n\nThe project can be built from source within Windows using the MSVC2017 compiler. Instructions will vary based on the project location, but you will need to install 64-bit version of Python 3, Qt 5, and CMake. Ensure that all dependencies are available through your system path.\n\nBuild the qdjango fork and the pybind11 project from source.\n```\ngit clone https://github.com/tmstieff/qdjango.git\ncd qdjango\nqmake qdjango.pro\nnmake release\nnmake install\nC:\\Python36-x64\\Scripts\\pip install pytest\ncd ..\ngit clone https://github.com/pybind/pybind11.git\ncd pybind11\nmkdir build\ncd build\ncmake -A x64 ..\ncmake -A x64 --build .\ncmake --build . --config Release --target INSTALL\n```\nBuild woke from source.\n```\nmkdir build\ncd build\nqmake ..\nnmake release\n```\nCopy the qdjango libaries and the pybind11 libraries into the same folder as your executable prior to running. It may also be necessary to copy the OpenSSL dynamic libaries from the `/misc/win` folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmstieff%2FWoke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmstieff%2FWoke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmstieff%2FWoke/lists"}