Giter VIP home page Giter VIP logo

libneo4j-client's Introduction

libneo4j-client

About

libneo4j-client is a client library and command line shell for Neo4j. The client library is written in C, and is intended as a foundation on which basic tools and drivers for various languages may be built. libneo4j-client takes care of all the detail of establishing a session with a Neo4j server, sending statements for evaluation, and retrieving results.

neo4j-client, the command line shell, is included with the libneo4j-client distribution and uses libneo4j-client for all interaction with Neo4j server.

For more details, see the project page and the FAQ.

Requirements

libneo4j-client is known to work on GNU/Linux, Mac OS X and FreeBSD. It requires neo4j 3.0.0 or later.

Getting Started

If you're using Mac OS X, libneo4j-client can be installed using homebrew:

$ brew install cleishm/neo4j/neo4j-client

If you're using Ubuntu, neo4j-client can be install using APT:

$ sudo add-apt-repository ppa:cleishm/neo4j
$ sudo apt-get update
$ sudo apt-get install neo4j-client libneo4j-client-dev

There are also packages available for other platforms, including Debian, Fedora, CentOS and openSUSE.

Otherwise, please see Building below.

neo4j-client Usage

neo4j-client is a command shell for Neo4j. It supports secure connections to Neo4j server, sending of statements (including multiline statements), persistent command history, and rendering of results to tables or CSV.

Basic usage:

$ neo4j-client -v neo4j://localhost:7687
The authenticity of host 'localhost:7687' could not be established.
TLS certificate fingerprint is ded0fd2e893cd0b579f47f7798e10cb68dfa2fd3bc9b3c973157da81bab451d74f9452ba99a9c5f66dadb8a360959e5ebd8abb2d7c81230841e60531a96d268.
Would you like to trust this host (NO/yes/once)? yes
Username: neo4j
Password: *****
neo4j> :help
:quit                  Exit the shell
:connect '<url>'       Connect to the specified URL
:disconnect            Disconnect the client from the server
:help                  Show usage information
:output (table|csv)    Set the output format
:width <n>             Set the number of columns in the table output
neo4j>
neo4j>
neo4j> MATCH (n:Person) RETURN n LIMIT 3;
+----------------------------------------------------------------------------+
| n                                                                          |
+----------------------------------------------------------------------------+
| (:Person{born:1964,name:"Keanu Reeves"})                                   |
| (:Person{born:1967,name:"Carrie-Anne Moss"})                               |
| (:Person{born:1961,name:"Laurence Fishburne"})                             |
+----------------------------------------------------------------------------+
neo4j> :exit
$

libneo4j-client Usage

libneo4j-client provides a single C header file, neo4j-client.h, for inclusion in source code using the libneo4j-client API. The API is described in the API Documentation.

libneo4j-client can be included in your project by linking the library at compile time, typically using the linking flags -lneo4j-client -lssl -lcrypto -lm. Alternatively, libneo4j-client ships with a pkg-config description file, enabling you to obtain the required flags using pkg-config --libs libneo4j-client.

API Documentation

API documentation for the latest release is available at https://cleishm.github.io/libneo4j-client/doc/latest/neo4j-client_8h.html.

Documentation can be built using make doc, which will use doxygen to generate documentation and output it into the doc/ directory of the libneo4j-client source tree. See Building below.

Example

#include <neo4j-client.h>
#include <errno.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    neo4j_client_init();

    /* use NEO4J_INSECURE when connecting to disable TLS */
    neo4j_connection_t *connection =
            neo4j_connect("neo4j://user:pass@localhost:7687", NULL, NEO4J_INSECURE);
    if (connection == NULL)
    {
        neo4j_perror(stderr, errno, "Connection failed");
        return EXIT_FAILURE;
    }

    neo4j_session_t *session = neo4j_new_session(connection);
    if (session == NULL)
    {
        neo4j_perror(stderr, errno, "Failed to start session");
        return EXIT_FAILURE;
    }

    neo4j_result_stream_t *results =
            neo4j_run(session, "RETURN 'hello world'", neo4j_null);
    if (results == NULL)
    {
        neo4j_perror(stderr, errno, "Failed to run statement");
        return EXIT_FAILURE;
    }

    neo4j_result_t *result = neo4j_fetch_next(results);
    if (results == NULL)
    {
        neo4j_perror(stderr, errno, "Failed to fetch result");
        return EXIT_FAILURE;
    }

    neo4j_value_t value = neo4j_result_field(result, 0);
    char buf[128];
    printf("%s\n", neo4j_tostring(value, buf, sizeof(buf)));

    neo4j_close_results(results);
    neo4j_end_session(session);
    neo4j_close(connection);
    neo4j_client_cleanup();
    return EXIT_SUCCESS;
}

Building

To build software using libneo4j-client, consider installing libneo4j-client using the package management system for your operating system (currently Mac OS X, Debian, Ubuntu, Fedora, CentOS and openSUSE).

If libneo4j-client is not available via your package management system, please download the latest release, unpack and then:

$ ./configure
$ make clean check
$ sudo make install

libneo4j-client requires OpenSSL, although this can be disabled by invoking configure with --without-tls.

neo4j-client also requires some dependencies to build, including libedit and libcypher-parser. If these are not available, the library can be built without neo4j-client, by invoking configure with --disable-tools.

Building from the GitHub repository requires a few extra steps. Firstly, some additional tooling is required, including autoconf, automake and libtool. Assuming these are available, to checkout from GitHub and build:

$ git clone https://github.com/cleishm/libneo4j-client.git
$ cd libneo4j-client
$ ./autogen.sh
$ ./configure
$ make clean check
$ sudo make install

NOTE: Recent versions of Mac OS X ship without the OpenSSL header files, and autoconf doesn't pick this up (yet). If you used the homebrew install method, this will resolve the issue. If you're using Mac OS X, want to build manually instead of using homebrew, and you get a build failure related to missing openssl headers, try the following:

$ brew install openssl
$ ./configure --with-libs=/usr/local/opt/openssl
$ make clean check
$ sudo make install

More detail about this workaround can be found via brew info openssl.

Support

Having trouble with libneo4j-client or neo4j-client? Please raise any issues with usage on StackOverflow. If you've found a bug in the code, please raise an issue on GitHub and include details of how to reproduce the bug.

Contributing

Contributions to libneo4j-client are encouraged and should be made via pull requests made to the GitHub repository. Please include test cases where possible, and use a style and approach consistent with the rest of the library.

It may be worthwhile raising an issue on github for the contribution you intend to make before developing the code, to allow for discussion and feedback on the requirements.

License

libneo4j-client is licensed under the Apache License, Version 2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

libneo4j-client's People

Contributors

cleishm avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.