Created
January 13, 2016 13:34
-
-
Save ansmirnov/2b35d92520eb9830bb3d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package ru.bitel.bgbilling.modules.tv.dyn.cryptoguard; | |
import java.net.*; | |
import java.text.*; | |
import java.util.*; | |
import java.io.*; | |
import javax.annotation.Resource; | |
import org.apache.log4j.Logger; | |
import ru.bitel.bgbilling.kernel.container.managed.ServerContext; | |
import ru.bitel.bgbilling.modules.tv.access.TvAccess; | |
import ru.bitel.bgbilling.modules.tv.access.om.OrderManager; | |
import ru.bitel.bgbilling.modules.tv.access.om.OrderManagerAdapter; | |
import ru.bitel.bgbilling.modules.tv.access.om.ProductOrderEvent; | |
import ru.bitel.bgbilling.modules.tv.api.common.bean.TvDevice; | |
import ru.bitel.bgbilling.modules.tv.api.common.bean.TvDeviceType; | |
import ru.bitel.common.ParameterMap; | |
import ru.bitel.common.sql.ConnectionSet; | |
import ru.bitel.oss.systems.inventory.product.common.bean.ProductSpec; | |
import java.net.URLConnection; | |
public class CryptoGuardOrderManager | |
extends OrderManagerAdapter | |
implements OrderManager { | |
private static final Logger logger = Logger.getLogger(CryptoGuardOrderManager.class); | |
@Resource(name = "access") | |
private TvAccess access; | |
private URL api_url; | |
private String api_key; | |
private String send_http(String data) | |
throws Exception { | |
URLConnection urlConnection = this.api_url.openConnection(); | |
urlConnection.setUseCaches(false); | |
urlConnection.setDoOutput(true); | |
urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded"); | |
OutputStreamWriter out = null; | |
try { | |
out = new OutputStreamWriter(urlConnection.getOutputStream(), "UTF-8"); | |
out.write(data); // XML | |
} finally { | |
if (out != null) try { | |
out.close(); | |
} catch (IOException logOrIgnore) { | |
} | |
} | |
String s = ""; | |
BufferedReader in = null; | |
try { | |
in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); | |
String inputLine; | |
while ((inputLine = in.readLine()) != null) | |
s += (inputLine); | |
} finally { | |
if (in != null) try { | |
in.close(); | |
} catch (IOException logOrIgnore) { | |
} | |
} | |
return s; | |
} | |
@Override | |
public Object init(ServerContext ctx, int moduleId, TvDevice tvDevice, TvDeviceType tvDeviceType, ParameterMap config) | |
throws Exception { | |
super.init(ctx, moduleId, tvDevice, tvDeviceType, config); | |
logger.info("init"); | |
this.api_url = new URL(config.get("om.url", config.get("cryptoguard.api.url", ""))); | |
this.api_key = config.get("om.api_key", config.get("cryptoguard.api.key", "")); | |
return null; | |
} | |
@Override | |
public Object destroy() | |
throws Exception { | |
return null; | |
} | |
private ConnectionSet connectionSet; | |
@Override | |
public Object connect(ServerContext ctx) | |
throws Exception { | |
super.connect(ctx); | |
this.connectionSet = ctx.getConnectionSet(); | |
return null; | |
} | |
@Override | |
public Object disconnect(ServerContext ctx) | |
throws Exception { | |
if (connectionSet != null) { | |
connectionSet.recycle(); | |
connectionSet = null; | |
} | |
return super.disconnect(ctx); | |
} | |
@Override | |
public Object productsModify(ProductOrderEvent e, ServerContext ctx) | |
throws Exception { | |
logger.debug("productsModify"); | |
Date today = new Date(); | |
Date yest = new Date(today.getTime() - (1000 * 60 * 60 * 24)); | |
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); | |
for (ProductSpec productSpec : e.getProductSpecSetToAdd()) { | |
logger.info("ON " + productSpec.getIdentifier().trim()); | |
String query = String.format( | |
"<xmldata method=\"addsubscription\" token=\"%s\" cardnumber=\"%s\" artnr=\"%s\" startdate=\"%s\">", | |
this.api_key, e.getTvAccount().getIdentifier(), productSpec.getIdentifier().trim(), fmt.format(today) | |
); | |
logger.info(query); | |
String res = this.send_http(query); | |
logger.info(res); | |
} | |
for (ProductSpec productSpec : e.getProductSpecSetToRemove()) { | |
logger.info("OFF " + productSpec.getIdentifier().trim()); | |
String query = String.format( | |
"<xmldata method=\"stopsubscription\" token=\"%s\" cardnumber=\"%s\" artnr=\"%s\" stopdate=\"%s\">", | |
this.api_key, e.getTvAccount().getIdentifier(), productSpec.getIdentifier().trim(), fmt.format(yest) | |
); | |
logger.info(query); | |
String res = this.send_http(query); | |
logger.info(res); | |
} | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment