fern-api 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 00b0d9c05a4c04535f61cdcc6f1144d8259439fc
4
+ data.tar.gz: 282c7d69085c03b3c80af77b7cd7ab1362dbf0b0
5
+ SHA512:
6
+ metadata.gz: d345e1da6569ca8534c296595fd4254d7766724503661b0607156e749a1ed71c2e48ef83e479053d9c6f19851c6f1665ebaf6f89542c23c110046509526b383b
7
+ data.tar.gz: ac26c8ab49c422020d708ae92ce361e5258c87dbdf9506892dd6715aa1444790b08d6816a9d2475a742035a1d4f8991b0ed70c070ec6b5ad1486ef53ebed5ed5
@@ -0,0 +1,16 @@
1
+ module Fern
2
+ module Api
3
+ class Endpoint
4
+ def initialize(controller, name:, &block)
5
+ @controller = controller
6
+ @name = name
7
+
8
+ instance_eval(&block)
9
+ end
10
+
11
+ def request(&block)
12
+ @controller.send(:define_method, @name, &block)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module Fern
2
+ module Api
3
+ VERSION = '0.0.1'.freeze
4
+ end
5
+ end
data/lib/fern/api.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'fern/api/endpoint'
2
+
3
+ module Fern
4
+ module Api
5
+ def self.included(receiver)
6
+ receiver.extend(ClassMethods)
7
+ end
8
+
9
+ module ClassMethods
10
+ VERBS = %i[delete get patch post put].freeze
11
+
12
+ def endpoint(name, &block)
13
+ Endpoint.new(self, name: name, &block)
14
+ end
15
+
16
+ def method_missing(method_name, *args, &block)
17
+ if VERBS.include?(method_name)
18
+ endpoint(args[0], &block)
19
+ else
20
+ super
21
+ end
22
+ end
23
+
24
+ def respond_to_missing?(method_name, include_private = false)
25
+ VERBS.include?(method_name) || super
26
+ end
27
+ end
28
+ end
29
+ end
data/lib/fern_api.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'fern/api'
2
+ require 'fern/api/version'
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fern-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Kestell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '10.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '10.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ description: API DSL for Fern.
42
+ email: kyle@kestell.org
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/fern/api.rb
48
+ - lib/fern/api/endpoint.rb
49
+ - lib/fern/api/version.rb
50
+ - lib/fern_api.rb
51
+ homepage: https://github.com/kkestell/fern-api
52
+ licenses:
53
+ - MIT
54
+ metadata: {}
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 2.0.0
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ requirements: []
70
+ rubyforge_project:
71
+ rubygems_version: 2.6.11
72
+ signing_key:
73
+ specification_version: 4
74
+ summary: Fern API
75
+ test_files: []