apipie-rails 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -10
- data/app/controllers/apipie/apipies_controller.rb +12 -4
- data/app/views/apipie/apipies/_disqus.html.erb +11 -0
- data/app/views/apipie/apipies/apipie_404.html.erb +12 -0
- data/app/views/apipie/apipies/method.html.erb +1 -1
- data/app/views/apipie/apipies/resource.html.erb +1 -1
- data/app/views/layouts/apipie/apipie.html.erb +4 -15
- data/lib/apipie-rails.rb +1 -0
- data/lib/apipie/apipie_module.rb +10 -2
- data/lib/apipie/client/base.rb +131 -0
- data/lib/apipie/client/{template/cli_command.rb.tt → cli_command.rb} +21 -22
- data/lib/apipie/client/generator.rb +33 -30
- data/lib/apipie/client/{template/bin.rb.tt → main.rb} +13 -30
- data/lib/apipie/client/{template/rest_client_oauth.rb.tt → rest_client_oauth.rb} +1 -11
- data/lib/apipie/client/template/{client.gemspec.tt → a_name.gemspec.tt} +1 -0
- data/lib/apipie/client/template/bin/bin.rb.tt +30 -0
- data/lib/apipie/client/template/lib/a_name.rb.tt +27 -0
- data/lib/apipie/client/template/{cli.rb.tt → lib/a_name/commands/cli.rb.tt} +5 -8
- data/lib/apipie/client/template/lib/a_name/config.yml +6 -0
- data/lib/apipie/client/template/lib/a_name/resources/resource.rb.tt +22 -0
- data/lib/apipie/client/template/{version.rb.tt → lib/a_name/version.rb.tt} +0 -0
- data/lib/apipie/client/thor.rb +19 -0
- data/lib/apipie/dsl_definition.rb +3 -3
- data/lib/apipie/errors.rb +38 -0
- data/lib/apipie/helpers.rb +17 -0
- data/lib/apipie/param_description.rb +19 -10
- data/lib/apipie/resource_description.rb +2 -2
- data/lib/apipie/validator.rb +13 -33
- data/lib/apipie/version.rb +1 -1
- data/lib/tasks/apipie.rake +5 -0
- data/rubygem-apipie-rails.spec +80 -41
- data/spec/controllers/users_controller_spec.rb +20 -17
- data/spec/dummy/app/controllers/users_controller.rb +1 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -7
- data/spec/dummy/config/initializers/apipie.rb +15 -0
- data/spec/lib/param_description_spec.rb +0 -0
- data/spec/lib/parameter_description_spec.rb +41 -0
- metadata +50 -40
- data/lib/apipie/client/template/base.rb.tt +0 -55
- data/lib/apipie/client/template/client.rb.tt +0 -13
- data/lib/apipie/client/template/resource.rb.tt +0 -19
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'rest_client'
|
2
|
-
require 'oauth'
|
3
|
-
require 'json'
|
4
|
-
require '<%= name %><%= suffix %>/rest_client_oauth'
|
5
|
-
|
6
|
-
module <%= class_base %><%= class_suffix %>
|
7
|
-
class Base
|
8
|
-
attr_reader :client
|
9
|
-
|
10
|
-
def initialize(config = <%= class_base %><%= class_suffix %>.client_config, options = { })
|
11
|
-
@client = RestClient::Resource.new config[:base_url],
|
12
|
-
:user => config[:username],
|
13
|
-
:password => config[:password],
|
14
|
-
:oauth => config[:oauth],
|
15
|
-
:headers => { :content_type => 'application/json',
|
16
|
-
:accept => 'application/json' }
|
17
|
-
end
|
18
|
-
|
19
|
-
def call(method, path, options = { })
|
20
|
-
payload, headers, params = options.values_at :payload, :headers, :params
|
21
|
-
headers[:params] = params if params
|
22
|
-
|
23
|
-
args = [method]
|
24
|
-
args << payload.to_json if [:post, :put].include?(method)
|
25
|
-
args << headers if headers
|
26
|
-
process_data client[path].send(*args)
|
27
|
-
end
|
28
|
-
|
29
|
-
def validate_params!(options, valid_keys)
|
30
|
-
return unless options.is_a?(Hash)
|
31
|
-
invalid_keys = options.keys.map(&:to_s) - (valid_keys.is_a?(Hash) ? valid_keys.keys : valid_keys)
|
32
|
-
raise ArgumentError, "Invalid keys: #{invalid_keys.join(", ")}" unless invalid_keys.empty?
|
33
|
-
|
34
|
-
if valid_keys.is_a? Hash
|
35
|
-
valid_keys.each do |key, keys|
|
36
|
-
if options[key]
|
37
|
-
validate_params!(options[key], keys)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
protected
|
44
|
-
|
45
|
-
def process_data(response)
|
46
|
-
data = begin
|
47
|
-
JSON.parse(response.body)
|
48
|
-
rescue JSON::ParserError
|
49
|
-
response.body
|
50
|
-
end
|
51
|
-
return data, response
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require '<%= name %><%= suffix %>/base'
|
2
|
-
require '<%= name %><%= suffix %>/version'
|
3
|
-
|
4
|
-
resource_files = Dir[File.expand_path('../<%= name %><%= suffix %>/resources/*.rb', __FILE__)]
|
5
|
-
resource_files.each { |f| require f }
|
6
|
-
|
7
|
-
module <%= class_base %><%= class_suffix %>
|
8
|
-
def self.client_config
|
9
|
-
@client_config ||= { :base_url => "http://localhost:3000",
|
10
|
-
:oauth => { :consumer_key => 'consumer',
|
11
|
-
:consumer_secret => 'shhhh' } }
|
12
|
-
end
|
13
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module <%= class_base %><%= class_suffix %>
|
2
|
-
module Resources
|
3
|
-
class <%= resource_name.camelize %> < <%= class_base %><%= class_suffix %>::Base
|
4
|
-
<% resource[:methods].each do |method| -%>
|
5
|
-
|
6
|
-
def <%= method[:name] %><%= "(#{ client_args(method).join(", ") })" if client_args(method).any? %>
|
7
|
-
<% if method[:params].any? -%>
|
8
|
-
validate_params!(params, <%= validation_hash(method).inspect.html_safe %>)
|
9
|
-
<% end -%>
|
10
|
-
<% http_method = api(method)[:http_method].downcase -%>
|
11
|
-
call(:<%= http_method %>, "<%= substituted_url(method) %>"<%=
|
12
|
-
(http_method == 'get' ? ", :params => params" : ", :payload => params") if method[:params].any?
|
13
|
-
%>, :headers => headers)
|
14
|
-
end
|
15
|
-
<% end -%>
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|