/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: BUSL-1.1
 */

import Service, { inject as service } from '@ember/service';

const parts = function (uri) {
  uri = uri.toString();
  if (uri.indexOf('://') === -1) {
    uri = `consul://${uri}`;
  }
  return uri.split('://');
};
export default class DataSinkService extends Service {
  @service('data-sink/protocols/http') consul;
  @service('data-sink/protocols/local-storage') settings;

  prepare(uri, data, assign) {
    const [providerName, pathname] = parts(uri);
    const provider = this[providerName];
    return provider.prepare(pathname, data, assign);
  }

  persist(uri, data) {
    const [providerName, pathname] = parts(uri);
    const provider = this[providerName];
    return provider.persist(pathname, data);
  }

  remove(uri, data) {
    const [providerName, pathname] = parts(uri);
    const provider = this[providerName];
    return provider.remove(pathname, data);
  }
}
