#!/usr/bin/env python
'''

 wget http://data.sdss3.org/sas/dr12/boss/photoObj/frames/301/5087/6/frame-g-005087-6-0275.fits.bz2 && bzip2 -d frame-g-005087-6-0275.fits.bz2
'''



import sys
import urllib
import argparse
import json
import urllib2

def search_sdss_star(ra,dec,radius=1):
  URL = "http://skyserver.sdss.org/dr13/en/tools/search/x_results.aspx"
  params = {'REQUEST': 'doQuery',
	  'searchtool':  'SQL',
	  'TaskName': 'Skyserver.Search.SQL',
	  'syntax': 'NoSyntax',
	  'ReturnHtml': 'false',
	  'format':  'json',
	  'TableName': ''
	  }

  baseQuery = """
	      select 
		s.objid,
		s.ra,
		s.dec,
		s.u,
		s.g,
		s.r,
		s.i,
		s.z
	      from Star as s,
	      dbo.fGetNearbyObjEq(%f,%f,%f) as N
	      where s.objID = N.objID AND s.g <23.0
	      """
	      
  query = baseQuery % (ra, dec, radius)
  params['cmd'] = query
  url_request = URL + '?' + urllib.urlencode(params)
  response = urllib.urlopen(url_request)
  rd=response.read()
  data = json.loads(rd.decode('ascii'))
  return data

def search_sdss_plates(ra,dec,radi=0.5):
  URL = "http://skyserver.sdss.org/dr13/en/tools/search/x_results.aspx"
  params = {'REQUEST': 'doQuery',
	  'searchtool':  'Imaging',
	  'TaskName': 'Skyserver.Search.IQS',
	  'syntax': 'NoSyntax',
	  'ReturnHtml': 'false',
	  'format':  'json',
	  'TableName': '',
	  'imgparams': 'minimal',
	  'specparams': 'none',
	  'positionType': 'cone',
	  'ra': ra,
	  'dec': dec,
	  'radius': radi,
	  'limit': '50'
	  }


	      
  data = urllib.urlencode(params)
  #data = data.encode('ascii') # data should be bytes
  req = urllib2.Request(URL, data)
  response = urllib2.urlopen(req)
  rd=response.read()
  data = json.loads(rd.decode('ascii'))
  return data

def search_sdss_fits(ra,dec,radi=0.5):
  json=search_sdss_plates(ra,dec,radi)
  json=json[0]["Rows"]
  urls=[]
  urls2=[]

  for row in json:
    string_run = '0000000'+str(row["run"])
    string_run = string_run[-6:]
    string_field = '0000000'+str(row["field"])
    string_field = string_field[-4:]   
    url = "http://data.sdss3.org/sas/dr12/boss/photoObj/frames/"+str(row["rerun"])+"/"+str(row["run"])+"/"+str(row["camCol"])+"/frame-g-"+string_run+"-"+str(row["camCol"])+"-"+string_field+".fits.bz2"
    fname = "frame-g-"+string_run+"-"+str(row["camCol"])+"-"+string_field+".fits"
    drname = "frame_g_"+string_run+"_"+str(row["camCol"])+"_"+string_field 
    if urls2.count(url) == 0:
      urls.append([url,fname,drname])
      urls2.append(url)
  return urls

#print search_sdss_fits(198,25,radi=0.5)