http_fp 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 850b1b6981a06a01b80d3bd85977c2e5d53c27d1
4
- data.tar.gz: 970d21732d1ac8e56458ec0ab9d7aeddda38b935
2
+ SHA256:
3
+ metadata.gz: f3b73d8ca4247f899573be513abede0492ba73f7cb218af122722b6cf98d26bb
4
+ data.tar.gz: 6fdc1f65704f8c26814ea824707a4f20545b8bada1365ae424095b0af0afbb7e
5
5
  SHA512:
6
- metadata.gz: ec15f9f91bac213932505fa2baef913b2fe709e72e8b423f037754e8f25d7313cadc72d8bab16ab0208c004f922e75195424a84773d3362cb958be5237885720
7
- data.tar.gz: ff47e1c252f0abe9b85cbfe601ff4e1223e8844d55c4838a7556c1afd1669e784ebc72a07749829fe1931b2e2a6b7db78237d4135ae2a30dc67db10e72f27e4a
6
+ metadata.gz: f62b4abfc4d345d0c04031291c04f90165b3cf72c84aee63c66d9fa92413f711ec5bce0374ab114e4b78d9045658f651bfedf533fa0a381777eeb160df394c2b
7
+ data.tar.gz: 47a8d5fc2ff42cfeefded5c8bf36ccfc8b1499bff2b1592cca62d3b6469375880081aa33c46e862a7de0f62437e6e798312fb06e7e648dc495c98f1c7638f803
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.6
data/README.md CHANGED
@@ -25,12 +25,12 @@ Here's an example of a request:
25
25
  :body=>""}
26
26
  ```
27
27
 
28
- To build that request you can use builder functions and the function composition operator ([`>>~`](https://github.com/martinos/http_fp/blob/master/lib/http_fp/operators.rb#L4)). Every builder function adds values to the response object. Example:
28
+ To build that request you can use builder functions and the function composition operator ([`>>`](https://docs.ruby-lang.org/en/2.6.0/Proc.html#method-i-3E-3E)). Every builder function adds values to the response object. Example:
29
29
 
30
30
  ```ruby
31
- query = verb.("get") >>~
32
- with_path.("/users/martinos/repos") >>~
33
- with_host.("https://api.github.com") >>~
31
+ query = verb.("get") >>
32
+ with_path.("/users/martinos/repos") >>
33
+ with_host.("https://api.github.com") >>
34
34
  add_headers.(json_headers)
35
35
  ```
36
36
  The `query` variable is a builder function that is created by combining multiple builder functions together.
@@ -51,7 +51,6 @@ pp empty_req
51
51
  :body=>""}
52
52
  ```
53
53
 
54
- <<<<<<< HEAD
55
54
  We apply the `empty_req` to the query that we've built.
56
55
  ```ruby
57
56
  pp query.(empty_req)
@@ -86,16 +85,70 @@ HttpFp::NetHttp.server.(query.(empty_req))
86
85
 
87
86
  ```
88
87
 
89
- You can also use the pipe operator ([`>>+`](https://github.com/martinos/http_fp/blob/master/lib/http_fp/operators.rb#L8)) and the run function. The `run_` function takes a function as parameter and applies the `empty_req` to it.
90
-
91
- Here is it's definition:
92
88
  ```ruby
93
- run_ = -> fn { fn.(empty_req) }
89
+ (query >> HttpFp::NetHttp.server).(empty_req)
94
90
  ```
95
91
 
92
+ Since a "server" is just a function that takes an HTTP request and returns an HTTP response, instead of using Net::Http interface you can use the `HttpFp::Rack.server` function that takes a rack app as parameter.
93
+
96
94
  ```run
97
- query >>~ HttpFp::NetHttp.server >>+ run_
95
+ query >> HttpFp::Rack.server.(Rails.application)
96
+ ```
97
+
98
+ ## Middlewares
99
+
100
+ Since we are using composable functions to build our request and to query the web server, it's very easy to create our own "middlewares".
101
+
102
+ If we want to all the request and the response we can create a simple function such as:
103
+
104
+ ```
105
+ debug_fn = -> print, fn, input {
106
+ print.("Input: \n")
107
+ print.(input.to_s)
108
+ output = fn.(input)
109
+ print.("Output: \n")
110
+ print.(output)
111
+ output
112
+ }.curry
113
+
114
+ ```
115
+
116
+ the `print` param is a function that prints an object.
117
+
118
+ ```
119
+ printer = -> a { print a; a }
120
+ query >> debug_fn.(printer).(HttpFp::NetHttp.server)
121
+ ```
122
+
123
+ of course you can change the printer to print to the log file.
124
+
98
125
  ```
126
+ printer = -> a { logger.debug(a) ; a }
127
+ ```
128
+
129
+ ### Curl, Httpie output
130
+
131
+ If you want to generate documentation with curl commands you can use a simple function such as:
132
+
133
+ ```
134
+ curl = -> a { puts HttpFp::Curl.req.(a) ; a }.curry
135
+ ```
136
+
137
+ Then you can use it with the query and the server function.
138
+
139
+ ```run
140
+ query >> curl >> HttpFp::NetHttp.server
141
+ ```
142
+
143
+ This will output:
144
+
145
+ ```
146
+ curl -X 'GET' 'https://api.github.com/users/martinos/repos?' \
147
+ -H 'accept: application/json' \
148
+ -H 'Content-Type: application/json' \
149
+ -H 'user-agent: ruby net/http'
150
+ ```
151
+
99
152
 
100
153
 
101
154
  ## Contributing
data/http_fp.gemspec CHANGED
@@ -22,6 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "minitest"
23
23
  spec.add_dependency "rake", "~> 10.0"
24
24
  spec.add_dependency "rack"
25
- spec.add_dependency "activesupport"
26
- spec.add_dependency "superators19"
25
+ spec.add_dependency "fn_reader"
27
26
  end
data/lib/http_fp.rb CHANGED
@@ -1,42 +1,43 @@
1
- require "active_support"
1
+ require "fn_reader"
2
+ require "uri"
3
+ require "base64"
2
4
  require "http_fp/version"
3
- require 'http_fp/utils'
4
- require 'uri'
5
- require 'base64'
5
+ require "http_fp/utils"
6
6
 
7
7
  module HttpFp
8
8
  include Utils
9
9
 
10
- mattr_accessor :verb, :with_host, :with_path, :with_query, :withUri,
11
- :with_json, :with_headers, :add_headers, :fetch, :to_curl,
12
- :out_curl, :json_resp, :to_uri, :empty_req, :json_headers,
13
- :with_basic_auth, :run_
10
+ fn_reader :verb, :with_host, :with_path, :with_query, :withUri,
11
+ :with_json, :with_headers, :add_headers, :fetch, :to_curl,
12
+ :out_curl, :json_resp, :to_uri, :empty_req, :json_headers,
13
+ :with_basic_auth, :run_
14
14
 
15
- @@empty_req = {proto: "HTTP/1.1", host: "http://example.com", path: "/", query: {}, header: {}, method: "GET", body: ""}
16
- @@empty_resp = {status: nil, header: {}, body: {}}
15
+ @@empty_req = { proto: "HTTP/1.1", host: "http://example.com", path: "/", query: {}, header: {}, method: "GET", body: "" }
16
+ @@empty_resp = { status: nil, header: {}, body: {} }
17
17
 
18
18
  @@run_ = -> fn { fn.(@@empty_req) } # underscore because run conflicts with run fn in minitest
19
- @@verb = -> verb, req { req.merge({method: verb.to_s.upcase}) }.curry
19
+ @@verb = -> verb, req { req.merge({ method: verb.to_s.upcase }) }.curry
20
20
  @@with_host = -> host, req { req[:host] = host; req }.curry
21
21
  @@with_path = -> path, req { req[:path] = path; req }.curry
22
- @@with_query = -> params, req { req[:query] = params ; req }.curry
22
+ @@with_query = -> params, req { req[:query] = params; req }.curry
23
23
  @@with_json = -> hash, req { req[:body] = hash.to_json; req }.curry
24
- @@with_headers = -> header, req { req[:header] = header ; req }.curry
24
+ @@with_headers = -> header, req { req[:header] = header; req }.curry
25
25
  @@add_headers = -> header, req { req[:header].merge!(header); req }.curry
26
- @@with_basic_auth = -> user_name, pwd, req do
26
+ @@with_basic_auth = -> user_name, pwd, req do
27
27
  encoded = Base64.strict_encode64("#{user_name}:#{pwd}")
28
- req >>+ add_headers.({"Authorization" => "Basic #{encoded}"})
28
+ req.then(&add_headers.({ "Authorization" => "Basic #{encoded}" }))
29
29
  end.curry
30
30
 
31
- @@json_resp = Utils.at.(:body) >>~ Utils.parse_json
32
- @@print = -> a { $stdout.puts a.pretty_inspect ; a }
31
+ @@json_resp = Utils.at.(:body) >> Utils.parse_json
32
+ @@print = -> a { $stdout.puts a.pretty_inspect; a }
33
33
  @@to_uri = -> req {
34
34
  uri = URI(req.fetch(:host))
35
35
  req[:query] && uri.query = URI.encode_www_form(req[:query])
36
36
  uri.path = req[:path]
37
- uri}
38
- @@json_headers =
39
- {"accept" => "application/json",
40
- 'Content-Type' => 'application/json',
41
- "user-agent" => "paw/3.0.11 (macintosh; os x/10.11.6) gcdhttprequest"}
37
+ uri
38
+ }
39
+ @@json_headers =
40
+ { "accept" => "application/json",
41
+ "Content-Type" => "application/json",
42
+ "user-agent" => "paw/3.0.11 (macintosh; os x/10.11.6) gcdhttprequest" }
42
43
  end
data/lib/http_fp/curl.rb CHANGED
@@ -1,10 +1,10 @@
1
- require 'net/http'
2
- require 'http_fp'
1
+ require "net/http"
2
+ require "http_fp"
3
3
 
4
4
  module HttpFp::Curl
5
5
  include HttpFp
6
6
 
7
- mattr_accessor :print_curl, :req
7
+ fn_reader :print_curl, :req
8
8
 
9
9
  @@req = -> req {
10
10
  first_part = %{curl -X '#{req[:method]}' '#{HttpFp::to_uri.(req).to_s}' #{req[:header].map(&@@header_to_curl).join(" ")}}
@@ -15,7 +15,8 @@ module HttpFp::Curl
15
15
  end
16
16
  }
17
17
  @@header_to_curl = -> a {
18
- "\\\n -H '#{a[0]}: #{a[1]}'"}
19
-
20
- @@print_curl = -> req { $stdout.puts(to_curl.(req)) ; req}.curry
18
+ "\\\n -H '#{a[0]}: #{a[1]}'"
19
+ }
20
+
21
+ @@print_curl = -> req { $stdout.puts(to_curl.(req)); req }.curry
21
22
  end
@@ -1,10 +1,10 @@
1
- require 'net/http'
2
- require 'http_fp'
1
+ require "net/http"
2
+ require "http_fp"
3
3
 
4
4
  module HttpFp::Httpie
5
5
  include HttpFp
6
6
 
7
- mattr_accessor :print_curl, :req
7
+ fn_reader :print_curl, :req
8
8
 
9
9
  @@req = -> req {
10
10
  first_part = %{http #{req[:method]} '#{HttpFp::to_uri.(req).to_s}' #{req[:header].map(&@@header_to_httpie).join(" ")}}
@@ -15,5 +15,6 @@ module HttpFp::Httpie
15
15
  end
16
16
  }
17
17
  @@header_to_httpie = -> a {
18
- "\\\n '#{a[0]}: #{a[1]}'"}
18
+ "\\\n '#{a[0]}: #{a[1]}'"
19
+ }
19
20
  end
@@ -1,4 +1,4 @@
1
- require 'superators19'
1
+ require "superators19"
2
2
 
3
3
  class Proc
4
4
  superator ">>~" do |fn|
@@ -11,5 +11,3 @@ class Object
11
11
  fn.(self)
12
12
  end
13
13
  end
14
-
15
-
data/lib/http_fp/rack.rb CHANGED
@@ -1,52 +1,53 @@
1
- require 'http_fp'
2
- require 'active_support'
3
- require 'pp'
1
+ require "http_fp"
2
+ require "pp"
4
3
  #
5
4
  # https://www.diffchecker.com/ihCGIKyG
6
5
 
7
6
  module HttpFp::Rack
8
- mattr_reader :to_env, :server, :rack_resp_to_resp
7
+ fn_reader :to_env, :server, :rack_resp_to_resp
9
8
 
10
- @@server = -> rack { to_env >>~ rack.method(:call) >>~ rack_resp_to_resp }
9
+ @@server = -> rack { to_env >> rack.method(:call) >> rack_resp_to_resp }
11
10
  @@to_env = -> request {
12
11
  session ||= {}
13
12
  session_options ||= {}
14
13
 
15
- uri = request >>+ HttpFp.to_uri
14
+ uri = request.then(&HttpFp.to_uri)
16
15
  header = (request[:header] || {}).dup
17
- body = request[:body] || ''
16
+ body = request[:body] || ""
18
17
 
19
- content_type_key, val = header.detect { |key, val| puts key; key.downcase == "content-type"}
18
+ content_type_key, val = header.detect { |key, val| puts key; key.downcase == "content-type" }
20
19
  env = {
21
20
  # CGI variables specified by Rack
22
- 'REQUEST_METHOD' => request[:method].to_s.upcase,
23
- 'CONTENT_TYPE' => header.delete(content_type_key),
24
- 'CONTENT_LENGTH' => body.bytesize,
25
- 'PATH_INFO' => uri.path,
26
- 'QUERY_STRING' => uri.query || '',
27
- 'SERVER_NAME' => uri.host,
28
- 'SERVER_PORT' => uri.port,
29
- 'SCRIPT_NAME' => ""
21
+ "REQUEST_METHOD" => request[:method].to_s.upcase,
22
+ "CONTENT_TYPE" => header.delete(content_type_key),
23
+ "CONTENT_LENGTH" => body.bytesize,
24
+ "PATH_INFO" => uri.path,
25
+ "QUERY_STRING" => uri.query || "",
26
+ "SERVER_NAME" => uri.host,
27
+ "SERVER_PORT" => uri.port,
28
+ "SCRIPT_NAME" => "",
30
29
  }
31
30
 
32
- env['HTTP_AUTHORIZATION'] = 'Basic ' + [uri.userinfo].pack('m').delete("\r\n") if uri.userinfo
31
+ env["HTTP_AUTHORIZATION"] = "Basic " + [uri.userinfo].pack("m").delete("\r\n") if uri.userinfo
33
32
 
34
33
  # Rack-specific variables
35
- env['rack.input'] = StringIO.new(body)
36
- env['rack.errors'] = $stderr
37
- env['rack.version'] = ::Rack::VERSION
38
- env['rack.url_scheme'] = uri.scheme
39
- env['rack.run_once'] = true
40
- env['rack.session'] = session
41
- env['rack.session.options'] = session_options
42
-
43
- header.each { |k, v| env["HTTP_#{k.tr('-','_').upcase}"] = v }
34
+ env["rack.input"] = StringIO.new(body)
35
+ env["rack.errors"] = $stderr
36
+ env["rack.version"] = ::Rack::VERSION
37
+ env["rack.url_scheme"] = uri.scheme
38
+ env["rack.run_once"] = true
39
+ env["rack.session"] = session
40
+ env["rack.session.options"] = session_options
41
+
42
+ header.each { |k, v| env["HTTP_#{k.tr("-", "_").upcase}"] = v }
44
43
  env
45
44
  }
46
45
 
47
- @@rack_resp_to_resp = -> resp { {status: resp[0],
48
- header: resp[1],
49
- body: @@body_from_rack_response.(resp[2])} }
46
+ @@rack_resp_to_resp = -> resp {
47
+ { status: resp[0],
48
+ header: resp[1],
49
+ body: @@body_from_rack_response.(resp[2]) }
50
+ }
50
51
 
51
52
  @@body_from_rack_response = -> response {
52
53
  body = ""
data/lib/http_fp/utils.rb CHANGED
@@ -1,20 +1,18 @@
1
- require 'active_support'
2
- require 'json'
3
- require 'pp'
4
- require 'http_fp/operators'
5
- require 'yaml'
1
+ require "json"
2
+ require "pp"
3
+ require "yaml"
6
4
 
7
5
  module Utils
8
- mattr_accessor :parse_json, :debug, :at, :retry_fn,
9
- :record, :player, :count_by, :cache, :red, :time,
6
+ fn_reader :parse_json, :debug, :at, :retry_fn,
7
+ :record, :player, :count_by, :cache, :red, :time,
10
8
  :expired, :apply, :and_then, :default, :map, :get, :try
11
9
 
12
10
  @@parse_json = JSON.method(:parse)
13
- @@debug = -> print, a, b { print.(a) ; print.(b.to_s); b }.curry
11
+ @@debug = -> print, a, b { print.(a); print.(b.to_s); b }.curry
14
12
  @@at = -> key, hash { hash[key] }.curry
15
13
  @@red = -> a { "\033[31m#{a}\033[0m" }
16
14
  # ( a -> b ) -> a -> b
17
- @@try = -> f, a { a.nil? ? nil : f.(a) }.curry
15
+ @@try = -> f, a { a.nil? ? nil : f.(a) }.curry
18
16
  @@retry_fn = -> fn, a {
19
17
  begin
20
18
  fn.(a)
@@ -30,33 +28,34 @@ module Utils
30
28
  }.curry
31
29
  @@play = -> filename, _params { YAML.load(File.read(filename)) }.curry
32
30
  # (Float -> String -> Bool) -> String -> (a -> b) -> b
33
- @@cache = -> expired, filename, fn, param {
34
- if expired.(filename)
31
+ @@cache = -> expired, filename, fn, param {
32
+ if expired.(filename)
35
33
  @@record.(filename).(fn.(param))
36
34
  else
37
35
  puts "reading from cache"
38
36
  @@play.(filename).(nil)
39
37
  end
40
38
  }.curry
41
- @@expired = -> sec, a { ! File.exist?(a) || (Time.now - File.mtime(a)) > sec }.curry
42
- @@count_by = -> fn, a {
43
- a.inject({}) do |res, a|
39
+ @@expired = -> sec, a { !File.exist?(a) || (Time.now - File.mtime(a)) > sec }.curry
40
+ @@count_by = -> fn, a {
41
+ a.inject({}) do |res, a|
44
42
  by = fn.(a)
45
43
  res[by] ||= 0
46
44
  res[by] += 1
47
45
  res
48
46
  end
49
47
  }.curry
50
-
48
+
51
49
  # (String -> String) -> String -> ( a -> b ) -> a -> b
52
50
  @@time = -> print, msg, fn, a {
53
- start_time = Time.now
51
+ start_time = Time.now
54
52
  res = fn.(a)
55
53
  print.("Time duration for #{msg} = #{Time.now - start_time}")
56
- res}.curry
54
+ res
55
+ }.curry
57
56
  @@apply = -> method, a { a.send(method) }.curry
58
57
  @@default = -> default, a { a.nil? ? default : a }.curry
59
- @@and_then = -> f , a { a.nil? ? nil : f.(a) }.curry
58
+ @@and_then = -> f, a { a.nil? ? nil : f.(a) }.curry
60
59
  @@map = -> f, enum { enum.map(&f) }.curry
61
60
  @@at = -> key, hash { hash; hash[key] }.curry
62
61
  @@get = -> method, obj { obj.send(method) }.curry
@@ -1,3 +1,3 @@
1
1
  module HttpFp
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,18 +1,18 @@
1
- require 'minitest_helper'
2
- require 'http_fp'
3
- require 'http_fp/rack'
4
- require 'http_fp/httpie'
1
+ require "minitest_helper"
2
+ require "http_fp"
3
+ require "http_fp/rack"
4
+ require "http_fp/httpie"
5
5
 
6
6
  class HttpFp::CurlTest < Minitest::Test
7
7
  include HttpFp
8
8
 
9
- def setup
10
- @curl = verb.("GET") >>~
11
- with_path.("/coucou") >>~
12
- with_headers.(json_headers) >>~
13
- with_host.("https://api.github.com") >>~
14
- with_json.({user: "martin"}) >>~
15
- HttpFp::Httpie.req >>+ run_
9
+ def setup
10
+ @curl = (verb.("GET") >>
11
+ with_path.("/coucou") >>
12
+ with_headers.(json_headers) >>
13
+ with_host.("https://api.github.com") >>
14
+ with_json.({ user: "martin" }) >>
15
+ HttpFp::Httpie.req).(empty_req)
16
16
  end
17
17
 
18
18
  def test_should_return_a_curl_command
@@ -1,6 +1,6 @@
1
- require 'minitest_helper'
2
- require 'rack'
3
- require 'http_fp/rack'
1
+ require "minitest_helper"
2
+ require "rack"
3
+ require "http_fp/rack"
4
4
 
5
5
  # https://github.com/macournoyer/thin/blob/a7d1174f47a4491a15b505407c0501cdc8d8d12c/spec/request/parser_spec.rb
6
6
  # rack sample
@@ -9,36 +9,27 @@ class HttpFp::RackTest < MiniTest::Test
9
9
  include HttpFp
10
10
 
11
11
  def setup
12
- @req = HttpFp.empty_req >>+ with_host.("http://localhost:3000")
12
+ @req = HttpFp.empty_req.then(&with_host.("http://localhost:3000"))
13
13
  end
14
14
 
15
15
  def test_upcase_headers
16
- req = @req >>+ add_headers.("X-invisible" => "tata")
16
+ req = @req.then(&add_headers.("X-invisible" => "tata"))
17
17
  env = Rack.to_env.(req)
18
- assert_equal "tata", env["HTTP_X_INVISIBLE"]
18
+ assert_equal "tata", env["HTTP_X_INVISIBLE"]
19
19
  end
20
20
 
21
21
  def test_basic_headers
22
- env = empty_req >>+ verb.("get") >>+
23
- with_host.("https://localhost:3000") >>+
24
- with_query.({"name" => "martin"}) >>+
25
- with_path.("/users/1") >>+
26
- Rack.to_env
22
+ env = empty_req.then(&(verb.("get") >> with_host.("https://localhost:3000") >> with_query.({ "name" => "martin" }) >> with_path.("/users/1") >> Rack.to_env))
27
23
  # assert_equal "HTTP/1.1", env["SERVER_PROTOCOL"]
28
24
  # assert_equal "HTTP/1.1", env["HTTP_VERSION"]
29
25
  # assert_equal "/users/1", env["REQUEST_PATH"]
30
26
  assert_equal "GET", env["REQUEST_METHOD"]
31
- assert_equal 'https', env["rack.url_scheme"]
32
- assert_equal '/users/1', env["PATH_INFO"]
27
+ assert_equal "https", env["rack.url_scheme"]
28
+ assert_equal "/users/1", env["PATH_INFO"]
33
29
  end
34
30
 
35
31
  def test_host
36
- env = empty_req >>+
37
- verb.("get") >>+
38
- with_host.("https://localhost:3000") >>+
39
- with_query.({"name" => "martin"}) >>+
40
- with_path.("/users/1") >>+
41
- Rack.to_env
32
+ env = empty_req.then(&(verb.("get") >> with_host.("https://localhost:3000") >> with_query.({ "name" => "martin" }) >> with_path.("/users/1") >> Rack.to_env))
42
33
  # assert_equal "localhost:3000", env["HTTP_HOST"]
43
34
  assert_equal "localhost", env["SERVER_NAME"]
44
35
  assert_equal 3000, env["SERVER_PORT"]
@@ -47,15 +38,8 @@ class HttpFp::RackTest < MiniTest::Test
47
38
  end
48
39
 
49
40
  def test_dont_prepend_HTTP_to_content_type_and_content_length
50
- env = empty_req >>+
51
- verb.("get") >>+
52
- with_host.("https://localhost:3000") >>+
53
- with_query.({"name" => "martin"}) >>+
54
- with_path.("/users/1") >>+
55
- add_headers.({"content-type" => "application/json"}) >>+
56
- Rack.to_env
41
+ env = empty_req.then(&(verb.("get") >> with_host.("https://localhost:3000") >> with_query.({ "name" => "martin" }) >> with_path.("/users/1") >> add_headers.({ "content-type" => "application/json" }) >> Rack.to_env))
57
42
  assert_equal "application/json", env["CONTENT_TYPE"]
58
43
  assert_equal 0, env["CONTENT_LENGTH"]
59
44
  end
60
45
  end
61
-
data/test/http_fp_test.rb CHANGED
@@ -1,14 +1,13 @@
1
- require 'minitest_helper'
2
- require 'http_fp'
1
+ require "minitest_helper"
2
+ require "http_fp"
3
3
 
4
4
  class HttpFp::HttpFpTest < Minitest::Test
5
5
  include HttpFp
6
6
 
7
7
  def test_basic_auth
8
- req = empty_req >>+ with_basic_auth.("martin").("secret")
8
+ req = with_basic_auth.("martin").("secret").(empty_req)
9
9
  authorization = req[:header]["Authorization"]
10
10
  refute_nil authorization
11
11
  assert_equal "Basic bWFydGluOnNlY3JldA==", authorization
12
12
  end
13
13
  end
14
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_fp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Chabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-09 00:00:00.000000000 Z
11
+ date: 2019-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,21 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: activesupport
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: superators19
70
+ name: fn_reader
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
@@ -144,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
130
  - !ruby/object:Gem::Version
145
131
  version: '0'
146
132
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.6.10
133
+ rubygems_version: 3.0.1
149
134
  signing_key:
150
135
  specification_version: 4
151
136
  summary: Http client that levrage the use of fp principle