package com.github.scribejava.core.services;
import java.util.Random;
/**
* Implementation of {@link TimestampService} using plain java classes.
*/
public class TimestampServiceImpl implements TimestampService {
private Timer timer;
/**
* Default constructor.
*/
public TimestampServiceImpl() {
timer = new Timer();
}
/**
* {@inheritDoc}
*/
@Override
public String getNonce() {
final Long ts = getTs();
return String.valueOf(ts + timer.getRandomInteger());
}
/**
* {@inheritDoc}
*/
@Override
public String getTimestampInSeconds() {
return String.valueOf(getTs());
}
private Long getTs() {
return timer.getMilis() / 1000;
}
void setTimer(Timer timer) {
this.timer = timer;
}
/**
* Inner class that uses {@link System} for generating the timestamps.
*/
static class Timer {
private final Random rand = new Random();
Long getMilis() {
return System.currentTimeMillis();
}
Integer getRandomInteger() {
return rand.nextInt();
}
}
}