fern-api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []