add API commands to view a single Channel
This commit is contained in:
parent
83fd941c10
commit
32dac9c9c7
@ -12,7 +12,7 @@
|
||||
}
|
||||
|
||||
#bootstrap-sidebar li a {
|
||||
padding: 1px 8px;
|
||||
padding: 0 8px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
|
@ -152,7 +152,6 @@ class ChannelsController < ApplicationController
|
||||
end
|
||||
|
||||
def show
|
||||
|
||||
@channel = Channel.find(params[:id]) if params[:id]
|
||||
|
||||
@title = @channel.name
|
||||
@ -164,6 +163,15 @@ class ChannelsController < ApplicationController
|
||||
api_index @channel.id
|
||||
# if owner of channel
|
||||
get_channel_data if @mychannel
|
||||
|
||||
# if a json or xml request
|
||||
if request.format == :json || request.format == :xml
|
||||
# authenticate the channel if the user owns the channel
|
||||
authenticated = (@mychannel) || (User.find_by_api_key(get_apikey) == @channel.user)
|
||||
# set options correctly
|
||||
options = authenticated ? Channel.private_options : Channel.public_options
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
if @mychannel
|
||||
@ -174,7 +182,8 @@ class ChannelsController < ApplicationController
|
||||
session[:errors] = nil
|
||||
end
|
||||
end
|
||||
format.json { render :json => @channel.as_json(Channel.public_options) }
|
||||
format.json { render :json => @channel.as_json(options) }
|
||||
format.xml { render :xml => @channel.to_xml(options) }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
<li class="subitem"><a href="#get_field">Get Channel Field Feed</a></li>
|
||||
<li class="subitem"><a href="#get_status">Get Status Updates</a></li>
|
||||
<li class="subitem"><a href="#index">List Channels</a></li>
|
||||
<li class="subitem"><a href="#show">View a Channel</a></li>
|
||||
<li class="subitem"><a href="#create">Create a Channel</a></li>
|
||||
<li class="subitem"><a href="#update">Update a Channel</a></li>
|
||||
<li class="subitem"><a href="#clear">Clear a Channel</a></li>
|
||||
|
@ -116,6 +116,9 @@
|
||||
<hr />
|
||||
<%= render 'docs/channels/index' %>
|
||||
|
||||
<hr />
|
||||
<%= render 'docs/channels/show' %>
|
||||
|
||||
<hr />
|
||||
<%= render 'docs/channels/create' %>
|
||||
|
||||
|
72
app/views/docs/channels/_show.html.erb
Normal file
72
app/views/docs/channels/_show.html.erb
Normal file
@ -0,0 +1,72 @@
|
||||
<div>
|
||||
<%= render 'response' %>
|
||||
<h2 id="show">View a Channel</h2>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
To view a specific Channel, send an HTTP GET to
|
||||
<br>
|
||||
<code><%= @ssl_api_domain %>channels/<span class="customcode">CHANNEL_ID</span><span class="format format-json">.json</span><span class="format format-xml">.xml</span></code> .
|
||||
|
||||
<br><br>
|
||||
Valid parameters:
|
||||
<ul>
|
||||
<li><b>api_key</b> (string) - User's API Key; please note that this is different than a Channel API key, and can be found in <a href="/account">your account details</a>. If this key is provided, the Channel's private details (such as the Channel's API keys) will also be shown. (optional).</li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
Example GET:
|
||||
|
||||
<pre>GET <span class="str"><%= @ssl_api_domain %>channels/1417<span class="format format-json">.json</span><span class="format format-xml">.xml</span></span></pre>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="format format-block-xxxl format-text">
|
||||
The response will be a webpage that shows the Channel.
|
||||
</div>
|
||||
|
||||
<div class="format format-block-xxxl format-json">
|
||||
The response will be a JSON object of the Channel, for example:
|
||||
|
||||
<pre class="prettyprint">
|
||||
{
|
||||
"id": 4,
|
||||
"name": "My New Channel",
|
||||
"description": null,
|
||||
"metadata": null,
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"created_at": "2014-03-25T13:12:50-04:00",
|
||||
"elevation": null,
|
||||
"last_entry_id": null,
|
||||
"ranking": 15,
|
||||
"username": "hans",
|
||||
"tags": []
|
||||
}
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="format format-block-xxxl format-xml">
|
||||
The response will be an XML object of public Channels, for example:
|
||||
|
||||
<pre class="prettyprint">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channel>
|
||||
<id type="integer">4</id>
|
||||
<name>My New Channel</name>
|
||||
<description nil="true" />
|
||||
<metadata nil="true" />
|
||||
<latitude type="decimal" nil="true" />
|
||||
<longitude type="decimal" nil="true" />
|
||||
<created-at type="dateTime">2014-03-25T20:17:44-04:00</created-at>
|
||||
<elevation nil="true" />
|
||||
<last-entry-id type="integer" nil="true" />
|
||||
<ranking type="integer">15</ranking>
|
||||
<username>hans</username>
|
||||
<tags type="array" />
|
||||
</channel>
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
|
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -143,7 +143,21 @@ describe ChannelsController do
|
||||
it 'returns JSON' do
|
||||
get :show, id: @channel.id, format: 'json'
|
||||
JSON.parse(response.body)['name'].should eq(@channel.name)
|
||||
JSON.parse(response.body)['tags'].should eq([])
|
||||
JSON.parse(response.body)['api_keys'].should be_nil
|
||||
end
|
||||
it 'returns JSON with private data' do
|
||||
get :show, id: @channel.id, api_key: @user.api_key, format: 'json'
|
||||
JSON.parse(response.body)['api_keys'].should_not be_nil
|
||||
end
|
||||
it 'returns XML' do
|
||||
get :show, id: @channel.id, format: 'xml'
|
||||
Nokogiri::XML(response.body).css('name').text.should eq(@channel.name)
|
||||
Nokogiri::XML(response.body).css('api-keys').text.should be_blank
|
||||
end
|
||||
it 'returns XML with private data' do
|
||||
@channel.add_write_api_key
|
||||
get :show, id: @channel.id, api_key: @user.api_key, format: 'xml'
|
||||
Nokogiri::XML(response.body).css('api-keys').text.should_not be_blank
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user