• Stars
    star
    12,493
  • Rank 2,581 (Top 0.06 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hurl, run and test HTTP requests with plain text.

Hurl LogoHurl Logo


deploy status coverage Crates.io documentation

What's Hurl?

Hurl is a command line tool that runs HTTP requests defined in a simple plain text format.

It can chain requests, capture values and evaluate queries on headers and body response. Hurl is very versatile: it can be used for both fetching data and testing HTTP sessions.

Hurl makes it easy to work with HTML content, REST / SOAP / GraphQL APIs, or any other XML / JSON based APIs.

# Get home:
GET https://example.org

HTTP 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"


# Do login!
POST https://example.org/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}
HTTP 302

Chaining multiple requests is easy:

GET https://example.org/api/health
GET https://example.org/api/step1
GET https://example.org/api/step2
GET https://example.org/api/step3

Also an HTTP Test Tool

Hurl can run HTTP requests but can also be used to test HTTP responses. Different types of queries and predicates are supported, from XPath and JSONPath on body response, to assert on status code and response headers.

Hurl Demo

It is well adapted for REST / JSON APIs

POST https://example.org/api/tests
{
    "id": "4568",
    "evaluate": true
}

HTTP 200
[Asserts]
header "X-Frame-Options" == "SAMEORIGIN"
jsonpath "$.status" == "RUNNING"    # Check the status code
jsonpath "$.tests" count == 25      # Check the number of items
jsonpath "$.id" matches /\d{4}/     # Check the format of the id

HTML content

GET https://example.org

HTTP 200
[Asserts]
xpath "normalize-space(//head/title)" == "Hello world!"

GraphQL

POST https://example.org/graphql
```graphql
{
  human(id: "1000") {
    name
    height(unit: FOOT)
  }
}
```
HTTP 200

and even SOAP APIs

POST https://example.org/InStock
Content-Type: application/soap+xml; charset=utf-8
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="https://example.org">
  <soap:Header></soap:Header>
  <soap:Body>
    <m:GetStockPrice>
      <m:StockName>GOOG</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>
HTTP 200

Hurl can also be used to test the performance of HTTP endpoints

GET https://example.org/api/v1/pets

HTTP 200
[Asserts]
duration < 1000  # Duration in ms

And check response bytes

GET https://example.org/data.tar.gz

HTTP 200
[Asserts]
sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;

Finally, Hurl is easy to integrate in CI/CD, with text, JUnit and HTML reports

HTML report HTML report

Why Hurl?

  • Text Format: for both devops and developers
  • Fast CLI: a command line for local dev and continuous integration
  • Single Binary: easy to install, with no runtime required

Powered by curl

Hurl is a lightweight binary written in Rust. Under the hood, Hurl HTTP engine is powered by libcurl, one of the most powerful and reliable file transfer libraries. With its text file format, Hurl adds syntactic sugar to run and test HTTP requests, but it's still the curl that we love.

Feedbacks

To support its development, star Hurl on GitHub!

Feedback, suggestion, bugs or improvements are welcome.

POST https://hurl.dev/api/feedback
{
  "name": "John Doe",
  "feedback": "Hurl is awesome!"
}
HTTP 200

Resources

License

Blog

Tutorial

Documentation

GitHub

Table of Contents

Samples

To run a sample, edit a file with the sample content, and run Hurl:

$ vi sample.hurl

GET https://example.org

$ hurl sample.hurl

By default, Hurl behaves like curl and outputs the last HTTP response's entry. To have a test oriented output, you can use --test option:

$ hurl --test sample.hurl

You can check Hurl tests suite for more samples.

Getting Data

A simple GET:

GET https://example.org

Doc

HTTP Headers

A simple GET with headers:

GET https://example.org/news
User-Agent: Mozilla/5.0 
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

Doc

Query Params

GET https://example.org/news
[QueryStringParams]
order: newest
search: something to search
count: 100

Or:

GET https://example.org/news?order=newest&search=something%20to%20search&count=100

Doc

Basic Authentication

GET https://example.org/protected
[BasicAuth]
bob: secret

Doc

This is equivalent to construct the request with a Authorization header:

# Authorization header value can be computed with `echo -n 'bob:secret' | base64`
GET https://example.org/protected
Authorization: Basic Ym9iOnNlY3JldA== 

Basic authentication allows per request authentication. If you want to add basic authentication to all the requests of a Hurl file you could use -u/--user option.

Sending Data

Sending HTML Form Data

POST https://example.org/contact
[FormParams]
default: false
token: {{token}}
email: [email protected]
number: 33611223344

Doc

Sending Multipart Form Data

POST https://example.org/upload
[MultipartFormData]
field1: value1
field2: file,example.txt;
# One can specify the file content type:
field3: file,example.zip; application/zip

Doc

Multipart forms can also be sent with a multiline string body:

POST https://example.org/upload
Content-Type: multipart/form-data; boundary="boundary"
```
--boundary
Content-Disposition: form-data; name="key1"

value1
--boundary
Content-Disposition: form-data; name="upload1"; filename="data.txt"
Content-Type: text/plain

Hello World!
--boundary
Content-Disposition: form-data; name="upload2"; filename="data.html"
Content-Type: text/html

<div>Hello <b>World</b>!</div>
--boundary--
```

In that case, files have to be inlined in the Hurl file.

Doc

Posting a JSON Body

With an inline JSON:

POST https://example.org/api/tests
{
    "id": "456",
    "evaluate": true
}

Doc

With a local file:

POST https://example.org/api/tests
Content-Type: application/json
file,data.json;

Doc

Templating a JSON Body

PUT https://example.org/api/hits
Content-Type: application/json
{
    "key0": "{{a_string}}",
    "key1": {{a_bool}},
    "key2": {{a_null}},
    "key3": {{a_number}}
}

Variables can be initialized via command line:

$ hurl --variable a_string=apple \
       --variable a_bool=true \
       --variable a_null=null \
       --variable a_number=42 \
       test.hurl

Resulting in a PUT request with the following JSON body:

{
    "key0": "apple",
    "key1": true,
    "key2": null,
    "key3": 42
}

Doc

Templating a XML Body

Using templates with XML body is not currently supported in Hurl. You can use templates in XML multiline string body with variables to send a variable XML body:

POST https://example.org/echo/post/xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<Request>
    <Login>{{login}}</Login>
    <Password>{{password}}</Password>
</Request>
```

Doc

Using GraphQL Query

A simple GraphQL query:

POST https://example.org/starwars/graphql
```graphql
{
  human(id: "1000") {
    name
    height(unit: FOOT)
  }
}
```

A GraphQL query with variables:

POST https://example.org/starwars/graphql
```graphql
query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
  }
}

variables {
  "episode": "JEDI",
  "withFriends": false
}
```

GraphQL queries can also use Hurl templates.

Doc

Testing Response

Testing Response Headers

Use implicit response asserts to test header values:

GET https://example.org/index.html

HTTP 200
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT

Doc

Or use explicit response asserts with predicates:

GET https://example.org

HTTP 302
[Asserts]
header "Location" contains "www.example.net"

Doc

Testing REST APIs

Asserting JSON body response (node values, collection count etc...) with JSONPath:

GET https://example.org/order
screencapability: low

HTTP 200
[Asserts]
jsonpath "$.validated" == true
jsonpath "$.userInfo.firstName" == "Franck"
jsonpath "$.userInfo.lastName" == "Herbert"
jsonpath "$.hasDevice" == false
jsonpath "$.links" count == 12
jsonpath "$.state" != null
jsonpath "$.order" matches "^order-\\d{8}$"
jsonpath "$.order" matches /^order-\d{8}$/     # Alternative syntax with regex literal

Doc

Testing status code:

GET https://example.org/order/435

HTTP 200

Doc

GET https://example.org/order/435

# Testing status code is in a 200-300 range
HTTP *
[Asserts]
status >= 200
status < 300

Doc

Testing HTML Response

GET https://example.org

HTTP 200
Content-Type: text/html; charset=UTF-8

[Asserts]
xpath "string(/html/head/title)" contains "Example" # Check title
xpath "count(//p)" == 2  # Check the number of p
xpath "//p" count == 2  # Similar assert for p
xpath "boolean(count(//h2))" == false  # Check there is no h2  
xpath "//h2" not exists  # Similar assert for h2
xpath "string(//div[1])" matches /Hello.*/

Doc

Testing Set-Cookie Attributes

GET https://example.org/home

HTTP 200
[Asserts]
cookie "JSESSIONID" == "8400BAFE2F66443613DC38AE3D9D6239"
cookie "JSESSIONID[Value]" == "8400BAFE2F66443613DC38AE3D9D6239"
cookie "JSESSIONID[Expires]" contains "Wed, 13 Jan 2021"
cookie "JSESSIONID[Secure]" exists
cookie "JSESSIONID[HttpOnly]" exists
cookie "JSESSIONID[SameSite]" == "Lax"

Doc

Testing Bytes Content

Check the SHA-256 response body hash:

GET https://example.org/data.tar.gz

HTTP 200
[Asserts]
sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;

Doc

SSL Certificate

Check the properties of a SSL certificate:

GET https://example.org

HTTP 200
[Asserts]
certificate "Subject" == "CN=example.org"
certificate "Issuer" == "C=US, O=Let's Encrypt, CN=R3"
certificate "Expire-Date" daysAfterNow > 15
certificate "Serial-Number" matches /[\da-f]+/

Doc

Others

HTTP Version

Testing HTTP version (1.0, 1.1 or 2):

GET https://example.org/order/435
HTTP/2 200

Doc

Polling and Retry

Retry request on any errors (asserts, captures, status code, runtime etc...):

# Create a new job
POST https://api.example.org/jobs

HTTP 201
[Captures]
job_id: jsonpath "$.id"
[Asserts]
jsonpath "$.state" == "RUNNING"


# Pull job status until it is completed
GET https://api.example.org/jobs/{{job_id}}
[Options]
retry: 10   # maximum number of retry, -1 for unlimited

HTTP 200
[Asserts]
jsonpath "$.state" == "COMPLETED"

Doc

Testing Endpoint Performance

GET https://sample.org/helloworld

HTTP *
[Asserts]
duration < 1000   # Check that response time is less than one second

Doc

Using SOAP APIs

POST https://example.org/InStock
Content-Type: application/soap+xml; charset=utf-8
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="https://example.org">
  <soap:Header></soap:Header>
  <soap:Body>
    <m:GetStockPrice>
      <m:StockName>GOOG</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>

HTTP 200

Doc

Capturing and Using a CSRF Token

GET https://example.org

HTTP 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"


POST https://example.org/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}
HTTP 302

Doc

Checking Byte Order Mark (BOM) in Response Body

GET https://example.org/data.bin

HTTP 200
[Asserts]
bytes startsWith hex,efbbbf;

Doc

Manual

Name

hurl - run and test HTTP requests.

Synopsis

hurl [options] [FILE...]

Description

Hurl is a command line tool that runs HTTP requests defined in a simple plain text format.

It can chain requests, capture values and evaluate queries on headers and body response. Hurl is very versatile, it can be used for fetching data and testing HTTP sessions: HTML content, REST / SOAP / GraphQL APIs, or any other XML / JSON based APIs.

$ hurl session.hurl

If no input files are specified, input is read from stdin.

$ echo GET http://httpbin.org/get | hurl
    {
      "args": {},
      "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip",
        "Content-Length": "0",
        "Host": "httpbin.org",
        "User-Agent": "hurl/0.99.10",
        "X-Amzn-Trace-Id": "Root=1-5eedf4c7-520814d64e2f9249ea44e0"
      },
      "origin": "1.2.3.4",
      "url": "http://httpbin.org/get"
    }

Output goes to stdout by default. To have output go to a file, use the -o, --output option:

$ hurl -o output input.hurl

By default, Hurl executes all HTTP requests and outputs the response body of the last HTTP call.

To have a test oriented output, you can use --test option:

$ hurl --test *.hurl

Hurl File Format

The Hurl file format is fully documented in https://hurl.dev/docs/hurl-file.html

It consists of one or several HTTP requests

GET http:/example.org/endpoint1
GET http:/example.org/endpoint2

Capturing values

A value from an HTTP response can be-reused for successive HTTP requests.

A typical example occurs with CSRF tokens.

GET https://example.org
HTTP 200
# Capture the CSRF token value from html body.
[Captures]
csrf_token: xpath "normalize-space(//meta[@name='_csrf_token']/@content)"

# Do the login !
POST https://example.org/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}

More information on captures can be found here https://hurl.dev/docs/capturing-response.html

Asserts

The HTTP response defined in the Hurl file are used to make asserts. Responses are optional.

At the minimum, response includes assert on the HTTP status code.

GET http:/example.org
HTTP 301

It can also include asserts on the response headers

GET http:/example.org
HTTP 301
Location: http://www.example.org

Explicit asserts can be included by combining a query and a predicate

GET http:/example.org
HTTP 301
[Asserts]
xpath "string(//title)" == "301 Moved"

With the addition of asserts, Hurl can be used as a testing tool to run scenarios.

More information on asserts can be found here https://hurl.dev/docs/asserting-response.html

Options

Options that exist in curl have exactly the same semantics.

Options specified on the command line are defined for every Hurl file's entry.

For instance:

$ hurl --location foo.hurl

will follow redirection for each entry in foo.hurl. You can also define an option only for a particular entry with an [Options] section. For instance, this Hurl file:

GET https://example.org
HTTP 301

GET https://example.org
[Options]
location: true
HTTP 200

will follow a redirection only for the second entry.

Option Description
--cacert <FILE> Specifies the certificate file for peer verification. The file may contain multiple CA certificates and must be in PEM format.
Normally Hurl is built to use a default file for this, so this option is typically used to alter that default file.
-E, --cert <CERTIFICATE[:PASSWORD]> Client certificate file and password.

See also --key.
--color Colorize debug output (the HTTP response output is not colorized).
--compressed Request a compressed response using one of the algorithms br, gzip, deflate and automatically decompress the content.
--connect-timeout <SECONDS> Maximum time in seconds that you allow Hurl's connection to take.

See also -m, --max-time.
--connect-to <HOST1:PORT1:HOST2:PORT2> For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead. This option can be used several times in a command line.

See also --resolve.
-b, --cookie <FILE> Read cookies from FILE (using the Netscape cookie file format).

Combined with -c, --cookie-jar, you can simulate a cookie storage between successive Hurl runs.
-c, --cookie-jar <FILE> Write cookies to FILE after running the session (only for one session).
The file will be written using the Netscape cookie file format.

Combined with -b, --cookie, you can simulate a cookie storage between successive Hurl runs.
--error-format <FORMAT> Control the format of error message (short by default or long)
--fail-at-end Continue executing requests to the end of the Hurl file even when an assert error occurs.
By default, Hurl exits after an assert error in the HTTP response.

Note that this option does not affect the behavior with multiple input Hurl files.

All the input files are executed independently. The result of one file does not affect the execution of the other Hurl files.
--file-root <DIR> Set root file system to import files in Hurl. This is used for both files in multipart form data and request body.
When this is not explicitly defined, the files are relative to the current directory in which Hurl is running.
-L, --location Follow redirect. To limit the amount of redirects to follow use the --max-redirs option
--glob <GLOB> Specify input files that match the given glob pattern.

Multiple glob flags may be used. This flag supports common Unix glob patterns like *, ? and [].
However, to avoid your shell accidentally expanding glob patterns before Hurl handles them, you must use single quotes or double quotes around each pattern.
-i, --include Include the HTTP headers in the output (last entry).
--ignore-asserts Ignore all asserts defined in the Hurl file.
-k, --insecure This option explicitly allows Hurl to perform "insecure" SSL connections and transfers.
--interactive Stop between requests.
This is similar to a break point, You can then continue (Press C) or quit (Press Q).
--json Output each hurl file result to JSON. The format is very closed to HAR format.
--key <KEY> Private key file name.
--max-redirs <NUM> Set maximum number of redirection-followings allowed
By default, the limit is set to 50 redirections. Set this option to -1 to make it unlimited.
-m, --max-time <SECONDS> Maximum time in seconds that you allow a request/response to take. This is the standard timeout.

See also --connect-timeout.
--no-color Do not colorize output.
--no-output Suppress output. By default, Hurl outputs the body of the last response.
--noproxy <HOST(S)> Comma-separated list of hosts which do not use a proxy.
Override value from Environment variable no_proxy.
-o, --output <FILE> Write output to FILE instead of stdout.
--path-as-is Tell Hurl to not handle sequences of /../ or /./ in the given URL path. Normally Hurl will squash or merge them according to standards but with this option set you tell it not to do that.
-x, --proxy <[PROTOCOL://]HOST[:PORT]> Use the specified proxy.
--report-junit <FILE> Generate JUnit File.

If the FILE report already exists, it will be updated with the new test results.
--report-html <DIR> Generate HTML report in DIR.

If the HTML report already exists, it will be updated with the new test results.
--resolve <HOST:PORT:ADDR> Provide a custom address for a specific host and port pair. Using this, you can make the Hurl requests(s) use a specified address and prevent the otherwise normally resolved address to be used. Consider it a sort of /etc/hosts alternative provided on the command line.
--retry <NUM> Maximum number of retries, 0 for no retries, -1 for unlimited retries. Retry happens if any error occurs (asserts, captures, runtimes etc...).
--retry-interval <MILLISECONDS> Duration in milliseconds between each retry. Default is 1000 ms.
--ssl-no-revoke (Windows) This option tells Hurl to disable certificate revocation checks. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that.
--test Activate test mode: with this, the HTTP response is not outputted anymore, progress is reported for each Hurl file tested, and a text summary is displayed when all files have been run.
--to-entry <ENTRY_NUMBER> Execute Hurl file to ENTRY_NUMBER (starting at 1).
Ignore the remaining of the file. It is useful for debugging a session.
-u, --user <USER:PASSWORD> Add basic Authentication header to each request.
-A, --user-agent <NAME> Specify the User-Agent string to send to the HTTP server.
--variable <NAME=VALUE> Define variable (name/value) to be used in Hurl templates.
--variables-file <FILE> Set properties file in which your define your variables.

Each variable is defined as name=value exactly as with --variable option.

Note that defining a variable twice produces an error.
-v, --verbose Turn on verbose output on standard error stream.
Useful for debugging.

A line starting with '>' means data sent by Hurl.
A line staring with '<' means data received by Hurl.
A line starting with '*' means additional info provided by Hurl.

If you only want HTTP headers in the output, -i, --include might be the option you're looking for.
--very-verbose Turn on more verbose output on standard error stream.

In contrast to --verbose option, this option outputs the full HTTP body request and response on standard error. In addition, lines starting with '**' are libcurl debug logs.
-h, --help Usage help. This lists all current command line options with a short description.
-V, --version Prints version information

Environment

Environment variables can only be specified in lowercase.

Using an environment variable to set the proxy has the same effect as using the -x, --proxy option.

Variable Description
http_proxy [PROTOCOL://]<HOST>[:PORT] Sets the proxy server to use for HTTP.
https_proxy [PROTOCOL://]<HOST>[:PORT] Sets the proxy server to use for HTTPS.
all_proxy [PROTOCOL://]<HOST>[:PORT] Sets the proxy server to use if no protocol-specific proxy is set.
no_proxy <comma-separated list of hosts> List of host names that shouldn't go through any proxy.
HURL_name value Define variable (name/value) to be used in Hurl templates. This is similar than --variable and --variables-file options.
NO_COLOR When set to a non-empty string, do not colorize output (see --no-color option).

Exit Codes

Value Description
0 Success.
1 Failed to parse command-line options.
2 Input File Parsing Error.
3 Runtime error (such as failure to connect to host).
4 Assert Error.

WWW

https://hurl.dev

See Also

curl(1) hurlfmt(1)

Installation

Binaries Installation

Linux

Precompiled binary is available at hurl-4.0.0-x86_64-linux.tar.gz:

$ INSTALL_DIR=/tmp
$ curl -silent --location https://github.com/Orange-OpenSource/hurl/releases/download/4.0.0/hurl-4.0.0-x86_64-linux.tar.gz | tar xvz -C $INSTALL_DIR
$ export PATH=$INSTALL_DIR/hurl-4.0.0:$PATH

Debian / Ubuntu

For Debian / Ubuntu, Hurl can be installed using a binary .deb file provided in each Hurl release.

$ curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/4.0.0/hurl_4.0.0_amd64.deb
$ sudo apt update && apt install ./hurl_4.0.0_amd64.deb

Arch Linux / Manjaro

hurl-bin package for Arch Linux and derived distros is available via AUR.

NixOS / Nix

NixOS / Nix package is available on stable channel.

macOS

Precompiled binary is available at hurl-4.0.0-x86_64-macos.tar.gz for x86 CPUs and hurl-4.0.0-arm64-macos.tar.gz for ARM CPUS.

Homebrew

$ brew install hurl

MacPorts

$ sudo port install hurl

FreeBSD

$ sudo pkg install hurl

Windows

Zip File

Hurl can be installed from a standalone zip file hurl-4.0.0-win64.zip. You will need to update your PATH variable.

Installer

An installer hurl-4.0.0-win64-installer.exe is also available.

Chocolatey

$ choco install hurl

Scoop

$ scoop install hurl

Windows Package Manager

$ winget install hurl

Cargo

If you're a Rust programmer, Hurl can be installed with cargo.

$ cargo install hurl

Docker

$ docker pull ghcr.io/orange-opensource/hurl:latest

npm

$ npm install --save-dev @orangeopensource/hurl

Building From Sources

Hurl sources are available in GitHub.

Build on Linux

Hurl depends on libssl, libcurl and libxml2 native libraries. You will need their development files in your platform.

Debian based distributions

$ apt install -y build-essential pkg-config libssl-dev libcurl4-openssl-dev libxml2-dev

Red Hat based distributions

$ yum install -y pkg-config gcc openssl-devel libxml2-devel

Arch based distributions

$ pacman -Sy --noconfirm pkgconf gcc glibc openssl libxml2

Build on macOS

$ xcode-select --install
$ brew install pkg-config

Hurl is written in Rust. You should install the latest stable release.

$ curl https://sh.rustup.rs -sSf | sh -s -- -y
$ source $HOME/.cargo/env
$ rustc --version
$ cargo --version

Then build hurl:

$ git clone https://github.com/Orange-OpenSource/hurl
$ cd hurl
$ cargo build --release
$ ./target/release/hurl --version

Build on Windows

Please follow the contrib on Windows section.

More Repositories

1

bmc-cache

In-kernel cache based on eBPF.
C
399
star
2

Orange-Boosted-Bootstrap

Orange Boosted is an accessible, ergonomic and Orange branded framework based on Bootstrap
JavaScript
191
star
3

casskop

This Kubernetes operator automates the Cassandra operations such as deploying a new rack aware cluster, adding/removing nodes, configuring the C* and JVM parameters, upgrading JVM and C* versions, and many more...
Go
185
star
4

angular-swagger-ui

An angularJS implementation of Swagger UI
JavaScript
134
star
5

nifikop

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes. Apache NiFI is a free, open-source solution that support powerful and scalable directed graphs of data routing, transformation, and system mediation logic.
Go
129
star
6

towards5gs-helm

Open-source project providing Helm charts for deploying Free5GC and UERANSIM on a Kubernetes cluster
Smarty
111
star
7

Cool-Chic

Low-complexity neural image & video codec.
Python
94
star
8

bagpipe-bgp

**** Now moved to openstack/networking-bagpipe (but still usable standalone without other openstack components) ****
Python
88
star
9

YACassandraPDO

Cassandra PDO Driver fork
C++
85
star
10

keepass-vault-sync-plugin

Keepass plugin to synchronize Hashicorp Vault secrets
C#
80
star
11

simiasque

A developer tool to hide Android status bar under an overlay mask
Java
72
star
12

a11y-guidelines

Our vision of mobile & web accessibility guidelines and best practices, with valid/invalid examples
Nunjucks
59
star
13

AIVC

AIVC is a fully-learned video codec. It is able to code video sequences at different rates and it features tunable coding configurations.
Python
58
star
14

kibana-xlsx-import

Kibana plugin for import XLSX/CSV file to ElasticSearch
JavaScript
57
star
15

oorobot

Un robot éducatif à construire soi-même
JavaScript
50
star
16

diafuzzer

Diameter interfaces fuzzer. Its fuzzing process is based on concrete network traces, and it uses 3gpp and ETSI specifications to fuzz efficiently.
Python
49
star
17

conllueditor

ConllEditor is a tool to edit dependency syntax trees in CoNLL-U format.
Java
48
star
18

Orange-Confort-plus

The target of Orange Confort+ functionalities is to enhance user experience on web sites, which are already accessible, or still accessible. Orange Confort+ provides these services : Typography - user may change: font size, space between words, characters and lines, font-face to Open Dislexic Layout: cancel layout, text align left, numbering list items, modify navigation links appereance, disply a reading ruler Colors : Modify foreground/background colors Behavior: direct access to main content on page load, automatic selection of page clickable elements with a user defined delay, page scrolling on simple user on hover. Be careful, Orange Confort+ does not improve the accessibility level of a web site: blocking points still stay blocking points, with or without Orange Confort+.
JavaScript
40
star
19

galera-operator

Galera Operator automates tasks for managing a Galera cluster in Kubernetes
Go
35
star
20

super-coding-ball

SuperCodingBall is a free educational game, which aims to introduce programming, through the theme of football!
TypeScript
35
star
21

spring-social-weibo

A "Spring Social" extension for weibo
Java
33
star
22

wamp.rt

A WAMP V2 nodejs router
JavaScript
33
star
23

pyDcop

Library for research on Distributed Constraints Optimization Problems
Python
32
star
24

opnfv-cloudify-clearwater

vIMS Clearwater deployment and lifecycle management with Cloudify Orchestrator
Python
31
star
25

oko

Extend Open vSwitch with BPF programs at runtime
C
30
star
26

pandoc-terminal-writer

Pretty-print text documents on a terminal using pandoc
Lua
30
star
27

just-drop-it

Simply and instantly beam a file between two browsers
TypeScript
27
star
28

font-accessible-dfa

A designed for all font that covers lots of needs.
26
star
29

ods-ios

A SwiftUI components library with code examples for Orange Design System
Swift
26
star
30

tr069agent

Generic TR-069 client easily portable on different devices
C
25
star
31

decret

DEbian Cve REproducer Tool
Python
22
star
32

floss-toolbox

A toolbox to help developers and open source referents to not waste their time with manual and boring tasks. Provides simple and light tools to make investigations in source code to look for hot data. Provides also primitives to manage GitHub and GitLab organizations.
Python
22
star
33

mod_dup

Contains two apache modules, mod_dup and mod_compare, that duplicate and compare HTTP requests respectively.
C++
21
star
34

p4rt-ovs

Programming runtime extensions for Open vSwitch with P4
C
21
star
35

optisam-backend

OpTISAM (Optimized tool for inventive software asset management) is a tool for the Software Asset Management Compliance Audit and Optimization Tool. This monorepo contains all the backend services
Go
20
star
36

IoT-SAFE-APDU-library

APDU library to communicate with a GSMA IoT SAFE applet ( https://www.gsma.com/iot/iot-safe)
C
19
star
37

noria-ontology

The NORIA-O project is a data model for IT networks, events and operations information. The ontology is developed using web technologies (e.g. RDF, OWL, SKOS) and is intended as a structure for realizing an IT Service Management (ITSM) Knowledge Graph (KG) for Anomaly Detection (AD) and Risk Management applications. The model has been developed in collaboration with operational teams, and in connection with third parties linked vocabularies.
Makefile
19
star
38

La-Va11ydette

Application web qui est une liste de questions / réponses afin de faciliter les audits d’accessibilité entre autre. Tout est prévu pour rajouter / modifier la liste de questions pour l’adapter à ses besoins (performance web, qualité front…).
JavaScript
18
star
39

NMaaS

The NMaaS (Network Monitoring as a Service) is an open-source platform which enables to deploy and manage containerized applications on a pool of physical machines. The NMaaS is more precisely a collection of open-source components (Kubernetes, Docker, Grafana, Prometheus, Rancher) which is deployed and installed automatically by Ansible.
Shell
18
star
40

Orange-Boosted-Angular

All the custom Orange components of Boosted, working with Angular
TypeScript
17
star
41

COQAR

a corpus containing 4.5K conversations from the Conversational Question-Answering dataset CoQA, for a total of 53K follow-up question-answer pairs, in which each original question was manually annotated with at least 2 and at most 3 out-of-context rewritings
Python
16
star
42

gstdashdemux

GStreamer plugin allowing the playback of MPEG DASH streams
C
15
star
43

qmljsreformatter

The qmljsreformatter tool allows to automatically format a QML file via a command-line interface. It is based on a functionality embedded in the Qt Creator IDE.
C++
15
star
44

IOT-Map-Component

A map component that can be integrated in any computer or mobile web application developed in Angular or React, which provides Orange branded design and user experience.
TypeScript
15
star
45

remote-key-server

The Remote Key Server is a solution to manage TLS private keys and certificates in a distributed system
Go
15
star
46

Orange-ExpLoRer-Kit-for-LoRa

The LoRa® Explorer Kit is a development board powered by Microchip that allows easy and quick prototyping of IoT objects and services using LoRa® <https://partner.orange.com/why-orange-chose-lora/>technology. This very compact starter kit consists of an Arduino-based platform supporting LoRa® module, Bluetooth module, PCB antenna, rechargeable coin battery and temperature sensor. This Orange library is provided to allow you to quickly and easily develop and prototype your different projects using the Microchip RN2483 module on the board.
C++
15
star
47

ods-android

Android library of reusable graphical components
Kotlin
14
star
48

android-trail-drawing

Gesture trail drawing library for Android and Java
Java
14
star
49

ods-flutter

Flutter library of reusable graphical components for Android and iOS
Dart
14
star
50

opnfv

OpenSteak install and config
Python
13
star
51

rtpy

Python wrapper for the JFrog Artifactory REST API
Python
13
star
52

wro4j-taglib

This taglib makes it easier to work with wro4j and JSP
Java
13
star
53

Cloudnet-TOSCA-toolbox

Set of tools for validating, visualizing and analyzing TOSCA resource descriptions
Python
13
star
54

spring-boot-autoconfigure-proxy

This Spring Boot library provides network proxy auto-configuration.
Java
12
star
55

Quagga-TE

Quagga with Traffic Engineering support in Traffic-Engineering branch
C
12
star
56

python-ngsild-client

ngsildclient is a Python library dedicated to NGSI-LD. It's both a NGSI-LD API client and a toolbox to create and manipulate NGSI-LD entities effortlessly.
Python
12
star
57

elm-advanced-grid

An Elm module to display feature rich grids in web apps.
Elm
12
star
58

ATK

The Accelerator Test Kit is a software designed for testing applications on Android devices.
Java
11
star
59

pn

a libphonenumber command-line wrapper
C++
11
star
60

glimp

Glimp is a Javascript Library for image processing using WebGL
JavaScript
11
star
61

fiware-openlpwa-iotagent

A bridge between the Orange LoRa® network and the OMA NGSIv1 protocol used by the Orion Context Broker as well as by other components of the FIWARE ecosystem
Java
10
star
62

orange-trust-badge-ios

With Orange trust badge, or "Badge de confiance", give transparent information and user control on personal data and help users to identify if your application has any sensitive features.
Swift
10
star
63

Table-Annotation

TableAnnotation is a semantic annotation tool for tables leveraging three steps: table preprocessing, entity lookup and annotation (Cell-Entity Annotation, Column-Type Annotation, Column-Pair Annotation)
Python
9
star
64

react-keyboard-navigation

A React component to manage the navigation declaratively in KaiOS smart feature phone applications.
JavaScript
9
star
65

OpenCraftML

Original java implementation of CraftML, an efficient Clustering-based Random Forest for Extreme multi-label Learning
Java
9
star
66

GNBP

A fully trainable BP decoder, enabling the discovery of new parity check matrix through automatic learning
Jupyter Notebook
9
star
67

dynagraph

The DynaGraph framework: a system combining classical traces dumping tools (i.e. the tshark tool and Firefox's Network Monitor component) and a ReactJS web app for live 3D graph rendering of streamed graph data derived from traces
JavaScript
9
star
68

vespa-core

Vespa is a IaaS cloud security framework. It is based on security automation.
Python
8
star
69

sparql-to-text

The repository contains various homogenized corpora to perform the verbalization of SPARQL queries, i.e. their conversion to a natural language question.
8
star
70

ai-power-measures-sharing

This project defines a json ontology standard describing a power consumption measure in a given software/hardware context, noticeably in machine learning tasks. It also provides the tooling for conversion to tabular datasets.
Python
8
star
71

olisia-dstc11

Training and evaluation of the OLISIA cascade system for Dialogue State Tracking (DST) on the MultiWoz dataset which ranked first in the "Speech Aware Dialog Systems Technology Challenge" track of the eleventh edition of the Dialogue Systems Technology Challenge
Python
8
star
72

lpwa-iot-kit

This project aims to develop resources for the users of Orange Lora(R) Kit and to help developers of such resources organize their efforts (within Orange)
JavaScript
8
star
73

orange-trust-badge-android

With Orange trust badge, or "Badge de confiance", give transparent information and user control on personal data and help users to identify if your application has any sensitive features.
Kotlin
8
star
74

WikiFactDiff

WikiFactDiff is a factual atomic knowledge update dataset for LLMs. It describes the evolution of factual knowledge between two dates.
Python
7
star
75

SoftwareLifecycleEnvImpact

Publication d'un outil de modélisation environnemental de cycle de vie du logiciel, associé à la publication d'un article de recherche
Python
7
star
76

linkspotter

Correlation analysis and visualization
R
7
star
77

analogical-pruning

Relevant Entity Selection for KG Bootstrapping via Analogical Pruning
Python
7
star
78

OrangeCloudAndroidSdk

Android SDK to ease access to public Orange Cloud Web API (www.orangepartner.com)
Java
7
star
79

signs-at-work-social-network-dictionnary

Signs@Work, dictionary of Sign Language
Java
7
star
80

spring-security-formlogin-restbasic

Spring security example with form login and secured REST api with http basic auth
Java
7
star
81

synthetic-tm-generator

Generation of synthetic traffic matrices matching a given network topology
Python
7
star
82

graphameleon

A Web extension that captures Web navigation traces and transforms them into a RDF graph for further exploration
JavaScript
7
star
83

minikey

Minikey provides a command line interface to send and receive keyboard events on KaiOS devices
C
7
star
84

radar-station

Radar Station: Using Knowledge Graph Embeddings for Semantic Table Interpretation (row, column, and relationships between columns annotations) and Entity Disambiguation
Python
7
star
85

orangemark

Orange Browser Graphics Performance Test Suite
JavaScript
6
star
86

fiware-ngsi2-api

Fiware NGSI v2 API
Java
6
star
87

gettext.js

a cross-browser library for internationalizing your applications
JavaScript
6
star
88

a11ygato-platform

a11ygato is a suite of tools to help audit web site accessibility. A score (KPI) is computed per audit. This project is a fork of pa11y
JavaScript
6
star
89

ods-mkdocs-theme

Orange Design System MkDocs Theme provides a MkDocs theme for Orange
CSS
6
star
90

ocara

Android application to conduct accessibility diagnosis of buildings
Java
6
star
91

OCast-iOS

The Orange OCast SDK is an iOS implementation of OCast protocol (http://www.ocast.org/OCast-Protocol.pdf)
Swift
6
star
92

BaahBox-Arduino

Training box ("BaahBox" model) to plug to sensors or joystick, connected in BLE to mobile apps, catching muscles or stick interruptions and sending events to mobile apps. Heart of the Baah Box project providing game for children and people needing to train their injuried limbs.
C++
6
star
93

fossology-tools

Tools for integration of Fossology into GitLab-CI
6
star
94

OCast-JVM

The Orange OCast SDK provides all required API to implement API to implement cast enabled applications and devices.
Kotlin
6
star
95

igd2-for-linux

This is The Linux UPnP Internet Gateway Device 2. It is modified from the original Linux UPnP Internet Gateway Device [http://linux-igd.sourceforge.net/] according to UPnP InternetGatewayDevice:2 specifications. It has been imported from https://gitorious.org/igd2-for-linux.
C
6
star
96

ouds-android

Android library of reusable graphical components for Orange Unified Design System
Kotlin
6
star
97

marine-detect

Object detection models for identifying species in marine environments.
Python
6
star
98

PowerDNS-Operator

Kubernetes Operator to manage PowerDNS
Go
6
star
99

OSGi-EnOcean-base-driver

OSGi EnOcean base driver
5
star
100

OCast-JS

The Orange OCast SDK provides all required API methods to implement cast applications for the Orange stick.
TypeScript
5
star