SNEK - Social Network for Engineers and Knowledged
The SNEK project is an attempt to create a transparent, open-source non-profit platform that allows engineers to categorize and compare. It should enable engineers from adjacent fields to visualize each other's skills through visualization and project identification.
Intel serves as the :green_heart: of SNEK. Intel is the central data processing system for SNEK, providing interfaces to connect our other systems.
Report bug
·
Request feature
·
Documentation
Table of contents
- Installation
- Features
- Usage
- Contributing
- Bugs and feature requests
- Versioning
- Creators
- Thanks
- Copyright and license
Installation
The system can be installed using the npm install
command:
$ npm install snek-intel
Features
- GitLab Querying
- GitHub Querying
- Statistics Generation
- Interface with various GraphQL APIs
- OAuth2-Authentication
- Session Management
Usage
Source Object
/* GitHub Source Object */; /* GitLab Source Object */;
Append Source Object to Database
await intel.appendsource;
Append List of Source Object to Database
await intel.appendList;
Get Reduced Data from Database
;
Reset Database
This will erase all data in the database.
intel.resetReducer;
Sessions
Session are completely handled by the Intel.
/* * Starts the session for an anonymous user or maintains the session if * a user is logged in. */await intel.snekclient.session.begin; /* * Overrides an active session with a new session using the credential * pair. */await intel.snekclient.session.begin; /* Ends the session */await intel.snekclient.session.end;
Tasks
All tasks are session aware! Every task has the capability of token handling. Modifying a token is not suggested.
/** Authorization Tasks *//* Login an anonymous user on the snek-engine */; /* Login a real user on the snek-engine */; /* Refresh the user tokens on the snek-engine */; /* Revoke the user tokens on the snek-engine */; /** General Tasks *//* Get all profile pages from snek-engine */; /* Get all GitLab servers from the snek-engine */; /** User Tasks *//* Get all GitLab servers from the snek-engine */; /* Get the profile page data from the snek-engine */; /* Get the registration data from snek-engine */; /* Get the whoami data from snek-engine */;
OAuth2
Config File
The client ID, the client secret and the redirect URL are provided by an OAuth organization. To change this file, the repository has to be cloned in order to create a new config file manually.
Currently, a solution to adapt the config file more easily is under development.
Implementation
Redirect page
Put this script inside your redirect page to obtain the access token from the OAuth2 request.
/* * The redirect script: * Get name of window which was set by the parent to be the unique * request key */const requestKey = windowname; // Update corresponding entry with the redirected url which should// either contain the access token or the reason for failure in the query// parameter / hashlocalStorage;window;
Requesting access token
/* Import GithubProvider and the RSA */; /* Gets the username and accessToken */const openGitHubOAuth = { return await RSA}; /* Example on how to call the GitHub OAuth function */const data = ; console
Contributing
Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.
All code should conform to the Code Guide, maintained by SNEK.
Bugs and feature requests
Do you have a bug or a feature request? Please first search for existing and closed issues. If your problem or idea has not been addressed yet, please open a new issue.
Versioning
For reasons of transparency concering our release cycle and in striving to maintain backward compatibility, this repository is maintained under the Semantic Versioning guidelines. Some minor screw ups aside, we try to adhere to those rules whenever possible.
Creators
Nico Schett | David Pinterics | Florian Kleber |
Thanks
We do not have any external contributors yet, but if you want your name to be here, feel free to contribute to our project.
Copyright and license
SPDX-License-Identifier: (EUPL-1.2) Copyright © 2019-2020 Simon Prast