Created
          July 1, 2016 06:52 
        
      - 
      
- 
        Save ijunaid8989/52d7d7a665e5e93f6fe767eedf2b34b5 to your computer and use it in GitHub Desktop. 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | defmodule EvercamMedia.Validation.Archive do | |
| import String, only: [equivalent?: 2] | |
| def validate_params(params) do | |
| with :ok <- validate(:title, params["title"]), | |
| :ok <- validate(:from_date, params["from_date"]), | |
| :ok <- validate(:to_date, params["to_date"]), | |
| :ok <- validate(:requested_by, params["requested_by"]), | |
| :ok <- validate_boolean(:embed_time, params["embed_time"]), | |
| :ok <- validate_boolean(:public, params["public"]), | |
| do: :ok | |
| end | |
| defp validate(key, value) when value in [nil, ""], do: invalid(key) | |
| defp validate(:from_date = key, value), do: is_number(key, value) | |
| defp validate(:to_date = key, value), do: is_number(key, value) | |
| defp validate(:requested_by = key, value), do: is_number(key, value) | |
| defp validate(_key, _value), do: :ok | |
| defp is_number(key, value) do | |
| case Integer.parse(value) do | |
| {_number, ""} -> :ok | |
| _ -> invalid(key) | |
| end | |
| end | |
| defp validate_boolean(key, boolean) do | |
| case present?(boolean) do | |
| false -> :ok | |
| true -> | |
| if equivalent?("true", boolean) || equivalent?("false", boolean) do | |
| :ok | |
| else | |
| {:invalid, "The parameter '#{key}' must be a boolean."} | |
| end | |
| end | |
| end | |
| defp invalid(key), do: {:invalid, "The parameter '#{key}' isn't valid."} | |
| defp present?(param) when param in [nil, ""], do: false | |
| defp present?(_param), do: true | |
| end | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment