calamum 1.0.2 → 1.1.0

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.
@@ -1,10 +0,0 @@
1
-
2
-
3
- def puts_info(msg)
4
- $stdout.puts "\e[32m[INFO] #{msg}\e[0m" if Calamum::Config[:debug]
5
- end
6
-
7
- def puts_error(msg)
8
- $stderr.puts "\e[31m[ERROR] #{msg}\e[0m" if Calamum::Config[:debug]
9
- exit(1)
10
- end
@@ -1,75 +0,0 @@
1
-
2
- class Calamum::DefinitionParser
3
- attr_accessor :definition, :resources
4
-
5
- def initialize(definition_yaml)
6
- @definition = definition_yaml
7
- @resources = Hash.new
8
- end
9
-
10
- def get_resources
11
- Calamum::Config[:sort]? @definition['resources'].sort : @definition['resources']
12
- end
13
-
14
- def get_name
15
- @definition['name']
16
- end
17
-
18
- def get_url
19
- @definition['url']
20
- end
21
-
22
- def get_description
23
- @definition['description']
24
- end
25
-
26
- def get_resources_names
27
- @definition['resources'].inject([]){|resources, (key, content)| resources << key}
28
- end
29
-
30
- def load_requests
31
- self.get_resources.each do |resource, requests|
32
- @resources[resource] = []
33
- index = 0
34
- requests.each do |request|
35
- req = initialize_request(request)
36
- unless req.nil?
37
- @resources[resource][index]= req
38
- index += 1
39
- end
40
- end
41
- end
42
- @resources
43
- end
44
-
45
- def initialize_request(request)
46
- req = Calamum::Request.new({
47
- :uri => request['uri'],
48
- :action => request['action'],
49
- :params => request['params'],
50
- :description => request['description'],
51
- :headers => request['headers'],
52
- :response => request['response'],
53
- })
54
- if req.errors.empty?
55
- puts_info "Request #{request['action']}: #{request['uri']} loading success"
56
- req
57
- else
58
- puts_error "Request #{request['action']}: #{request['uri']} not valid: #{req.errors}"
59
- nil
60
- end
61
- end
62
-
63
- def get_resource_uris(name)
64
- @resources[name]
65
- end
66
-
67
- def find_resource_uri_by_label(resource, label)
68
- @resources.select{|r| r['label']==label}.first['uri']
69
- end
70
-
71
- def find_resource_action_by_label(resource, label)
72
- @resources.select{|r| r['label']==label}.first['action']
73
- end
74
-
75
- end
@@ -1,40 +0,0 @@
1
- class Calamum::Request
2
- include ActiveModel::Validations
3
-
4
- attr_reader :errors
5
- attr_accessor :uri, :action, :params, :description, :headers, :response
6
- ACTIONS= %{GET POST PUT DELETE}
7
-
8
- validates :uri, :action, :presence => true
9
- # validates :uri, :uniqueness => true
10
- validates :action, :inclusion => { :in => ACTIONS, :message => "is not included in [#{ACTIONS}]"}
11
-
12
- def initialize(attrs)
13
- @uri= attrs[:uri]
14
- @action= attrs[:action].upcase
15
- @params= attrs[:params] || {}
16
- @headers = attrs[:headers] || {}
17
- @response = attrs[:response] || ''
18
- @description = attrs[:description]
19
- @errors = ActiveModel::Errors.new(self)
20
- self.valid?
21
- end
22
-
23
- def action_label
24
- case @action
25
- when 'GET'
26
- 'label-info'
27
- when 'POST'
28
- 'label-success'
29
- when 'PUT'
30
- 'label-warning'
31
- when 'DELETE'
32
- 'label-important'
33
- end
34
- end
35
-
36
- def to_s
37
- "#{action}: #{uri}"
38
- end
39
-
40
- end
data/sample/sample.yml DELETED
@@ -1,83 +0,0 @@
1
- name: 'Calamum'
2
- url: 'http://calamum-sample:3000/api'
3
- description: 'Calamum is a simple ruby build program to generate a REST API documentation from a YAML file definition'
4
- resources:
5
- user:
6
- -
7
- uri: '/users'
8
- action: 'get'
9
- headers:
10
- content_type: 'application/json'
11
- description: 'Get the users list'
12
- response: '{"users":[{"id":"12354","name":"test", "mail":"test@test.com"}, {"id":"123789","name":"test2", "mail":"test@test.com"}}'
13
- -
14
- uri: '/users/:id'
15
- action: 'get'
16
- headers:
17
- content_type: 'application/json'
18
- content_language: 'en-US'
19
- params:
20
- id:
21
- type: 'String'
22
- description: 'User id'
23
- required: true
24
- response: '{"user":{"name":"test", "mail":"test@test.com"}}'
25
-
26
- -
27
- uri: '/users'
28
- action: 'post'
29
- description: 'Create a new user'
30
- headers:
31
- content_type: 'application/json'
32
- content_language: 'en-US'
33
- params:
34
- id:
35
- type: 'String'
36
- description: 'User id'
37
- required: true
38
- name:
39
- type: 'String'
40
- description: 'User name'
41
- required: false
42
- email:
43
- type: 'String'
44
- description: 'User email'
45
- required: true
46
- -
47
- uri: '/users/:id'
48
- action: 'put'
49
- description: 'Update the user'
50
- headers:
51
- content_type: 'application/json'
52
- content_language: 'en-US'
53
- params:
54
- id:
55
- type: 'String'
56
- description: 'User id'
57
- required: true
58
- name:
59
- type: 'String'
60
- description: 'User name'
61
- required: false
62
- email:
63
- type: 'String'
64
- description: 'User email'
65
- required: true
66
- -
67
- uri: '/users/:id'
68
- action: 'delete'
69
- description: 'Delete the user'
70
- headers:
71
- content_type: 'application/json'
72
- content_language: 'en-US'
73
- params:
74
- id:
75
- type: 'String'
76
- description: 'User id'
77
- required: true
78
- group:
79
- -
80
- uri: '/groups'
81
- action: 'get'
82
- content_type: 'application/json'
83
- description: 'Get the list og groups'
@@ -1,41 +0,0 @@
1
- name: 'Drive'
2
- url: 'http://localhost:3000/api'
3
- resources:
4
- user:
5
- -
6
- uri: '/users'
7
- action: 'get'
8
- description: 'Get the list of the users'
9
- -
10
- uri: '/users/:id'
11
- action: 'get'
12
- headers:
13
- content_type: 'application/json'
14
- content_language: 'en-US'
15
- params:
16
- id:
17
- type: 'String'
18
- -
19
- uri: '/users/:id'
20
- action: 'put'
21
- headers:
22
- content_type: 'application/json'
23
- content_language: 'en-US'
24
- params:
25
- id:
26
- type: 'String'
27
- description: 'User id'
28
- required: true
29
- name:
30
- type: 'String'
31
- description: 'User name'
32
- required: false
33
- email:
34
- type: 'String'
35
- description: 'User email'
36
- required: true
37
- group:
38
- -
39
- uri: '/groups'
40
- action: 'get'
41
- description: 'Get the list og groups'
@@ -1,17 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Calamum::DefinitionParser do
4
- before do
5
- definition = YAML.load(File.open("spec/data/my_definition.yml"))
6
- @api_definition = Calamum::DefinitionParser.new(definition)
7
- @api_definition.load_requests
8
- end
9
-
10
- specify{@api_definition.get_resources_names.should == ['user', 'group']}
11
- specify{@api_definition.get_resource_uris('user').size.should == 3}
12
- specify{@api_definition.resources['user'].size.should == 3}
13
- specify{@api_definition.resources['user'][0].errors.should be_empty}
14
- specify{@api_definition.resources['user'][0].action.should == 'GET'}
15
- specify{@api_definition.resources['user'][0].uri.should == '/users'}
16
- specify{@api_definition.resources['user'][1].headers.should_not be_empty}
17
- end
data/spec/request_spec.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Calamum::Request do
4
- before do
5
- @attrs = {uri: '/users', action: 'get', params: {id:{type: 'String'}}, content_type: 'application/json'}
6
- end
7
-
8
- specify{Calamum::Request.new(@attrs).should be_true}
9
- specify{Calamum::Request.new(@attrs.merge(uri:'')).errors[:uri].should == ["can't be blank"]}
10
- specify{Calamum::Request.new(@attrs.merge(action:'')).errors[:action].should == ["can't be blank"]}
11
- specify{Calamum::Request.new(@attrs.merge(action:'foo')).errors[:action].should == ["is not included in [GET POST PUT DELETE]"]}
12
-
13
- end
data/spec/spec_helper.rb DELETED
@@ -1,3 +0,0 @@
1
- require_relative '../lib/calamum'
2
-
3
- require 'active_support/hash_with_indifferent_access'