Skip to content
Snippets Groups Projects
WebServiceUsage.py 5.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • """Factory that loads html for Web Service Usage Documentation"""
    
    from datetime import datetime
    from geomagio.ObservatoryMetadata import ObservatoryMetadata
    
    
    class WebServiceUsage(object):
        def __init__(self, metadata=None):
    
            metadata = metadata or ObservatoryMetadata().metadata.keys()
    
            self.date = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
    
            self.metadata = ', '.join(sorted(metadata))
    
        def set_usage_page(self, start_response):
            """Set body of Web Service Usage Documentation Page"""
    
            start_response('200 OK',
                    [
                        ("Content-Type", "text/html")
                    ])
    
            usage_body = """
                <head>
                  <title>Geomag Web Service Usage</title>
                  <meta charset="utf-8"/>
    
                  <meta name="viewport" content="width=device-width,
                        initial-scale=1"/>
    
                  <link href="/theme/site/geomag/index.scss" type="text/css">
                  <style>
                      code,
                      pre {{
                        background: #f8f8f8;
                        border-radius: 3px;
                        color: #555;
                        font-family: monospace;
                      }}
                  </style>
                </head>
    
                <body>
                    <main role="main" class="page" aria-labelledby="page-header">
                    <header class="page-header" id="page-header">
                        <h1>Geomag Web Service Usage</h1>
                    </header>
    
                    <h2>Example Requests</h3>
                     <dl>
    
                        <b>BOU observatory data for current UTC day in IAGA2002
                                format</b>
    
                        <a href="http://geomag.usgs.gov/ws/edge/?id=BOU">
                                http://geomag.usgs.gov/ws/edge/?id=BOU</a>
    
                    <h2>Parameters</h2>
                    <dl>
                        <b>id</b>
                        <dd>
                            Observatory code.
                            Required.<br/>
                            Valid values: <code>{metadata}</code>
                        </dd>
    
                        <b>starttime</b>
                        <dd>
                            Time of first requested data.<br/>
                            Default: start of current UTC day<br/>
    
                            Format: ISO8601
                                    (<code>YYYY-MM-DDTHH:MM:SSZ</code>)<br/>
    
                            Example: <code>{date}</code>
                        </dd>
    
                        <b>endtime</b>
                        <dd>
                            Time of last requested data.<br/>
                            Default: starttime + 24 hours<br/>
    
                            Format: ISO8601
                                    (<code>YYYY-MM-DDTHH:MM:SSZ</code>)<br/>
    
                            Example: <code>{date}</code>
                        </dd>
    
                        <b>elements</b>
                        <dd>
                            Comma separated list of requested elements.<br/>
                            Default: <code>X,Y,Z,F</code><br/>
    
                            Valid values: <code>D, DIST, DST, E, E-E, E-N, F, G,
                                    H, SQ, SV, UK1, UK2, UK3, UK4, X, Y, Z</code>
                                    <br/>
    
                        </dd>
                        <b>sampling_period</b>
                        <dd>
                            Interval in seconds between values.<br/>
                            Default: <code>60</code><br/>
                            Valid values:
                              <code>1</code>,
                              <code>60</code>
                        </dd>
    
                        <b>type</b>
                        <dd>
                            Type of data.<br/>
                            Default: <code>variation</code><br/>
                            Valid values:
                              <code>variation</code>,
                               <code>adjusted</code>,
                               <code>quasi-definitive</code>,
                               <code>definitive</code><br/>
                        </dd>
    
                        <b>format</b>
                        <dd>
                            Output format.<br/>
                            Default: <code>iaga2002</code><br/>
                            Valid values:
                              <code>iaga2002</code>.
                        </dd>
                    </dl>
                  </main>
    
                  <nav class="site-footer">
                  <p> Not what you were looking for?<br/>
                      Search usa.gov: </p>
    
                    <form class="site-search" role="search"
                            action="//search.usa.gov/search" method="get"
                            accept-charset="UTF-8">
    
                      <input name="utf8" type="hidden" value="x"/>
                      <input name="affiliate" type="hidden" value="usgs"/>
                      <input name="sitelimit" type="hidden" />
    
                      <input id="query" name="query" type="search"
                            placeholder="Search usa.gov..." title="Search"/>
    
                      <button type="submit">Search</button>
                    </form>
                  </nav>
                </body>
            """.format(metadata=self.metadata, date=self.date)
    
            return usage_body