Module: HttpFn::Utils

Included in:
HttpFn
Defined in:
lib/http_fn/utils.rb

Constant Summary collapse

@@parse_json =
JSON.method(:parse)
@@debug =
->print, a, b { print.(a); print.(b.to_s); b }.curry
@@at =
->key, hash { hash; hash[key] }.curry
@@red =
->a { "\033[31m#{a}\033[0m" }
@@try =

( a -> b ) -> a -> b

->f, a { a.nil? ? nil : f.(a) }.curry
@@retry_fn =
->fn, a {
  begin
    fn.(a)
  rescue
    sleep(1)
    puts "RETRYING"
    @@retry_fn.(fn).(a)
  end
}.curry
@@record =
->filename, to_save {
  File.open(filename, "w+") { |a| a << to_save.to_yaml }
  to_save
}.curry
@@play =
->filename, _params { YAML.load(File.read(filename)) }.curry
@@cache =

(Float -> String -> Bool) -> String -> (a -> b) -> b

->expired, filename, fn, param {
  if expired.(filename)
    @@record.(filename).(fn.(param))
  else
    puts "reading from cache"
    @@play.(filename).(nil)
  end
}.curry
@@expired =
->sec, a { !File.exist?(a) || (Time.now - File.mtime(a)) > sec }.curry
@@count_by =
->fn, a {
  a.inject({}) do |res, a|
    by = fn.(a)
    res[by] ||= 0
    res[by] += 1
    res
  end
}.curry
@@time =

(String -> String) -> String -> ( a -> b ) -> a -> b

->print, msg, fn, a {
  start_time = Time.now
  res = fn.(a)
  print.("Time duration for #{msg} =  #{Time.now - start_time}")
  res
}.curry
@@apply =
->method, a { a.send(method) }.curry
@@default =
->default, a { a.nil? ? default : a }.curry
@@and_then =
->f, a { a.nil? ? nil : f.(a) }.curry
@@map =
->f, enum { enum.map(&f) }.curry
@@get =
->method, obj { obj.send(method) }.curry