Skip to content

Instantly share code, notes, and snippets.

@trevordixon
Created February 27, 2014 16:37
Show Gist options
  • Save trevordixon/9253741 to your computer and use it in GitHub Desktop.
Save trevordixon/9253741 to your computer and use it in GitHub Desktop.
ruleset a2294x2 {
rule first_rule is active {
select when pageview ".*" setting ()
pre {
results = <<
<dl id="results" style="display:none">
<dt></dt>
<dd><img id="thumbnail" src=""></dd>
<dt>Title</dt>
<dd class="title"></dd>
<dt>Release Year</dt>
<dd id="year"></dd>
<dt>Synopsis</dt>
<dd id="synopsis"></dd>
<dt>Critic Ratings</dt>
<dd id="rating"></dd>
<dt>MPAA Rating</dt>
<dd id="mpaa_rating"></dd>
</dl>
<p id="error" style="display:none">No results for <span class="title"></span>.</p>
>>;
form = <<
<form id="movie_form">
<input placeholder="Movie Title" name="movie_title"><br>
<button type="submit">Submit</button>
</form>
>>;
}
{
append("#main", results);
append("#main", form);
watch("#movie_form", "submit");
}
}
rule submitted_rule {
select when web submit "#movie_form"
pre {
title = event:attr("movie_title");
}
{
http:get("http://api.rottentomatoes.com/api/public/v1.0/movies.json")
with params = {
"apikey": "5npqgua7f4jffkdu8pfubwcj",
"q": title
} and autoraise = "movie_info";
}
always {
set ent:last_search title;
}
}
rule tomato_response {
select when http get label "movie_info"
pre {
response = event:param("content").decode();
num_results = response.pick("$.total");
movie = response.pick("$.movies[0]");
title = movie.pick("$.title");
year = movie.pick("$.year");
synopsis = movie.pick("$.synopsis");
rating = movie.pick("$.ratings.critics_rating");
mpaa_rating = movie.pick("$.mpaa_rating");
thumbnail = movie.pick("$.posters.detailed");
}
if (num_results > 0) then {
set_element_attr("#results", "style", "display:block");
set_element_attr("#error", "style", "display:none");
replace_image_src("#thumbnail", thumbnail);
replace_inner(".title", title);
replace_inner("#year", year);
replace_inner("#synopsis", synopsis);
replace_inner("#rating", rating);
replace_inner("#mpaa_rating", mpaa_rating);
}
notfired {
raise explicit event no_results;
}
}
rule no_results {
select when explicit no_results
{
set_element_attr("#results", "style", "display:none");
set_element_attr("#error", "style", "display:block");
replace_inner(".title", ent:last_search);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment