fito
fito

Reputation: 116

Strategy pattern to consume REST API

I have to consume two different REST API providers about VoIP. Both API do the same with different endpoints and parameters. I'm modeling classes as strategy pattern and the problem that i have encountered is the parameters of each method strategy because are different.

public interface VoIPRequests
{
    string ApiKey { get; set; }

    string GetExtensionsList();
    string TriggerCall();
    string DropCall();
    string RedirectCall();
}

How can i change parameters for each of this methods depend on the implementation?. It's good idea use strategy pattern for this case? There is another pattern that suits better? Thank you.

Upvotes: 1

Views: 1037

Answers (1)

Mark Seemann
Mark Seemann

Reputation: 233150

Per comment thread:

TriggerCall(), one api only needs one parameter "To" , and other api has two mandatory parameters "extension" and "destination"

I'll focus on TriggerCall, then, and let you extrapolate from there.

Implementation 1

public class VoIPRequests1 : VoIPRequests
{
    private readonly object to; // Give this a more appropriate type

    public VoIPRequests1(object to)
    {
        this.to = to;
    }

    public string TriggerCall()
    {
        // Use this.to here and return string;
    }

    // Other interface members go here...
}

Implementation 2

public class VoIPRequests2 : VoIPRequests
{
    private readonly object extension; // Give this a more appropriate type
    private readonly object destination; // Give this a more appropriate type

    public VoIPRequests2(object extension, object destination)
    {
        this.extension = extension;
        this.destination = destination;
    }

    public string TriggerCall()
    {
        // Use this.extension and this.destination here and return string;
    }

    // Other interface members go here...
}

Upvotes: 1

Related Questions