changeset 4:fccb58bd1fae draft default tip

Deleted selected files
author jfallmann
date Wed, 01 Feb 2017 09:59:41 -0500
parents 755662977150
children
files aresite2/RestAPI.pl
diffstat 1 files changed, 0 insertions(+), 135 deletions(-) [+]
line wrap: on
line diff
--- a/aresite2/RestAPI.pl	Wed Feb 01 09:59:29 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-#!/usr/bin/env perl
-
-#Copyright (C) 2015 Joerg Fallmann E<lt>joerg.fallmann@univie.ac.atE<gt>
-#This library is free software; you can redistribute it and/or modify
-#it under the same terms as Perl itself, either Perl version 5.10.0 or,
-#at your option, any later version of Perl 5 you may have available.
-#This program is distributed in the hope that it will be useful, but
-#WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-#General Public License for more details.
-#With code fragments from https://github.com/Ensembl/ensembl-rest/wiki/Example-Perl-Client
-#Last changed Time-stamp: <2015-10-30 15:25:52> by joerg.fallmann@univie.ac.at
-
-########## Load Modules ##########
-#### We use HTTP::Tiny simple to send a GET request to aresite2
-#### The returned JSON object is parsed with the module JSON
-#### Data::Dumper is used to print the returned hash ref
-use strict;
-use warnings;
-use HTTP::Tiny;
-use Time::HiRes;
-#use LWP::Simple;
-use JSON qw( decode_json );
-use Data::Dumper;
-use Getopt::Long qw( :config posix_default bundling no_ignore_case );
-use Pod::Usage;
-
-########## MAIN ##########
-
-########## Define variables ##########
-my ($VERBOSE, $species, @motifs, $gene, $list);
-
-########## Process Commandline ##########
-Getopt::Long::config('no_ignore_case');
-pod2usage(-verbose => 0)
-	unless GetOptions(
-		"species|s=s" => \$species,
-		"motifs|o=s"  => \@motifs,
-		"gene|g=s"	  => \$gene,
-		"help|h"			=> sub{pod2usage(-verbose => 1)},
-		"man|m"				=> sub{pod2usage(-verbose => 2)},      
-		"verbose"			=> sub{ $VERBOSE++ }
-	);
-
-########## Get PID and print command ##########
-my $pid = $$;
-(my $job = `cat /proc/$pid/cmdline`)=~ s/\0/ /g;
-print STDERR "You called ",$job,"\n";
-
-########## Send request ##########
-my $http = HTTP::Tiny->new();
-### Define url
-my $url = 'http://rna.tbi.univie.ac.at/AREsite2/api/';
-my $urltest = 'https://rest.ensembl.org/info/species?content-type=application/json';
-my $global_headers = { 'Content-Type' => 'application/json' };
-my $last_request_time = Time::HiRes::time();
-my $request_count = 0;
-
-### Define gene, species, and a comma-separated list of motifs
-$species = "Homo_sapiens" unless (defined $species);
-$list = join(",",split(/,/,join(",",@motifs))) if (@motifs);
-$list = "ATTTA" unless (defined $list);
-$gene = "cxcl2" unless (defined $gene);
-
-### Fetch response and create hash ref from response
-my $aresite = run();
-
-### print hash dump to STDOUT
-print Dumper (\$aresite);
-
-### Check for request errors
-print STDOUT "ERROR:\t".$aresite->{message}."\n" if (defined $aresite->{reason});
-
-### print some values to STDOUT if no error
-print STDOUT "GENE: $aresite->{id}\tENSEMBL: $aresite->{ensid}\tCoords: $aresite->{coordinates}\n" unless (defined $aresite->{reason});
-
-
-sub run {
-
-	### Create query
-	my $query = join("&","?query=$gene","species=$species","list=$list");
-	$url .= $query;
-	my $aresite = perform_json_action($url);
-	return $aresite;
-}
-
-sub perform_json_action {
-	my ($endpoint) = @_;
-	my $headers = $global_headers;
-	my $content = perform_rest_action($endpoint, $headers);
-	return {} unless $content;
-	my $json = decode_json($content);
-	return $json;
-}
-
-sub perform_rest_action {
-	my ($endpoint, $headers) = @_;
-	$headers ||= {};
-	$headers->{'Content-Type'} = 'application/json' unless exists $headers->{'Content-Type'};
-	if($request_count == 15) { # check every 15
-		my $current_time = Time::HiRes::time();
-		my $diff = $current_time - $last_request_time;
-		# if less than a second then sleep for the remainder of the second
-		if($diff < 1) {
-			Time::HiRes::sleep(1-$diff);
-		}
-		# reset
-		$last_request_time = Time::HiRes::time();
-		$request_count = 0;
-	}
-	
-	my $url = $endpoint;
-	print STDERR "Fetching from ",$url,"\n";
-	my $response = $http->get($url, {headers => $headers});
-	my $status = $response->{status};
-	if(!$response->{success}) {
-		# Quickly check for rate limit exceeded & Retry-After (lowercase due to our client)
-		if($status == 429 && exists $response->{headers}->{'retry-after'}) {
-			my $retry = $response->{headers}->{'retry-after'};
-			Time::HiRes::sleep($retry);
-			# After sleeping see that we re-request
-			return perform_rest_action($endpoint, $headers);
-		}
-		else {
-			my ($status, $reason) = ($response->{status}, $response->{reason});
-			die "Failed for $endpoint! Status code: ${status}. Reason: ${reason}\n";
-		}
-	}
-	$request_count++;
-	if(length $response->{content}) {
-		return $response->{content};
-	}
-	return;
-}
-