Add some basic code
This commit is contained in:
		
							parent
							
								
									7f7a63f379
								
							
						
					
					
						commit
						caa9a46c1b
					
				
							
								
								
									
										4
									
								
								.formatter.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.formatter.exs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
# Used by "mix format"
 | 
			
		||||
[
 | 
			
		||||
  inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										36
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,12 +1,26 @@
 | 
			
		|||
# ---> Elixir
 | 
			
		||||
/_build
 | 
			
		||||
/cover
 | 
			
		||||
/deps
 | 
			
		||||
/doc
 | 
			
		||||
/.fetch
 | 
			
		||||
erl_crash.dump
 | 
			
		||||
*.ez
 | 
			
		||||
*.beam
 | 
			
		||||
/config/*.secret.exs
 | 
			
		||||
.elixir_ls/
 | 
			
		||||
# The directory Mix will write compiled artifacts to.
 | 
			
		||||
/_build/
 | 
			
		||||
 | 
			
		||||
# If you run "mix test --cover", coverage assets end up here.
 | 
			
		||||
/cover/
 | 
			
		||||
 | 
			
		||||
# The directory Mix downloads your dependencies sources to.
 | 
			
		||||
/deps/
 | 
			
		||||
 | 
			
		||||
# Where third-party dependencies like ExDoc output generated docs.
 | 
			
		||||
/doc/
 | 
			
		||||
 | 
			
		||||
# Ignore .fetch files in case you like to edit your project deps locally.
 | 
			
		||||
/.fetch
 | 
			
		||||
 | 
			
		||||
# If the VM crashes, it generates a dump, let's ignore it too.
 | 
			
		||||
erl_crash.dump
 | 
			
		||||
 | 
			
		||||
# Also ignore archive artifacts (built via "mix archive.build").
 | 
			
		||||
*.ez
 | 
			
		||||
 | 
			
		||||
# Ignore package tarball (built via "mix hex.build").
 | 
			
		||||
elixir_rss-*.tar
 | 
			
		||||
 | 
			
		||||
# Temporary files, for example, from tests.
 | 
			
		||||
/tmp/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,21 @@
 | 
			
		|||
# elixir-rss
 | 
			
		||||
# ElixirRss
 | 
			
		||||
 | 
			
		||||
RSS reader written in Elixir
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
 | 
			
		||||
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
 | 
			
		||||
by adding `elixir_rss` to your list of dependencies in `mix.exs`:
 | 
			
		||||
 | 
			
		||||
```elixir
 | 
			
		||||
def deps do
 | 
			
		||||
  [
 | 
			
		||||
    {:elixir_rss, "~> 0.1.0"}
 | 
			
		||||
  ]
 | 
			
		||||
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/elixir_rss>.
 | 
			
		||||
 | 
			
		||||
RSS reader written in elixir
 | 
			
		||||
							
								
								
									
										18
									
								
								lib/elixir_rss.ex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								lib/elixir_rss.ex
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
defmodule ElixirRss do
 | 
			
		||||
  @moduledoc """
 | 
			
		||||
  Documentation for `ElixirRss`.
 | 
			
		||||
  """
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Hello world.
 | 
			
		||||
 | 
			
		||||
  ## Examples
 | 
			
		||||
 | 
			
		||||
      iex> ElixirRss.hello()
 | 
			
		||||
      :world
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def hello do
 | 
			
		||||
    :world
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										14
									
								
								lib/fetch_rss.ex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								lib/fetch_rss.ex
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
defmodule ElixirRss.Fetch do
 | 
			
		||||
  def fetch(url) do
 | 
			
		||||
    url
 | 
			
		||||
    |> HTTPoison.get()
 | 
			
		||||
    |> handle_response()
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp handle_response({:ok, %{status_code: 200, body: body}}) do
 | 
			
		||||
    {:ok, body}
 | 
			
		||||
  end
 | 
			
		||||
  defp handle_response({_, %{status_code: _, body: body}}) do
 | 
			
		||||
    {:error, body}
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										27
									
								
								mix.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								mix.exs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
defmodule ElixirRss.MixProject do
 | 
			
		||||
  use Mix.Project
 | 
			
		||||
 | 
			
		||||
  def project do
 | 
			
		||||
    [
 | 
			
		||||
      app: :elixir_rss,
 | 
			
		||||
      version: "0.1.0",
 | 
			
		||||
      elixir: "~> 1.17",
 | 
			
		||||
      start_permanent: Mix.env() == :prod,
 | 
			
		||||
      deps: deps()
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Run "mix help compile.app" to learn about applications.
 | 
			
		||||
  def application do
 | 
			
		||||
    [
 | 
			
		||||
      extra_applications: [:logger]
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Run "mix help deps" to learn about dependencies.
 | 
			
		||||
  defp deps do
 | 
			
		||||
    [
 | 
			
		||||
      {:httpoison, "~> 2.2.0"}
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										11
									
								
								mix.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								mix.lock
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
%{
 | 
			
		||||
  "certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"},
 | 
			
		||||
  "hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"},
 | 
			
		||||
  "httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"},
 | 
			
		||||
  "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
 | 
			
		||||
  "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
 | 
			
		||||
  "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"},
 | 
			
		||||
  "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
 | 
			
		||||
  "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},
 | 
			
		||||
  "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								test/elixir_rss_test.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/elixir_rss_test.exs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
defmodule ElixirRssTest do
 | 
			
		||||
  use ExUnit.Case
 | 
			
		||||
  doctest ElixirRss
 | 
			
		||||
 | 
			
		||||
  test "greets the world" do
 | 
			
		||||
    assert ElixirRss.hello() == :world
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										8
									
								
								test/fetch_rss_test.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/fetch_rss_test.exs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
defmodule ElixirRss.FetchTest do
 | 
			
		||||
  use ExUnit.Case
 | 
			
		||||
  doctest ElixirRss.Fetch
 | 
			
		||||
 | 
			
		||||
  test "fetch url" do
 | 
			
		||||
    assert ElixirRss.Fetch.fetch("https://shillerben.com") |> elem(0) == :ok
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										1
									
								
								test/test_helper.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/test_helper.exs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
ExUnit.start()
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user