update documentation and test

This commit is contained in:
niamtokik
2019-05-08 14:59:19 +00:00
parent e6b7c20829
commit 8f91b9a766
4 changed files with 74 additions and 13 deletions

View File

@@ -1,7 +1,23 @@
# Rfc5849
**TODO: Add description**
## Introduction
This application was inspired by OAuther and oauth2 libraries from
Elixir/Erlang.
## Requirement
* Full oauth/1 implementation (https://tools.ietf.org/html/rfc5849)
* Abstract the client/server exchange method
* Create a damn simple library
* Offer an infrastructure to manage creds
* Connection retention (based on other current http client in
elixir/erlang)
## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
@@ -15,7 +31,48 @@ def deps do
end
```
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/rfc5849](https://hexdocs.pm/rfc5849).
## Usage
```
Application.start(Rfc5849)
{:ok, ref} = Rfc5849.new()
```
## Structure
Rfc5849 is an OTP application and must be started. This application
will spawn many processes to manage oauth/1 authentication with remote
server.
```
_____ ____________ ________ _____
(_____) | | | | ( )
| ref |----| supervisor |----| client |-------->( oauth )
(_____) |____________| |________| (_____)
| ________ |
| | | |
+------| server |<-----------+
| |________|
| __________
| (__________)
+------| |
| exchange |
(__________)
```
Each user must have an isolated pool of client/server to ensure that
the confidential information not leak.
```elixir
{:ok, ref} = Rfc5849.new()
```
`ref` variable will be used to exchange information with internal
service and track connection.
## Resources
* https://tools.ietf.org/html/rfc5849
* https://github.com/lexmag/oauther/
* https://github.com/scrogson/oauth2

View File

@@ -1,11 +1,14 @@
defmodule Rfc5849 do
@moduledoc """
Documentation for Rfc5849.
Rfc5849 implement oauth/1 as GenServer OTP behaviour.
fixed value
"""
defstruct [
realm: nil,
consumer_key: nil,
consumer_secret: nil, # must be protected
token: nil,
@@ -15,13 +18,7 @@ defmodule Rfc5849 do
signature: nil,
signature_method: :hmac_sha1,
timestamp: nil,
nonce: nil,
client: %{
method: nil,
headers: nil,
params: nil
}
request: {}
nonce: nil
]
use GenServer

View File

@@ -142,4 +142,9 @@ defmodule Rfc5849.Lib do
path = struct.path
query = struct.query
end
@spec authorization_header(Rfc5849.t()) :: string()
def authorization_header (struct) do
:ok
end
end

View File

@@ -1,5 +1,7 @@
defmodule Rfc5849.LibTest do
use ExUnit.Case
test "URI" do
:ok
end