mirror of
https://github.com/clitor-is-protocol/kevacoin-cli.git
synced 2025-09-03 12:11:47 +00:00
implement _CLITOR_IS_ meta #1
This commit is contained in:
parent
f1d5af0b47
commit
35f509bf92
@ -24,60 +24,97 @@ function _exec(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get last namespace value
|
// Get clitoris
|
||||||
$kevaNS = _exec(
|
$clitoris = _exec(
|
||||||
$argv[1],
|
$argv[1],
|
||||||
sprintf(
|
sprintf(
|
||||||
'%s %s "_KEVA_NS_"',
|
'%s %s "_CLITOR_IS_"',
|
||||||
'keva_filter',
|
'keva_get',
|
||||||
$argv[2]
|
$argv[2]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
print_r($kevaNS);
|
print_r(
|
||||||
|
$clitoris
|
||||||
|
);
|
||||||
|
|
||||||
$names = [];
|
if (empty($clitoris->value))
|
||||||
|
|
||||||
foreach ($kevaNS as $ns)
|
|
||||||
{
|
{
|
||||||
$names[$ns->height] = $ns->value;
|
exit(
|
||||||
|
sprintf(
|
||||||
|
'%s does not contain _CLITOR_IS_' . PHP_EOL,
|
||||||
|
$argv[2]
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
krsort($names);
|
if (!$clitoris = @json_decode(
|
||||||
|
$clitoris->value
|
||||||
|
))
|
||||||
|
{
|
||||||
|
exit(
|
||||||
|
sprintf(
|
||||||
|
'could not decode _CLITOR_IS_ of %s' . PHP_EOL,
|
||||||
|
$argv[2]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Get namespace content
|
if ($clitoris->version !== '1.0')
|
||||||
$parts = _exec(
|
{
|
||||||
$argv[1],
|
exit(
|
||||||
sprintf(
|
sprintf(
|
||||||
'%s %s "\d+"',
|
'_CLITOR_IS_ of %s not compatible!' . PHP_EOL,
|
||||||
'keva_filter',
|
$argv[2]
|
||||||
$argv[2]
|
)
|
||||||
)
|
);
|
||||||
);
|
}
|
||||||
|
|
||||||
print_r($parts);
|
if (empty($clitoris->file->name))
|
||||||
|
{
|
||||||
|
exit(
|
||||||
|
sprintf(
|
||||||
|
'_CLITOR_IS_ format issue for %s!' . PHP_EOL,
|
||||||
|
$argv[2]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Merge content data
|
// Merge content data
|
||||||
$data = [];
|
$pieces = [];
|
||||||
foreach ($parts as $part)
|
foreach (
|
||||||
|
_exec(
|
||||||
|
$argv[1],
|
||||||
|
sprintf(
|
||||||
|
'%s %s "\d+"',
|
||||||
|
'keva_filter',
|
||||||
|
$argv[2]
|
||||||
|
)
|
||||||
|
) as $piece)
|
||||||
{
|
{
|
||||||
$data[$part->key] = $part->value;
|
$pieces[$piece->key] = $piece->value;
|
||||||
|
|
||||||
|
print_r(
|
||||||
|
$piece
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
ksort($data);
|
ksort(
|
||||||
|
$pieces
|
||||||
|
);
|
||||||
|
|
||||||
// Save merged data to destination
|
// Save merged data to destination
|
||||||
$filename = isset($argv[3]) ? $argv[3] : sprintf(
|
$filename = isset($argv[3]) ? $argv[3] : sprintf(
|
||||||
'%s/../data/import/kevacoin.%s.%s',
|
'%s/../data/import/[kevacoin][%s]%s',
|
||||||
__DIR__,
|
__DIR__,
|
||||||
$argv[2],
|
$argv[2],
|
||||||
$names[array_key_first($names)]
|
$clitoris->file->name
|
||||||
);
|
);
|
||||||
|
|
||||||
file_put_contents(
|
file_put_contents(
|
||||||
$filename,
|
$filename,
|
||||||
base64_decode(
|
base64_decode(
|
||||||
implode('', $data)
|
implode('', $pieces)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
147
kevacoin/put.php
147
kevacoin/put.php
@ -24,58 +24,131 @@ function _exec(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create namespace
|
// Check file exits
|
||||||
$kevaNamespace = _exec(
|
if (!file_exists($argv[2]))
|
||||||
|
{
|
||||||
|
exit('filename does not exist!' . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get file hash sum
|
||||||
|
$md5file = md5_file(
|
||||||
|
$argv[2]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Split content to smaller parts, according to the protocol limits
|
||||||
|
$size = isset($argv[3]) && $argv[3] <= 3072 ? (int) $argv[3] : 3072;
|
||||||
|
|
||||||
|
$pieces = str_split(
|
||||||
|
base64_encode(
|
||||||
|
file_get_contents(
|
||||||
|
$argv[2]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
$size
|
||||||
|
);
|
||||||
|
|
||||||
|
// Count total pieces
|
||||||
|
$total = count(
|
||||||
|
$pieces
|
||||||
|
);
|
||||||
|
|
||||||
|
// Get software protocol details
|
||||||
|
$software = _exec(
|
||||||
|
$argv[1],
|
||||||
|
'-getinfo'
|
||||||
|
);
|
||||||
|
|
||||||
|
print_r($software);
|
||||||
|
|
||||||
|
// Create namespace to collect there data pieces
|
||||||
|
$ns = _exec(
|
||||||
$argv[1],
|
$argv[1],
|
||||||
sprintf(
|
sprintf(
|
||||||
'%s %s',
|
"%s '%s'",
|
||||||
'keva_namespace',
|
'keva_namespace',
|
||||||
basename($argv[2])
|
$md5file
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
print_r($kevaNamespace);
|
print_r($ns);
|
||||||
|
|
||||||
// Insert content parts
|
// Create meta description for the future generations
|
||||||
if (!empty($kevaNamespace->namespaceId))
|
print_r(
|
||||||
|
_exec(
|
||||||
|
$argv[1],
|
||||||
|
sprintf(
|
||||||
|
"%s %s '%s' '%s'",
|
||||||
|
'keva_put',
|
||||||
|
$ns->namespaceId,
|
||||||
|
'_CLITOR_IS_',
|
||||||
|
json_encode(
|
||||||
|
[
|
||||||
|
'version' => '1.0',
|
||||||
|
'model' =>
|
||||||
|
[
|
||||||
|
'name' => 'kevacoin',
|
||||||
|
'software' =>
|
||||||
|
[
|
||||||
|
'version' => $software->version,
|
||||||
|
'protocol' => $software->protocolversion
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'pieces' =>
|
||||||
|
[
|
||||||
|
'total' => $total,
|
||||||
|
'size' => $size,
|
||||||
|
],
|
||||||
|
'file' =>
|
||||||
|
[
|
||||||
|
'name' => basename(
|
||||||
|
$argv[2]
|
||||||
|
),
|
||||||
|
'mime' => mime_content_type(
|
||||||
|
$argv[2]
|
||||||
|
),
|
||||||
|
'size' => filesize(
|
||||||
|
$argv[2]
|
||||||
|
),
|
||||||
|
'md5' => $md5file
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Begin pieces saving
|
||||||
|
foreach ($pieces as $key => $value)
|
||||||
{
|
{
|
||||||
$parts = str_split(
|
print_r(
|
||||||
base64_encode(
|
_exec(
|
||||||
file_get_contents($argv[2])
|
|
||||||
),
|
|
||||||
isset($argv[3]) && $argv[3] <= 3072 ? (int) $argv[3] : 3072 // 3072 bytes limit
|
|
||||||
);
|
|
||||||
|
|
||||||
foreach ($parts as $key => $value)
|
|
||||||
{
|
|
||||||
$kevaPut = _exec(
|
|
||||||
$argv[1],
|
$argv[1],
|
||||||
sprintf(
|
sprintf(
|
||||||
'%s %s %s %s',
|
"%s '%s' '%s' '%s'",
|
||||||
'keva_put',
|
'keva_put',
|
||||||
$kevaNamespace->namespaceId,
|
$ns->namespaceId,
|
||||||
$key,
|
$key,
|
||||||
$value
|
$value
|
||||||
)
|
)
|
||||||
);
|
)
|
||||||
|
);
|
||||||
|
|
||||||
print_r($kevaPut);
|
// Apply delays to prevent too-long-mempool-chain reject
|
||||||
|
$delay = isset($argv[4]) && $argv[4] > 0 ? (int) $argv[4] : 60;
|
||||||
$delay = isset($argv[4]) ? (int) $argv[4] : 60;
|
|
||||||
|
|
||||||
echo sprintf(
|
|
||||||
'%s/%s sent, waiting %s seconds...' . PHP_EOL,
|
|
||||||
$key + 1,
|
|
||||||
count($parts),
|
|
||||||
$delay
|
|
||||||
);
|
|
||||||
|
|
||||||
sleep($delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo sprintf(
|
echo sprintf(
|
||||||
'done! run to extract: php kevacoin/get.php %s %s' . PHP_EOL,
|
'%s/%s sent, waiting %s seconds...' . PHP_EOL,
|
||||||
$argv[1],
|
$key + 1,
|
||||||
$kevaNamespace->namespaceId
|
$total,
|
||||||
|
$delay
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
sleep($delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print result
|
||||||
|
echo sprintf(
|
||||||
|
'done! run to extract: php kevacoin/get.php %s %s' . PHP_EOL,
|
||||||
|
$argv[1],
|
||||||
|
$ns->namespaceId
|
||||||
|
);
|
Loading…
x
Reference in New Issue
Block a user