riak / src / riak_web.erl

%% This file is provided to you under the Apache License,
%% Version 2.0 (the "License"); you may not use this file
%% except in compliance with the License.  You may obtain
%% a copy of the License at


%% Unless required by applicable law or agreed to in writing,
%% software distributed under the License is distributed on an
%% KIND, either express or implied.  See the License for the
%% specific language governing permissions and limitations
%% under the License.    

%% @doc Convenience functions for setting up the Jiak HTTP interface
%%      of Riak.  This module loads parameters from the application
%%      environment:
%%<dl><dt>  riak_web_ip
%%</dt><dd>   IP address that the Webmachine node should listen to
%%</dd><dt> riak_web_port
%%</dt><dd>   port that the Webmachine node should listen to
%%</dd><dt> riak_web_logdir
%%</dt><dd>   directory under which the access log will be stored
%%</dd><dt> jiak_name
%%</dt><dd>   the base path under which Jiak should be exposed;
%%            defaulted to "jiak"


%% @spec config() -> [{Key :: atom(), Value :: term()}]
%% @doc Returns the standard Jiak Webmachine configuration.
%%      pass the return of this function to
%%      webmachine_mochiweb:start/1 to start up a Webmachine
%%      resource serving Jiak out of
%%      http://{riak_web_ip}:{riak_web_port}/jiak/
config() ->
    [{ip, riak:get_app_env(riak_web_ip)},
     {port, riak:get_app_env(riak_web_port)},
     {log_dir, riak:get_app_env(riak_web_logdir, "log")},
     {dispatch, dispatch_table()}].

dispatch_table() ->
    JiakProps = jiak_props(),
    [{[proplists:get_value(jiak_name, JiakProps),bucket],
      [{key_type, container}|JiakProps]},
     {[proplists:get_value(jiak_name, JiakProps),bucket,key],
      [{key_type, item}|JiakProps]},
     {[proplists:get_value(jiak_name, JiakProps),bucket,key,'*'],

jiak_props() ->
    [{jiak_name, riak:get_app_env(jiak_name, "jiak")},
     {riak_local, true},
     {jiak_buckets, [jiak_example]}].
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.