sms.ru left SMS check
This commit is contained in:
commit
86b6f75eb7
24
.editorconfig
Normal file
24
.editorconfig
Normal file
@ -0,0 +1,24 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.cr]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[{*.html,*.css,*.json}]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.js]
|
||||
indent_style = space
|
||||
indent_size = 2
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2022 Alexander Popov <iiiypuk@fastmail.fm>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
2
public/.gitignore
vendored
Normal file
2
public/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/css/bootstrap*
|
||||
/js/bootstrap*
|
0
public/css/styles.css
Normal file
0
public/css/styles.css
Normal file
39
public/index.html
Normal file
39
public/index.html
Normal file
@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Services</title>
|
||||
<link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/styles.css">
|
||||
<script type="text/javascript" src="/js/app.js"></script>
|
||||
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<main class="d-flex flex-nowrap">
|
||||
<div class="d-flex flex-column flex-shrink-0 p-3 text-bg-dark border-end" style="width: 280px;">
|
||||
</div>
|
||||
|
||||
<section class="bg-dark text-bg-dark w-100 p-3">
|
||||
<div class="fw-bold">
|
||||
Today:
|
||||
<label id="data-today"></label>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">SMS.ru</div>
|
||||
<div class="col-6">
|
||||
<div class="progress">
|
||||
<div id="data-smsru-progress" class="progress-bar progress-bar-striped bg-danger" role="progressbar"
|
||||
aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"
|
||||
style="width: 100%"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col text-end">
|
||||
<button id="button-smsru-update" class="btn btn-sm btn-outline-primary">Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
30
public/js/app.js
Normal file
30
public/js/app.js
Normal file
@ -0,0 +1,30 @@
|
||||
window.onload = function () {
|
||||
let dataToday = document.getElementById('data-today');
|
||||
|
||||
// Set current date
|
||||
let today = new Date().toLocaleDateString('en-US', {
|
||||
// 'weekday': 'long',
|
||||
'year': 'numeric',
|
||||
'month': 'long',
|
||||
'day': 'numeric'
|
||||
});
|
||||
dataToday.innerText = today.replace('/', ' ');
|
||||
|
||||
let smsruUpdateButton = document.getElementById('button-smsru-update');
|
||||
smsruUpdateButton.onclick = smsruUpdateMessages;
|
||||
}
|
||||
|
||||
function smsruUpdateMessages() {
|
||||
let smsProgress = document.getElementById('data-smsru-progress');
|
||||
|
||||
fetch('/api/v1.0/smsru_status')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
smsProgress.setAttribute('aria-valuenow', data.used_today);
|
||||
smsProgress.setAttribute('aria-valuemax', data.total_free);
|
||||
smsProgress.setAttribute('style', `width: ${data.used_today / data.total_free * 100}%`);
|
||||
smsProgress.innerText = `Лимит: ${data.used_today} из ${data.total_free}`;
|
||||
});
|
||||
|
||||
// console.log(smsProgress);
|
||||
}
|
18
shard.yml
Normal file
18
shard.yml
Normal file
@ -0,0 +1,18 @@
|
||||
name: Services
|
||||
version: 0.1.0
|
||||
|
||||
# authors:
|
||||
# - name <email@example.com>
|
||||
|
||||
# description: |
|
||||
# Short description of ServicesCheck
|
||||
|
||||
dependencies:
|
||||
kemal:
|
||||
github: kemalcr/kemal
|
||||
|
||||
# development_dependencies:
|
||||
# webmock:
|
||||
# github: manastech/webmock.cr
|
||||
|
||||
license: MIT
|
9
src/Services.cr
Normal file
9
src/Services.cr
Normal file
@ -0,0 +1,9 @@
|
||||
require "kemal"
|
||||
require "./modules/*"
|
||||
|
||||
get "/" do
|
||||
render "public/index.html"
|
||||
end
|
||||
|
||||
Kemal.config.env = "development"
|
||||
Kemal.run
|
6
src/modules/sms_ru.cr
Normal file
6
src/modules/sms_ru.cr
Normal file
@ -0,0 +1,6 @@
|
||||
require "http/client"
|
||||
|
||||
get "/api/v1.0/smsru_status" do
|
||||
response = HTTP::Client.get "https://sms.ru/my/free?api_id=F1FC9A76-1408-E4CF-1F89-E7CC756762B6&json=1"
|
||||
response.body
|
||||
end
|
Loading…
Reference in New Issue
Block a user