Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR : 실습 4주차 심화과제 #14

Merged
merged 3 commits into from
Nov 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

android {
namespace 'org.sopt.dosopttemplate'
namespace 'org.sopt.dosoptkwanheejo'
compileSdk 33

defaultConfig {
Expand All @@ -22,6 +22,9 @@ android {

buildConfigField "String", "BASE_URL", properties["base.url"]
buildConfigField "String", "USER_BASE_URL", properties["user.base.url"]
buildConfigField "String", "NAVER_PAPAGO_BASE_URL", properties["naver.papago.base.url"]
buildConfigField "String", "NAVER_CLIENT_ID", properties["naver.client.id"]
buildConfigField "String", "NAVER_CLIENT_SECRET", properties["naver.client.secret"]

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate
package org.sopt.dosoptkwanheejo

import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package org.sopt.dosopttemplate
package org.sopt.dosoptkwanheejo

import android.app.Application
import android.content.Context
import android.content.SharedPreferences
import org.sopt.dosopttemplate.db.remote.AuthApiHelper
import org.sopt.dosopttemplate.db.remote.RetrofitServicePool
import org.sopt.dosopttemplate.db.remote.UserApiHelper
import org.sopt.dosoptkwanheejo.db.remote.AuthApiHelper
import org.sopt.dosoptkwanheejo.db.remote.NaverApiHelper
import org.sopt.dosoptkwanheejo.db.remote.RetrofitServicePool
import org.sopt.dosoptkwanheejo.db.remote.UserApiHelper

class DoSoptApp : Application() {
override fun onCreate() {
Expand All @@ -17,6 +18,7 @@ class DoSoptApp : Application() {
lateinit var sharedPreferencesInstance: SharedPreferences
private lateinit var authApiHelper: AuthApiHelper
private lateinit var userApiHelper: UserApiHelper
private lateinit var naverApiHelper: NaverApiHelper

@Synchronized
private fun getSharedPreferencesInstance(context: Context): SharedPreferences {
Expand All @@ -31,7 +33,11 @@ class DoSoptApp : Application() {

fun getApiHelperInstance(): AuthApiHelper {
if (!::authApiHelper.isInitialized) {
authApiHelper = AuthApiHelper(RetrofitServicePool.authService)
try {
authApiHelper = AuthApiHelper(RetrofitServicePool.authService)
} catch (e: ExceptionInInitializerError) {
e.printStackTrace()
}
}
return authApiHelper
}
Expand All @@ -42,5 +48,12 @@ class DoSoptApp : Application() {
}
return userApiHelper
}

fun getNaverApiHelperInstance(): NaverApiHelper {
if (!::naverApiHelper.isInitialized) {
naverApiHelper = NaverApiHelper(RetrofitServicePool.naverPapagoService)
}
return naverApiHelper
}
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package org.sopt.dosopttemplate.adapter.user
package org.sopt.dosoptkwanheejo.adapter.user

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import org.sopt.dosopttemplate.databinding.ItemUserBinding
import org.sopt.dosopttemplate.model.dto.resp.user.UserDataResp
import org.sopt.dosoptkwanheejo.databinding.ItemUserBinding
import org.sopt.dosoptkwanheejo.model.dto.resp.user.UserDataResp

class UserAdapter : ListAdapter<UserDataResp, UserViewHolder>(diffUtil) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package org.sopt.dosopttemplate.adapter.user
package org.sopt.dosoptkwanheejo.adapter.user

import androidx.recyclerview.widget.RecyclerView
import org.sopt.dosopttemplate.databinding.ItemUserBinding
import org.sopt.dosopttemplate.model.dto.resp.user.UserDataResp
import org.sopt.dosopttemplate.util.loadUrl
import org.sopt.dosopttemplate.util.roundedCornerGlide
import org.sopt.dosoptkwanheejo.databinding.ItemUserBinding
import org.sopt.dosoptkwanheejo.model.dto.resp.user.UserDataResp
import org.sopt.dosoptkwanheejo.util.loadUrl

class UserViewHolder(
private val binding: ItemUserBinding
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.sopt.dosopttemplate.api
package org.sopt.dosoptkwanheejo.api

import org.sopt.dosopttemplate.model.dto.req.LoginReq
import org.sopt.dosopttemplate.model.dto.req.SignUpReq
import org.sopt.dosopttemplate.model.dto.resp.auth.LoginResp
import org.sopt.dosoptkwanheejo.model.dto.req.LoginReq
import org.sopt.dosoptkwanheejo.model.dto.req.SignUpReq
import org.sopt.dosoptkwanheejo.model.dto.resp.auth.LoginResp
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.POST
Expand Down
17 changes: 17 additions & 0 deletions app/src/main/java/org/sopt/dosoptkwanheejo/api/NaverAPI.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.sopt.dosoptkwanheejo.api

import org.sopt.dosoptkwanheejo.model.dto.resp.NaverPapagoResp
import retrofit2.Call
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.POST

interface NaverAPI {
@FormUrlEncoded
@POST("v1/papago/n2mt")
fun getTranslatedTextToPapago(
@Field("source") source: String,
@Field("target") target: String,
@Field("text") text: String
): Call<NaverPapagoResp>
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.sopt.dosopttemplate.api
package org.sopt.dosoptkwanheejo.api

import org.sopt.dosopttemplate.model.dto.resp.user.UserResp
import org.sopt.dosoptkwanheejo.model.dto.resp.user.UserResp
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Query
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package org.sopt.dosopttemplate.base
package org.sopt.dosoptkwanheejo.base

import android.os.Bundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import androidx.viewbinding.ViewBinding
import com.google.android.material.snackbar.Snackbar

abstract class BaseActivity<T : ViewBinding>(val bindingFactory: (LayoutInflater) -> T) :
AppCompatActivity() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
package org.sopt.dosopttemplate.base
package org.sopt.dosoptkwanheejo.base

import android.content.DialogInterface
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.DialogFragment
import org.sopt.dosopttemplate.util.showShortSnackBar

abstract class BaseDialogFragment<T : ViewDataBinding> : DialogFragment() {
@get:LayoutRes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate.base
package org.sopt.dosoptkwanheejo.base

import android.os.Bundle
import android.view.LayoutInflater
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package org.sopt.dosopttemplate.db.local
package org.sopt.dosoptkwanheejo.db.local

import androidx.core.content.edit
import org.sopt.dosopttemplate.DoSoptApp.Companion.sharedPreferencesInstance
import org.sopt.dosopttemplate.model.User
import org.sopt.dosoptkwanheejo.DoSoptApp.Companion.sharedPreferencesInstance

class PreferenceManager {
fun setAutoLogin(auto: Boolean) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package org.sopt.dosopttemplate.db.remote
package org.sopt.dosoptkwanheejo.db.remote

import org.sopt.dosopttemplate.api.AuthAPI
import org.sopt.dosopttemplate.db.local.PreferenceManager
import org.sopt.dosopttemplate.db.remote.RetrofitManager.BASE_URL
import org.sopt.dosopttemplate.model.dto.RespResult
import org.sopt.dosopttemplate.model.dto.req.LoginReq
import org.sopt.dosopttemplate.model.dto.req.SignUpReq
import org.sopt.dosopttemplate.model.dto.resp.auth.LoginResp
import org.sopt.dosopttemplate.model.dto.resp.auth.SignUpResp
import org.sopt.dosopttemplate.util.toErrorResult
import org.sopt.dosoptkwanheejo.api.AuthAPI
import org.sopt.dosoptkwanheejo.db.local.PreferenceManager
import org.sopt.dosoptkwanheejo.db.remote.RetrofitManager.BASE_URL
import org.sopt.dosoptkwanheejo.model.dto.RespResult
import org.sopt.dosoptkwanheejo.model.dto.req.LoginReq
import org.sopt.dosoptkwanheejo.model.dto.req.SignUpReq
import org.sopt.dosoptkwanheejo.model.dto.resp.auth.LoginResp
import org.sopt.dosoptkwanheejo.model.dto.resp.auth.SignUpResp
import org.sopt.dosoptkwanheejo.util.toErrorResult
import retrofit2.Call
import retrofit2.Response

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.sopt.dosoptkwanheejo.db.remote

import org.sopt.dosoptkwanheejo.api.NaverAPI
import org.sopt.dosoptkwanheejo.model.dto.resp.NaverPapagoResp
import org.sopt.dosoptkwanheejo.model.dto.resp.NaverPapagoResult
import retrofit2.Call
import retrofit2.Response

class NaverApiHelper(private val naverAPI: NaverAPI) {
fun getTranslatedTextToPapago(source: String, target: String, text: String, onResponse: (NaverPapagoResult) -> Unit) {
naverAPI.getTranslatedTextToPapago(source, target, text).enqueue(object: retrofit2.Callback<NaverPapagoResp>{
override fun onResponse(
call: Call<NaverPapagoResp>,
response: Response<NaverPapagoResp>
) {
if (response.isSuccessful) {
response.body()?.message?.result?.let { onResponse(it) }
}
}

override fun onFailure(call: Call<NaverPapagoResp>, t: Throwable) {
}
})
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,39 @@
package org.sopt.dosopttemplate.db.remote
package org.sopt.dosoptkwanheejo.db.remote

import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import kotlinx.serialization.json.Json
import okhttp3.Interceptor
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import org.sopt.dosopttemplate.BuildConfig
import org.sopt.dosopttemplate.BuildConfig.BASE_URL
import org.sopt.dosopttemplate.api.AuthAPI
import org.sopt.dosopttemplate.api.UserAPI
import org.sopt.dosopttemplate.db.remote.RetrofitManager.USER_BASE_URL
import org.sopt.dosoptkwanheejo.BuildConfig
import org.sopt.dosoptkwanheejo.BuildConfig.BASE_URL
import org.sopt.dosoptkwanheejo.api.AuthAPI
import org.sopt.dosoptkwanheejo.api.NaverAPI
import org.sopt.dosoptkwanheejo.api.UserAPI
import org.sopt.dosoptkwanheejo.db.remote.RetrofitManager.NAVER_PAPAGO_BASE_URL
import org.sopt.dosoptkwanheejo.db.remote.RetrofitManager.USER_BASE_URL
import retrofit2.Retrofit

object RetrofitManager {
const val BASE_URL = BuildConfig.BASE_URL
const val USER_BASE_URL = BuildConfig.USER_BASE_URL
const val NAVER_PAPAGO_BASE_URL = BuildConfig.NAVER_PAPAGO_BASE_URL

private val httpLoggingInterceptor = HttpLoggingInterceptor()
.setLevel(HttpLoggingInterceptor.Level.BODY)

private val okHttpClient = OkHttpClient
.Builder()
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.addInterceptor { it: Interceptor.Chain ->
val request = it.request()
.newBuilder()
.addHeader("X-Naver-Client-Id", BuildConfig.NAVER_CLIENT_ID)
.addHeader("X-Naver-Client-Secret", BuildConfig.NAVER_CLIENT_SECRET)
.build()

it.proceed(request)
}
.build()

fun getRetrofit(url: String): Retrofit =
Expand All @@ -47,4 +59,5 @@ object RetrofitManager {
object RetrofitServicePool {
val authService = RetrofitManager.create<AuthAPI, String>(BASE_URL)
val userService = RetrofitManager.create<UserAPI, String>(USER_BASE_URL)
val naverPapagoService = RetrofitManager.create<NaverAPI, String>(NAVER_PAPAGO_BASE_URL)
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package org.sopt.dosopttemplate.db.remote
package org.sopt.dosoptkwanheejo.db.remote

import android.util.Log
import org.sopt.dosopttemplate.api.AuthAPI
import org.sopt.dosopttemplate.api.UserAPI
import org.sopt.dosopttemplate.model.dto.resp.user.UserResp
import org.sopt.dosoptkwanheejo.api.UserAPI
import org.sopt.dosoptkwanheejo.model.dto.resp.user.UserResp
import retrofit2.Call
import retrofit2.Response

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate.model
package org.sopt.dosoptkwanheejo.model

enum class HomeBottomItem {
ANDROID, HOME, MYPAGE
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate.model
package org.sopt.dosoptkwanheejo.model


data class Music(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.sopt.dosopttemplate.model
package org.sopt.dosoptkwanheejo.model

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
import org.sopt.dosopttemplate.util.MBTI
import org.sopt.dosoptkwanheejo.util.MBTI

@Parcelize
data class User(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate.model.dto
package org.sopt.dosoptkwanheejo.model.dto

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate.model.dto.req
package org.sopt.dosoptkwanheejo.model.dto.req

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.dosopttemplate.model.dto.req
package org.sopt.dosoptkwanheejo.model.dto.req

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.sopt.dosoptkwanheejo.model.dto.resp

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable


@Serializable
data class NaverPapagoResp(
@SerialName("message")
val message: NaverPapagoType
)

@Serializable
data class NaverPapagoType(
@SerialName("@type")
val type: String,
@SerialName("@service")
val service: String,
@SerialName("@version")
val version: String,
@SerialName("result")
val result: NaverPapagoResult
)

@Serializable
data class NaverPapagoResult(
@SerialName("srcLangType")
val srcLangType: String,
@SerialName("tarLangType")
val tarLangType: String,
@SerialName("translatedText")
val translatedText: String,
@SerialName("engineType")
val engineType: String
)
Loading